Hi Michael, On Friday, March 19, 2021 3:52 PM, Michael Walle wrote: > > Am 2021-03-19 03:53, schrieb Ran Wang: > > Current implementation only supports DT, now add ACPI support. > > > > Note that compared to device of 'fsl,qoriq-gpio', LS1028A and > > LS1088A's GPIO have no extra programming, so simplify related checking. > > > > Signed-off-by: Ran Wang <ran.wang_1@xxxxxxx> > > --- > > Change in v2: > > - Initialize devtype with NULL to fix compile warning. > > - Replace of_device_get_match_data() and acpi_match_device with > > device_get_match_data(). > > - Replace acpi_match_device() with simpler checking logic per Andy's > > suggestion. > > > > drivers/gpio/gpio-mpc8xxx.c | 34 +++++++++++++++++++++++----------- > > 1 file changed, 23 insertions(+), 11 deletions(-) > > > > diff --git a/drivers/gpio/gpio-mpc8xxx.c b/drivers/gpio/gpio-mpc8xxx.c > > index 6dfca83bcd90..646225fa3e73 100644 > > --- a/drivers/gpio/gpio-mpc8xxx.c > > +++ b/drivers/gpio/gpio-mpc8xxx.c > > @@ -9,6 +9,7 @@ > > * kind, whether express or implied. > > */ > > > > +#include <linux/acpi.h> > > #include <linux/kernel.h> > > #include <linux/init.h> > > #include <linux/spinlock.h> > > @@ -292,8 +293,6 @@ static const struct of_device_id > > mpc8xxx_gpio_ids[] = { > > { .compatible = "fsl,mpc5121-gpio", .data = &mpc512x_gpio_devtype, }, > > { .compatible = "fsl,mpc5125-gpio", .data = &mpc5125_gpio_devtype, }, > > { .compatible = "fsl,pq3-gpio", }, > > - { .compatible = "fsl,ls1028a-gpio", }, > > - { .compatible = "fsl,ls1088a-gpio", }, > > { .compatible = "fsl,qoriq-gpio", }, > > {} > > }; > > @@ -303,8 +302,8 @@ static int mpc8xxx_probe(struct platform_device > > *pdev) > > struct device_node *np = pdev->dev.of_node; > > struct mpc8xxx_gpio_chip *mpc8xxx_gc; > > struct gpio_chip *gc; > > - const struct mpc8xxx_gpio_devtype *devtype = > > - of_device_get_match_data(&pdev->dev); > > + const struct mpc8xxx_gpio_devtype *devtype = NULL; > > + struct fwnode_handle *fwnode; > > int ret; > > > > mpc8xxx_gc = devm_kzalloc(&pdev->dev, sizeof(*mpc8xxx_gc), > > GFP_KERNEL); @@ -315,14 +314,14 @@ static int mpc8xxx_probe(struct > > platform_device > > *pdev) > > > > raw_spin_lock_init(&mpc8xxx_gc->lock); > > > > - mpc8xxx_gc->regs = of_iomap(np, 0); > > + mpc8xxx_gc->regs = devm_platform_ioremap_resource(pdev, 0); > > if (!mpc8xxx_gc->regs) > > return -ENOMEM; > > > > gc = &mpc8xxx_gc->gc; > > gc->parent = &pdev->dev; > > > > - if (of_property_read_bool(np, "little-endian")) { > > + if (device_property_read_bool(&pdev->dev, "little-endian")) { > > ret = bgpio_init(gc, &pdev->dev, 4, > > mpc8xxx_gc->regs + GPIO_DAT, > > NULL, NULL, > > @@ -345,6 +344,7 @@ static int mpc8xxx_probe(struct platform_device > > *pdev) > > > > mpc8xxx_gc->direction_output = gc->direction_output; > > > > + devtype = device_get_match_data(&pdev->dev); > > if (!devtype) > > devtype = &mpc8xxx_gpio_devtype_default; > > > > @@ -369,9 +369,9 @@ static int mpc8xxx_probe(struct platform_device > > *pdev) > > * associated input enable must be set (GPIOxGPIE[IEn]=1) to > > propagate > > * the port value to the GPIO Data Register. > > */ > > + fwnode = dev_fwnode(&pdev->dev); > > if (of_device_is_compatible(np, "fsl,qoriq-gpio") || > > - of_device_is_compatible(np, "fsl,ls1028a-gpio") || > > - of_device_is_compatible(np, "fsl,ls1088a-gpio")) > > Again, please keep this. The DT bindings don't mention "fsl,qoriq-gpio" > is required. Alternatively, change the binding (ideally convert it to > YAML) and get an ack by Rob. OK, I will keep this in next version Regards, Ran > -michael