cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

gpio-iop.c (1362B)


      1// SPDX-License-Identifier: GPL-2.0-or-later
      2/*
      3 * arch/arm/plat-iop/gpio.c
      4 * GPIO handling for Intel IOP3xx processors.
      5 *
      6 * Copyright (C) 2006 Lennert Buytenhek <buytenh@wantstofly.org>
      7 */
      8
      9#include <linux/err.h>
     10#include <linux/module.h>
     11#include <linux/gpio/driver.h>
     12#include <linux/platform_device.h>
     13
     14#define IOP3XX_GPOE	0x0000
     15#define IOP3XX_GPID	0x0004
     16#define IOP3XX_GPOD	0x0008
     17
     18static int iop3xx_gpio_probe(struct platform_device *pdev)
     19{
     20	struct gpio_chip *gc;
     21	void __iomem *base;
     22	int err;
     23
     24	gc = devm_kzalloc(&pdev->dev, sizeof(*gc), GFP_KERNEL);
     25	if (!gc)
     26		return -ENOMEM;
     27
     28	base = devm_platform_ioremap_resource(pdev, 0);
     29	if (IS_ERR(base))
     30		return PTR_ERR(base);
     31
     32	err = bgpio_init(gc, &pdev->dev, 1, base + IOP3XX_GPID,
     33			 base + IOP3XX_GPOD, NULL, NULL, base + IOP3XX_GPOE, 0);
     34	if (err)
     35		return err;
     36
     37	gc->base = 0;
     38	gc->owner = THIS_MODULE;
     39	gc->label = "gpio-iop";
     40
     41	return devm_gpiochip_add_data(&pdev->dev, gc, NULL);
     42}
     43
     44static struct platform_driver iop3xx_gpio_driver = {
     45	.driver = {
     46		.name = "gpio-iop",
     47	},
     48	.probe = iop3xx_gpio_probe,
     49};
     50
     51static int __init iop3xx_gpio_init(void)
     52{
     53	return platform_driver_register(&iop3xx_gpio_driver);
     54}
     55arch_initcall(iop3xx_gpio_init);
     56
     57MODULE_DESCRIPTION("GPIO handling for Intel IOP3xx processors");
     58MODULE_AUTHOR("Lennert Buytenhek <buytenh@wantstofly.org>");
     59MODULE_LICENSE("GPL");