From 377d261708d3057200c7ad9647fddb15169fea78 Mon Sep 17 00:00:00 2001 From: Antony Pavlov Date: Wed, 29 Apr 2015 11:56:58 +0300 Subject: of: use 'const void *' for struct of_device_id.data Since 2011 barebox' of_device_id struct uses unsigned long type for data field: struct of_device_id { char *compatible; unsigned long data; }; Almost always struct of_device_id.data field are used as pointer and need 'unsigned long' casting. E.g. see 'git grep -A 4 of_device_id drivers/' output: drivers/ata/sata-imx.c:static __maybe_unused struct of_device_id imx_sata_dt_ids[] = { drivers/ata/sata-imx.c- { drivers/ata/sata-imx.c- .compatible = "fsl,imx6q-ahci", drivers/ata/sata-imx.c- .data = (unsigned long)&data_imx6, drivers/ata/sata-imx.c- }, { Here is of_device_id struct in linux kernel v4.0: struct of_device_id { char name[32]; char type[32]; char compatible[128]; const void *data; }; Changing of_device_id.data type to 'const void *data' will increase barebox' linux kernel compatibility and decrease number of 'unsigned long' casts. Part of the patch was done using the 'coccinelle' tool with the following semantic patch: @rule1@ identifier dev; identifier type; identifier func; @@ func(...) { <... - dev_get_drvdata(dev, (unsigned long *)&type) + dev_get_drvdata(dev, (const void **)&type) ...> } @rule2@ identifier dev; identifier type; identifier func; identifier data; @@ func(...) { <... - dev_get_drvdata(dev, (unsigned long *)&type->data) + dev_get_drvdata(dev, (const void **)&type->data) ...> } Signed-off-by: Antony Pavlov Signed-off-by: Sascha Hauer --- drivers/serial/serial_cadence.c | 4 ++-- drivers/serial/serial_imx.c | 6 +++--- drivers/serial/serial_ns16550.c | 18 +++++++++--------- 3 files changed, 14 insertions(+), 14 deletions(-) (limited to 'drivers/serial') diff --git a/drivers/serial/serial_cadence.c b/drivers/serial/serial_cadence.c index 10df50642a..6b48a48d1f 100644 --- a/drivers/serial/serial_cadence.c +++ b/drivers/serial/serial_cadence.c @@ -221,7 +221,7 @@ static int cadence_serial_probe(struct device_d *dev) struct cadence_serial_devtype_data *devtype; int ret; - ret = dev_get_drvdata(dev, (unsigned long *)&devtype); + ret = dev_get_drvdata(dev, (const void **)&devtype); if (ret) return ret; @@ -276,7 +276,7 @@ static void cadence_serial_remove(struct device_d *dev) static __maybe_unused struct of_device_id cadence_serial_dt_ids[] = { { .compatible = "xlnx,xuartps", - .data = (unsigned long)&cadence_r1p08_data, + .data = &cadence_r1p08_data, }, { /* sentinel */ } diff --git a/drivers/serial/serial_imx.c b/drivers/serial/serial_imx.c index cd954c282d..f075c50fc2 100644 --- a/drivers/serial/serial_imx.c +++ b/drivers/serial/serial_imx.c @@ -315,7 +315,7 @@ static int imx_serial_probe(struct device_d *dev) int ret; const char *devname; - ret = dev_get_drvdata(dev, (unsigned long *)&devtype); + ret = dev_get_drvdata(dev, (const void **)&devtype); if (ret) return ret; @@ -377,10 +377,10 @@ static void imx_serial_remove(struct device_d *dev) static __maybe_unused struct of_device_id imx_serial_dt_ids[] = { { .compatible = "fsl,imx1-uart", - .data = (unsigned long)&imx1_data, + .data = &imx1_data, }, { .compatible = "fsl,imx21-uart", - .data = (unsigned long)&imx21_data, + .data = &imx21_data, }, { /* sentinel */ } diff --git a/drivers/serial/serial_ns16550.c b/drivers/serial/serial_ns16550.c index 8f2e93fa68..4d636c14ca 100644 --- a/drivers/serial/serial_ns16550.c +++ b/drivers/serial/serial_ns16550.c @@ -399,7 +399,7 @@ static int ns16550_probe(struct device_d *dev) struct ns16550_drvdata *devtype; int ret; - ret = dev_get_drvdata(dev, (unsigned long *)&devtype); + ret = dev_get_drvdata(dev, (const void **)&devtype); if (ret) devtype = &ns16550_drvdata; @@ -462,36 +462,36 @@ err: static struct of_device_id ns16550_serial_dt_ids[] = { { .compatible = "ns16450", - .data = (unsigned long)&ns16450_drvdata, + .data = &ns16450_drvdata, }, { .compatible = "ns16550a", - .data = (unsigned long)&ns16550_drvdata, + .data = &ns16550_drvdata, }, { .compatible = "snps,dw-apb-uart", - .data = (unsigned long)&ns16550_drvdata, + .data = &ns16550_drvdata, }, #if IS_ENABLED(CONFIG_ARCH_OMAP) { .compatible = "ti,omap2-uart", - .data = (unsigned long)&omap_drvdata, + .data = &omap_drvdata, }, { .compatible = "ti,omap3-uart", - .data = (unsigned long)&omap_drvdata, + .data = &omap_drvdata, }, { .compatible = "ti,omap4-uart", - .data = (unsigned long)&omap_drvdata, + .data = &omap_drvdata, }, #endif #if IS_ENABLED(CONFIG_ARCH_TEGRA) { .compatible = "nvidia,tegra20-uart", - .data = (unsigned long)&tegra_drvdata, + .data = &tegra_drvdata, }, #endif #if IS_ENABLED(CONFIG_MACH_MIPS_XBURST) { .compatible = "ingenic,jz4740-uart", - .data = (unsigned long)&jz_drvdata, + .data = &jz_drvdata, }, #endif { -- cgit v1.2.3