gpio: mxc: Remove unused .id_table support
Subsystems (2)
Fabio Estevam
reviewerPATCH v2 1/1 gpio: mxc: Remove unused .id_table support
Since 5.10-rc1 i.MX is a devicetree-only platform and the existing .id_table support in this driver was only useful for old non-devicetree platforms.
Get rid of the .id_table since it is no longer used.
---
Changes since v1:
- Configure hw_type to of_id - Phillip
drivers/gpio/gpio-mxc.c | 35 ++++++----------------------------- 1 file changed, 6 insertions(+), 29 deletions(-)
drivers/gpio/gpio-mxc.c +6 -29
@@ -133,30 +133,12 @@ static struct mxc_gpio_hwdata *mxc_gpio_hwdata;#define GPIO_INT_FALL_EDGE (mxc_gpio_hwdata->fall_edge)#define GPIO_INT_BOTH_EDGES 0x4 -static const struct platform_device_id mxc_gpio_devtype[] = { - { - .name ="imx1-gpio" , - .driver_data =IMX1_GPIO , - }, { - .name ="imx21-gpio" , - .driver_data =IMX21_GPIO , - }, { - .name ="imx31-gpio" , - .driver_data =IMX31_GPIO , - }, { - .name ="imx35-gpio" , - .driver_data =IMX35_GPIO , - }, { -/* sentinel */ - } -}; -static const struct of_device_id mxc_gpio_dt_ids[] = { - { .compatible ="fsl,imx1-gpio" , .data = &mxc_gpio_devtype[IMX1_GPIO ], }, - { .compatible ="fsl,imx21-gpio" , .data = &mxc_gpio_devtype[IMX21_GPIO ], }, - { .compatible ="fsl,imx31-gpio" , .data = &mxc_gpio_devtype[IMX31_GPIO ], }, - { .compatible ="fsl,imx35-gpio" , .data = &mxc_gpio_devtype[IMX35_GPIO ], }, - { .compatible ="fsl,imx7d-gpio" , .data = &mxc_gpio_devtype[IMX35_GPIO ], }, + { .compatible ="fsl,imx1-gpio" , .data = (const void *)IMX1_GPIO }, + { .compatible ="fsl,imx21-gpio" , .data = (const void *)IMX21_GPIO }, + { .compatible ="fsl,imx31-gpio" , .data = (const void *)IMX31_GPIO }, + { .compatible ="fsl,imx35-gpio" , .data = (const void *)IMX35_GPIO }, + { .compatible ="fsl,imx7d-gpio" , .data = (const void *)IMX35_GPIO }, {/* sentinel */ } };MODULE_DEVICE_TABLE (of, mxc_gpio_dt_ids);
@@ -376,11 +358,7 @@ static void mxc_gpio_get_hw(struct platform_device *pdev) {const struct of_device_id *of_id =of_match_device (mxc_gpio_dt_ids, &pdev->dev); -enum mxc_gpio_hwtype hwtype; - -if (of_id) - pdev->id_entry = of_id->data; - hwtype = pdev->id_entry->driver_data; +enum mxc_gpio_hwtype hwtype = (enum mxc_gpio_hwtype )of_id->data;if (mxc_gpio_hwtype) {/*
@@ -596,7 +574,6 @@ static struct platform_driver mxc_gpio_driver = { .suppress_bind_attrs = true, }, .probe = mxc_gpio_probe, - .id_table = mxc_gpio_devtype, };static int __init gpio_mxc_init (void )
Signature · 1 line
2.17.1
Quoted 6 lines · Fabio Estevam
Since 5.10-rc1 i.MX is a devicetree-only platform and the existing .id_table support in this driver was only useful for old non-devicetree platforms.
Get rid of the .id_table since it is no longer used.
...
Actually I would rather add IMX_UNKNOWN_GPIO as 0 for enum and...
Quoted 2 lines
const struct
of_device_id*of_id=
of_match_device(mxc_gpio_dt_ids, &pdev->dev);
...use of_device_get_match_data() here.
Quoted 1 line
+ enum
mxc_gpio_hwtypehwtype = (enum mxc_gpio_hwtype)of_id->data;
...
Another (and I think better variant) is to switch .data to be a pointer to the corresponding struct, then you may drop enum and hwtype completely.
Signature · 2 lines
With Best Regards, Andy Shevchenko
Quoted 5 lines · Andy Shevchenko
On Mon, Nov 16, 2020 at 7:53 PM Fabio Estevam <[email protected]> wrote:
Another (and I think better variant) is to switch .data to be a pointer to the corresponding struct, then you may drop enum and hwtype completely.
In this case you also don't need explicit ugly casting for .data.
Signature · 2 lines
With Best Regards, Andy Shevchenko
Fabio Estevam
reviewerHi Andy,
Quoted 3 lines · Andy Shevchenko
Another (and I think better variant) is to switch .data to be a pointer to the corresponding struct, then you may drop enum and hwtype completely.
I did as you suggested and sent a v3. Thanks
kernel test robot
build botI love your patch! Perhaps something to improve:
Hi Fabio,
I love your patch! Perhaps something to improve:
[auto build test WARNING on gpio/for-next]
[also build test WARNING on v5.10-rc4 next-20201116]
[If your patch is applied to the wrong git tree, kindly drop us a note. And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Fabio-Estevam/gpio-mxc-Remove-unused-id_table-support/20201117-015424 base: https://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git for-next config: powerpc-randconfig-r015-20201116 (attached as .config) compiler: clang version 12.0.0 (https://github.com/llvm/llvm-project c044709b8fbea2a9a375e4173a6bd735f6866c0c)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross
# install powerpc cross compiling tool for clang build
# apt-get install binutils-powerpc-linux-gnu
# https://github.com/0day-ci/linux/commit/a6943017beed6fb9b48fc297c02ac3f0f4e680cb
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Fabio-Estevam/gpio-mxc-Remove-unused-id_table-support/20201117-015424 git checkout a6943017beed6fb9b48fc297c02ac3f0f4e680cb
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc
If you fix the issue, kindly add following tag as appropriate
All warnings (new ones prefixed by >>):
>> drivers/gpio/gpio-mxc.c:361:32: warning: cast to smaller integer type 'enum mxc_gpio_hwtype' from 'const void *' [-Wvoid-pointer-to-enum-cast]
enum mxc_gpio_hwtype hwtype = (enum mxc_gpio_hwtype)of_id->data;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~1 warning generated.
vim +361 drivers/gpio/gpio-mxc.c
356
357 static void mxc_gpio_get_hw(struct platform_device *pdev)
358 {
359 const struct of_device_id *of_id =
360 of_match_device(mxc_gpio_dt_ids, &pdev->dev);
> 361 enum mxc_gpio_hwtype hwtype = (enum mxc_gpio_hwtype)of_id->data;
362
363 if (mxc_gpio_hwtype) {
364 /*
365 * The driver works with a reasonable presupposition,
366 * that is all gpio ports must be the same type when
367 * running on one soc.
368 */
369 BUG_ON(mxc_gpio_hwtype != hwtype);
370 return;
371 }
372
373 if (hwtype == IMX35_GPIO)
374 mxc_gpio_hwdata = &imx35_gpio_hwdata;
375 else if (hwtype == IMX31_GPIO)
376 mxc_gpio_hwdata = &imx31_gpio_hwdata;
377 else
378 mxc_gpio_hwdata = &imx1_imx21_gpio_hwdata;
379
380 mxc_gpio_hwtype = hwtype;
381 }
382
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org