[alsa-devel] [PATCH 00/61] tree-wide: simplify getting .drvdata
I got tired of fixing this in Renesas drivers manually, so I took the big hammer. Remove this cumbersome code pattern which got copy-pasted too much already:
- struct platform_device *pdev = to_platform_device(dev); - struct ep93xx_keypad *keypad = platform_get_drvdata(pdev); + struct ep93xx_keypad *keypad = dev_get_drvdata(dev);
I send this out as one patch per directory per subsystem. I think they should be applied individually. If you prefer a broken out series per subsystem, I can provide this as well. Just mail me.
A branch (tested by buildbot; only with all commits squashed into one commit before) can be found here:
git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git coccinelle/get_drvdata
Open for other comments, suggestions, too, of course.
Here is the cocci-script I created (after <n> iterations by manually checking samples):
@@ struct device* d; identifier pdev; expression *ptr; @@ ( - struct platform_device *pdev = to_platform_device(d); | - struct platform_device *pdev; ... - pdev = to_platform_device(d); ) <... when != pdev - &pdev->dev + d ...>
ptr = - platform_get_drvdata(pdev) + dev_get_drvdata(d)
<... when != pdev - &pdev->dev + d ...>
Kind regards,
Wolfram
Wolfram Sang (61): ARM: plat-samsung: simplify getting .drvdata ata: simplify getting .drvdata auxdisplay: simplify getting .drvdata bus: simplify getting .drvdata clk: samsung: simplify getting .drvdata crypto: simplify getting .drvdata dma: simplify getting .drvdata dmaengine: dw: simplify getting .drvdata dmaengine: qcom: simplify getting .drvdata gpio: simplify getting .drvdata gpu: drm: msm: simplify getting .drvdata gpu: drm: msm: adreno: simplify getting .drvdata gpu: drm: msm: disp: mdp5: simplify getting .drvdata gpu: drm: msm: dsi: simplify getting .drvdata gpu: drm: omapdrm: displays: simplify getting .drvdata gpu: drm: vc4: simplify getting .drvdata hid: simplify getting .drvdata iio: common: cros_ec_sensors: simplify getting .drvdata iio: common: hid-sensors: simplify getting .drvdata input: keyboard: simplify getting .drvdata input: misc: simplify getting .drvdata input: mouse: simplify getting .drvdata input: touchscreen: simplify getting .drvdata iommu: simplify getting .drvdata media: platform: am437x: simplify getting .drvdata media: platform: exynos4-is: simplify getting .drvdata media: platform: s5p-mfc: simplify getting .drvdata mmc: host: simplify getting .drvdata mtd: devices: simplify getting .drvdata mtd: nand: onenand: simplify getting .drvdata net: dsa: simplify getting .drvdata net: ethernet: cadence: simplify getting .drvdata net: ethernet: davicom: simplify getting .drvdata net: ethernet: smsc: simplify getting .drvdata net: ethernet: ti: simplify getting .drvdata net: ethernet: wiznet: simplify getting .drvdata perf: simplify getting .drvdata pinctrl: simplify getting .drvdata pinctrl: intel: simplify getting .drvdata platform: x86: simplify getting .drvdata power: supply: simplify getting .drvdata ptp: simplify getting .drvdata pwm: simplify getting .drvdata rtc: simplify getting .drvdata slimbus: simplify getting .drvdata spi: simplify getting .drvdata staging: greybus: simplify getting .drvdata staging: iio: adc: simplify getting .drvdata staging: nvec: simplify getting .drvdata thermal: simplify getting .drvdata thermal: int340x_thermal: simplify getting .drvdata thermal: st: simplify getting .drvdata tty: serial: simplify getting .drvdata uio: simplify getting .drvdata usb: mtu3: simplify getting .drvdata usb: phy: simplify getting .drvdata video: fbdev: simplify getting .drvdata video: fbdev: omap2: omapfb: displays: simplify getting .drvdata watchdog: simplify getting .drvdata net: dsa: simplify getting .drvdata ASoC: atmel: simplify getting .drvdata
arch/arm/plat-samsung/adc.c | 3 +- drivers/ata/pata_samsung_cf.c | 8 ++--- drivers/auxdisplay/arm-charlcd.c | 6 ++-- drivers/bus/brcmstb_gisb.c | 12 +++---- drivers/clk/samsung/clk-s3c2410-dclk.c | 6 ++-- drivers/crypto/exynos-rng.c | 6 ++-- drivers/crypto/picoxcell_crypto.c | 6 ++-- drivers/dma/at_hdmac.c | 9 ++--- drivers/dma/at_xdmac.c | 9 ++--- drivers/dma/dw/platform.c | 6 ++-- drivers/dma/fsldma.c | 6 ++-- drivers/dma/idma64.c | 6 ++-- drivers/dma/qcom/hidma.c | 3 +- drivers/dma/qcom/hidma_mgmt_sys.c | 6 ++-- drivers/dma/ste_dma40.c | 12 +++---- drivers/dma/txx9dmac.c | 8 ++--- drivers/gpio/gpio-dwapb.c | 6 ++-- drivers/gpio/gpio-lynxpoint.c | 3 +- drivers/gpio/gpio-omap.c | 12 +++---- drivers/gpio/gpio-tegra.c | 6 ++-- drivers/gpio/gpio-zynq.c | 6 ++-- drivers/gpu/drm/msm/adreno/adreno_device.c | 6 ++-- drivers/gpu/drm/msm/disp/mdp5/mdp5_kms.c | 6 ++-- drivers/gpu/drm/msm/dsi/dsi_host.c | 6 ++-- drivers/gpu/drm/msm/msm_drv.c | 3 +- drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c | 18 ++++------ drivers/gpu/drm/vc4/vc4_drv.c | 3 +- drivers/hid/hid-sensor-custom.c | 12 +++---- .../common/cros_ec_sensors/cros_ec_sensors_core.c | 6 ++-- .../iio/common/hid-sensors/hid-sensor-trigger.c | 9 ++--- drivers/input/keyboard/ep93xx_keypad.c | 10 +++--- drivers/input/keyboard/imx_keypad.c | 10 +++--- drivers/input/keyboard/lpc32xx-keys.c | 6 ++-- drivers/input/keyboard/matrix_keypad.c | 10 +++--- drivers/input/keyboard/omap4-keypad.c | 10 +++--- drivers/input/keyboard/pmic8xxx-keypad.c | 6 ++-- drivers/input/keyboard/pxa27x_keypad.c | 10 +++--- drivers/input/keyboard/samsung-keypad.c | 12 +++---- drivers/input/keyboard/snvs_pwrkey.c | 10 +++--- drivers/input/keyboard/spear-keyboard.c | 10 +++--- drivers/input/keyboard/st-keyscan.c | 6 ++-- drivers/input/keyboard/tegra-kbc.c | 10 +++--- drivers/input/misc/max77693-haptic.c | 6 ++-- drivers/input/misc/max8997_haptic.c | 3 +- drivers/input/misc/palmas-pwrbutton.c | 6 ++-- drivers/input/misc/regulator-haptic.c | 6 ++-- drivers/input/misc/twl4030-vibra.c | 3 +- drivers/input/misc/twl6040-vibra.c | 3 +- drivers/input/mouse/navpoint.c | 6 ++-- drivers/input/touchscreen/imx6ul_tsc.c | 6 ++-- drivers/iommu/qcom_iommu.c | 6 ++-- drivers/media/platform/am437x/am437x-vpfe.c | 6 ++-- drivers/media/platform/exynos4-is/media-dev.c | 6 ++-- drivers/media/platform/exynos4-is/mipi-csis.c | 6 ++-- drivers/media/platform/s5p-mfc/s5p_mfc.c | 6 ++-- drivers/mmc/host/davinci_mmc.c | 6 ++-- drivers/mmc/host/sdhci-of-arasan.c | 6 ++-- drivers/mmc/host/wmt-sdmmc.c | 6 ++-- drivers/mtd/devices/docg3.c | 3 +- drivers/mtd/nand/onenand/samsung.c | 6 ++-- drivers/net/dsa/bcm_sf2.c | 6 ++-- drivers/net/dsa/qca8k.c | 6 ++-- drivers/net/ethernet/cadence/macb_main.c | 6 ++-- drivers/net/ethernet/davicom/dm9000.c | 6 ++-- drivers/net/ethernet/smsc/smc91x.c | 3 +- drivers/net/ethernet/ti/cpsw.c | 6 ++-- drivers/net/ethernet/ti/davinci_emac.c | 6 ++-- drivers/net/ethernet/wiznet/w5300.c | 6 ++-- drivers/perf/arm_spe_pmu.c | 6 ++-- drivers/pinctrl/intel/pinctrl-baytrail.c | 6 ++-- drivers/pinctrl/intel/pinctrl-cherryview.c | 6 ++-- drivers/pinctrl/intel/pinctrl-intel.c | 6 ++-- drivers/pinctrl/pinctrl-amd.c | 6 ++-- drivers/pinctrl/pinctrl-at91-pio4.c | 6 ++-- drivers/platform/x86/asus-laptop.c | 3 +- drivers/platform/x86/asus-wmi.c | 3 +- drivers/platform/x86/samsung-laptop.c | 3 +- drivers/power/supply/gpio-charger.c | 3 +- drivers/ptp/ptp_dte.c | 6 ++-- drivers/pwm/pwm-atmel-tcb.c | 6 ++-- drivers/pwm/pwm-rcar.c | 3 +- drivers/rtc/rtc-bq4802.c | 6 ++-- drivers/rtc/rtc-ds1216.c | 6 ++-- drivers/rtc/rtc-ds1511.c | 9 ++--- drivers/rtc/rtc-ds1553.c | 15 +++----- drivers/rtc/rtc-ds1685.c | 21 ++++------- drivers/rtc/rtc-ds1742.c | 6 ++-- drivers/rtc/rtc-lpc32xx.c | 16 ++++----- drivers/rtc/rtc-m48t59.c | 41 +++++++++------------- drivers/rtc/rtc-mv.c | 3 +- drivers/rtc/rtc-mxc.c | 21 ++++------- drivers/rtc/rtc-pcap.c | 15 +++----- drivers/rtc/rtc-sh.c | 15 +++----- drivers/rtc/rtc-stk17ta8.c | 15 +++----- drivers/rtc/rtc-test.c | 3 +- drivers/rtc/rtc-zynqmp.c | 10 +++--- drivers/slimbus/qcom-ctrl.c | 6 ++-- drivers/spi/spi-cadence.c | 6 ++-- drivers/spi/spi-zynqmp-gqspi.c | 6 ++-- drivers/staging/greybus/arche-platform.c | 3 +- drivers/staging/iio/adc/ad7606_par.c | 6 ++-- drivers/staging/nvec/nvec.c | 6 ++-- drivers/thermal/int340x_thermal/int3400_thermal.c | 9 ++--- drivers/thermal/rockchip_thermal.c | 8 ++--- drivers/thermal/spear_thermal.c | 8 ++--- drivers/thermal/st/st_thermal.c | 6 ++-- drivers/thermal/zx2967_thermal.c | 6 ++-- drivers/tty/serial/imx.c | 18 ++++------ drivers/tty/serial/qcom_geni_serial.c | 6 ++-- drivers/tty/serial/st-asc.c | 6 ++-- drivers/tty/serial/xilinx_uartps.c | 6 ++-- drivers/uio/uio_fsl_elbc_gpcm.c | 6 ++-- drivers/usb/mtu3/mtu3_plat.c | 6 ++-- drivers/usb/phy/phy-am335x.c | 6 ++-- drivers/video/fbdev/auo_k190x.c | 12 +++---- .../fbdev/omap2/omapfb/displays/panel-dsi-cm.c | 18 ++++------ drivers/video/fbdev/sh_mobile_lcdcfb.c | 6 ++-- drivers/video/fbdev/sh_mobile_meram.c | 6 ++-- drivers/watchdog/cadence_wdt.c | 6 ++-- drivers/watchdog/of_xilinx_wdt.c | 6 ++-- drivers/watchdog/wdat_wdt.c | 6 ++-- net/dsa/legacy.c | 6 ++-- sound/soc/atmel/atmel_ssc_dai.c | 6 ++-- 123 files changed, 319 insertions(+), 607 deletions(-)
We should get drvdata from struct device directly. Going via platform_device is an unneeded step back and forth.
Signed-off-by: Wolfram Sang wsa+renesas@sang-engineering.com ---
Build tested only. buildbot is happy. Please apply individually.
drivers/slimbus/qcom-ctrl.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/slimbus/qcom-ctrl.c b/drivers/slimbus/qcom-ctrl.c index ffb46f915334..45c38fff15d2 100644 --- a/drivers/slimbus/qcom-ctrl.c +++ b/drivers/slimbus/qcom-ctrl.c @@ -655,8 +655,7 @@ static int qcom_slim_remove(struct platform_device *pdev) #ifdef CONFIG_PM static int qcom_slim_runtime_suspend(struct device *device) { - struct platform_device *pdev = to_platform_device(device); - struct qcom_slim_ctrl *ctrl = platform_get_drvdata(pdev); + struct qcom_slim_ctrl *ctrl = dev_get_drvdata(device); int ret;
dev_dbg(device, "pm_runtime: suspending...\n"); @@ -673,8 +672,7 @@ static int qcom_slim_runtime_suspend(struct device *device)
static int qcom_slim_runtime_resume(struct device *device) { - struct platform_device *pdev = to_platform_device(device); - struct qcom_slim_ctrl *ctrl = platform_get_drvdata(pdev); + struct qcom_slim_ctrl *ctrl = dev_get_drvdata(device); int ret = 0;
dev_dbg(device, "pm_runtime: resuming...\n");
We should get drvdata from struct device directly. Going via platform_device is an unneeded step back and forth.
Signed-off-by: Wolfram Sang wsa+renesas@sang-engineering.com ---
Build tested only. buildbot is happy. Please apply individually.
sound/soc/atmel/atmel_ssc_dai.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/sound/soc/atmel/atmel_ssc_dai.c b/sound/soc/atmel/atmel_ssc_dai.c index a1e2c5682dcd..4a0275a6505d 100644 --- a/sound/soc/atmel/atmel_ssc_dai.c +++ b/sound/soc/atmel/atmel_ssc_dai.c @@ -1002,8 +1002,7 @@ static const struct snd_soc_component_driver atmel_ssc_component = {
static int asoc_ssc_init(struct device *dev) { - struct platform_device *pdev = to_platform_device(dev); - struct ssc_device *ssc = platform_get_drvdata(pdev); + struct ssc_device *ssc = dev_get_drvdata(dev); int ret;
ret = snd_soc_register_component(dev, &atmel_ssc_component, @@ -1033,8 +1032,7 @@ static int asoc_ssc_init(struct device *dev)
static void asoc_ssc_exit(struct device *dev) { - struct platform_device *pdev = to_platform_device(dev); - struct ssc_device *ssc = platform_get_drvdata(pdev); + struct ssc_device *ssc = dev_get_drvdata(dev);
if (ssc->pdata->use_dma) atmel_pcm_dma_platform_unregister(dev);
On 19/04/2018 at 16:06, Wolfram Sang wrote:
We should get drvdata from struct device directly. Going via platform_device is an unneeded step back and forth.
Signed-off-by: Wolfram Sang wsa+renesas@sang-engineering.com
Acked-by: Nicolas Ferre nicolas.ferre@microchip.com
Build tested only. buildbot is happy. Please apply individually.
sound/soc/atmel/atmel_ssc_dai.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/sound/soc/atmel/atmel_ssc_dai.c b/sound/soc/atmel/atmel_ssc_dai.c index a1e2c5682dcd..4a0275a6505d 100644 --- a/sound/soc/atmel/atmel_ssc_dai.c +++ b/sound/soc/atmel/atmel_ssc_dai.c @@ -1002,8 +1002,7 @@ static const struct snd_soc_component_driver atmel_ssc_component = {
static int asoc_ssc_init(struct device *dev) {
- struct platform_device *pdev = to_platform_device(dev);
- struct ssc_device *ssc = platform_get_drvdata(pdev);
struct ssc_device *ssc = dev_get_drvdata(dev); int ret;
ret = snd_soc_register_component(dev, &atmel_ssc_component,
@@ -1033,8 +1032,7 @@ static int asoc_ssc_init(struct device *dev)
static void asoc_ssc_exit(struct device *dev) {
- struct platform_device *pdev = to_platform_device(dev);
- struct ssc_device *ssc = platform_get_drvdata(pdev);
struct ssc_device *ssc = dev_get_drvdata(dev);
if (ssc->pdata->use_dma) atmel_pcm_dma_platform_unregister(dev);
The patch
ASoC: atmel: simplify getting .drvdata
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks, Mark
From c0380478139fce887b948b35dc0dcee0b40bdf09 Mon Sep 17 00:00:00 2001
From: Wolfram Sang wsa+renesas@sang-engineering.com Date: Thu, 19 Apr 2018 16:06:31 +0200 Subject: [PATCH] ASoC: atmel: simplify getting .drvdata
We should get drvdata from struct device directly. Going via platform_device is an unneeded step back and forth.
Signed-off-by: Wolfram Sang wsa+renesas@sang-engineering.com Signed-off-by: Mark Brown broonie@kernel.org --- sound/soc/atmel/atmel_ssc_dai.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/sound/soc/atmel/atmel_ssc_dai.c b/sound/soc/atmel/atmel_ssc_dai.c index 1c7af0ca98ec..d3b69682d9c2 100644 --- a/sound/soc/atmel/atmel_ssc_dai.c +++ b/sound/soc/atmel/atmel_ssc_dai.c @@ -1002,8 +1002,7 @@ static const struct snd_soc_component_driver atmel_ssc_component = {
static int asoc_ssc_init(struct device *dev) { - struct platform_device *pdev = to_platform_device(dev); - struct ssc_device *ssc = platform_get_drvdata(pdev); + struct ssc_device *ssc = dev_get_drvdata(dev); int ret;
ret = snd_soc_register_component(dev, &atmel_ssc_component, @@ -1033,8 +1032,7 @@ static int asoc_ssc_init(struct device *dev)
static void asoc_ssc_exit(struct device *dev) { - struct platform_device *pdev = to_platform_device(dev); - struct ssc_device *ssc = platform_get_drvdata(pdev); + struct ssc_device *ssc = dev_get_drvdata(dev);
if (ssc->pdata->use_dma) atmel_pcm_dma_platform_unregister(dev);
participants (3)
-
Mark Brown
-
Nicolas Ferre
-
Wolfram Sang