FILE
gpio-elkhartlake.c
File preview with syntax highlighting.
linux-6.19.14/drivers/gpio/gpio-elkhartlake.c
1// SPDX-License-Identifier: GPL-2.0-only 2/* 3 * Intel Elkhart Lake PSE GPIO driver 4 * 5 * Copyright (c) 2023, 2025 Intel Corporation. 6 * 7 * Authors: Pandith N <pandith.n@intel.com> 8 * Raag Jadav <raag.jadav@intel.com> 9 */ 10 11#include <linux/auxiliary_bus.h> 12#include <linux/device.h> 13#include <linux/err.h> 14#include <linux/module.h> 15#include <linux/pm.h> 16 17#include <linux/ehl_pse_io_aux.h> 18 19#include "gpio-tangier.h" 20 21/* Each Intel EHL PSE GPIO Controller has 30 GPIO pins */ 22#define EHL_PSE_NGPIO 30 23 24static int ehl_gpio_probe(struct auxiliary_device *adev, const struct auxiliary_device_id *id) 25{ 26 struct device *dev = &adev->dev; 27 struct ehl_pse_io_data *data; 28 struct tng_gpio *priv; 29 int ret; 30 31 data = dev_get_platdata(dev); 32 if (!data) 33 return -ENODATA; 34 35 priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); 36 if (!priv) 37 return -ENOMEM; 38 39 priv->reg_base = devm_ioremap_resource(dev, &data->mem); 40 if (IS_ERR(priv->reg_base)) 41 return PTR_ERR(priv->reg_base); 42 43 priv->dev = dev; 44 priv->irq = data->irq; 45 46 priv->info.base = -1; 47 priv->info.ngpio = EHL_PSE_NGPIO; 48 49 priv->wake_regs.gwmr = GWMR_EHL; 50 priv->wake_regs.gwsr = GWSR_EHL; 51 priv->wake_regs.gsir = GSIR_EHL; 52 53 ret = devm_tng_gpio_probe(dev, priv); 54 if (ret) 55 return dev_err_probe(dev, ret, "tng_gpio_probe error\n"); 56 57 auxiliary_set_drvdata(adev, priv); 58 return 0; 59} 60 61static const struct auxiliary_device_id ehl_gpio_ids[] = { 62 { EHL_PSE_IO_NAME "." EHL_PSE_GPIO_NAME }, 63 { } 64}; 65MODULE_DEVICE_TABLE(auxiliary, ehl_gpio_ids); 66 67static struct auxiliary_driver ehl_gpio_driver = { 68 .driver = { 69 .pm = pm_sleep_ptr(&tng_gpio_pm_ops), 70 }, 71 .probe = ehl_gpio_probe, 72 .id_table = ehl_gpio_ids, 73}; 74module_auxiliary_driver(ehl_gpio_driver); 75 76MODULE_AUTHOR("Pandith N <pandith.n@intel.com>"); 77MODULE_AUTHOR("Raag Jadav <raag.jadav@intel.com>"); 78MODULE_DESCRIPTION("Intel Elkhart Lake PSE GPIO driver"); 79MODULE_LICENSE("GPL"); 80MODULE_IMPORT_NS("GPIO_TANGIER");
~/
Read-only file preview.