hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/gpio/gpio-madera.c
....@@ -1,12 +1,8 @@
1
-// SPDX-License-Identifier: GPL-2.0
1
+// SPDX-License-Identifier: GPL-2.0-only
22 /*
33 * GPIO support for Cirrus Logic Madera codecs
44 *
55 * Copyright (C) 2015-2018 Cirrus Logic
6
- *
7
- * This program is free software; you can redistribute it and/or modify
8
- * it under the terms of the GNU General Public License as published by the
9
- * Free Software Foundation; version 2.
106 */
117
128 #include <linux/gpio/driver.h>
....@@ -38,7 +34,10 @@
3834 if (ret < 0)
3935 return ret;
4036
41
- return !!(val & MADERA_GP1_DIR_MASK);
37
+ if (val & MADERA_GP1_DIR_MASK)
38
+ return GPIO_LINE_DIRECTION_IN;
39
+
40
+ return GPIO_LINE_DIRECTION_OUT;
4241 }
4342
4443 static int madera_gpio_direction_in(struct gpio_chip *chip, unsigned int offset)
....@@ -107,7 +106,7 @@
107106 MADERA_GPIO1_CTRL_1 + reg_offset, ret);
108107 }
109108
110
-static struct gpio_chip madera_gpio_chip = {
109
+static const struct gpio_chip madera_gpio_chip = {
111110 .label = "madera",
112111 .owner = THIS_MODULE,
113112 .request = gpiochip_generic_request,
....@@ -124,7 +123,7 @@
124123 static int madera_gpio_probe(struct platform_device *pdev)
125124 {
126125 struct madera *madera = dev_get_drvdata(pdev->dev.parent);
127
- struct madera_pdata *pdata = dev_get_platdata(madera->dev);
126
+ struct madera_pdata *pdata = &madera->pdata;
128127 struct madera_gpio *madera_gpio;
129128 int ret;
130129
....@@ -140,6 +139,9 @@
140139 madera_gpio->gpio_chip.parent = pdev->dev.parent;
141140
142141 switch (madera->type) {
142
+ case CS47L15:
143
+ madera_gpio->gpio_chip.ngpio = CS47L15_NUM_GPIOS;
144
+ break;
143145 case CS47L35:
144146 madera_gpio->gpio_chip.ngpio = CS47L35_NUM_GPIOS;
145147 break;
....@@ -151,13 +153,18 @@
151153 case CS47L91:
152154 madera_gpio->gpio_chip.ngpio = CS47L90_NUM_GPIOS;
153155 break;
156
+ case CS42L92:
157
+ case CS47L92:
158
+ case CS47L93:
159
+ madera_gpio->gpio_chip.ngpio = CS47L92_NUM_GPIOS;
160
+ break;
154161 default:
155162 dev_err(&pdev->dev, "Unknown chip variant %d\n", madera->type);
156163 return -EINVAL;
157164 }
158165
159166 /* We want to be usable on systems that don't use devicetree or acpi */
160
- if (pdata && pdata->gpio_base)
167
+ if (pdata->gpio_base)
161168 madera_gpio->gpio_chip.base = pdata->gpio_base;
162169 else
163170 madera_gpio->gpio_chip.base = -1;