brintos

brintos / linux-shallow public Read only

0
0
Text · 1.8 KiB · 887c0fe Raw
79 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * Intel Elkhart Lake PSE GPIO driver4 *5 * Copyright (c) 2023 Intel Corporation.6 *7 * Authors: Pandith N <pandith.n@intel.com>8 *          Raag Jadav <raag.jadav@intel.com>9 */10 11#include <linux/device.h>12#include <linux/err.h>13#include <linux/module.h>14#include <linux/platform_device.h>15#include <linux/pm.h>16 17#include "gpio-tangier.h"18 19/* Each Intel EHL PSE GPIO Controller has 30 GPIO pins */20#define EHL_PSE_NGPIO		3021 22static int ehl_gpio_probe(struct platform_device *pdev)23{24	struct device *dev = &pdev->dev;25	struct tng_gpio *priv;26	int irq, ret;27 28	irq = platform_get_irq(pdev, 0);29	if (irq < 0)30		return irq;31 32	priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);33	if (!priv)34		return -ENOMEM;35 36	priv->reg_base = devm_platform_ioremap_resource(pdev, 0);37	if (IS_ERR(priv->reg_base))38		return PTR_ERR(priv->reg_base);39 40	priv->dev = dev;41	priv->irq = irq;42 43	priv->info.base = -1;44	priv->info.ngpio = EHL_PSE_NGPIO;45 46	priv->wake_regs.gwmr = GWMR_EHL;47	priv->wake_regs.gwsr = GWSR_EHL;48	priv->wake_regs.gsir = GSIR_EHL;49 50	ret = devm_tng_gpio_probe(dev, priv);51	if (ret)52		return dev_err_probe(dev, ret, "tng_gpio_probe error\n");53 54	platform_set_drvdata(pdev, priv);55	return 0;56}57 58static const struct platform_device_id ehl_gpio_ids[] = {59	{ "gpio-elkhartlake" },60	{ }61};62MODULE_DEVICE_TABLE(platform, ehl_gpio_ids);63 64static struct platform_driver ehl_gpio_driver = {65	.driver	= {66		.name	= "gpio-elkhartlake",67		.pm	= pm_sleep_ptr(&tng_gpio_pm_ops),68	},69	.probe		= ehl_gpio_probe,70	.id_table	= ehl_gpio_ids,71};72module_platform_driver(ehl_gpio_driver);73 74MODULE_AUTHOR("Pandith N <pandith.n@intel.com>");75MODULE_AUTHOR("Raag Jadav <raag.jadav@intel.com>");76MODULE_DESCRIPTION("Intel Elkhart Lake PSE GPIO driver");77MODULE_LICENSE("GPL");78MODULE_IMPORT_NS(GPIO_TANGIER);79