s3c2410_get_wdt_drv_data() is only called by s3c2410wdt_probe(), so the implementation of the former can move to the latter. scripts/bloat-o-meter reports for this change (on an ARCH=arm allmodconfig build): add/remove: 1/1 grow/shrink: 0/2 up/down: 4/-129 (-125) Signed-off-by: Uwe Kleine-König <u.kleine-koenig@xxxxxxxxxxxxxx> --- drivers/watchdog/s3c2410_wdt.c | 70 +++++++++++++++------------------- 1 file changed, 30 insertions(+), 40 deletions(-) diff --git a/drivers/watchdog/s3c2410_wdt.c b/drivers/watchdog/s3c2410_wdt.c index 58b262ca4e88..7382bf038161 100644 --- a/drivers/watchdog/s3c2410_wdt.c +++ b/drivers/watchdog/s3c2410_wdt.c @@ -579,11 +579,27 @@ static inline unsigned int s3c2410wdt_get_bootstatus(struct s3c2410_wdt *wdt) return 0; } -static inline const struct s3c2410_wdt_variant * -s3c2410_get_wdt_drv_data(struct platform_device *pdev) +static void s3c2410wdt_wdt_disable_action(void *data) +{ + s3c2410wdt_enable(data, false); +} + +static int s3c2410wdt_probe(struct platform_device *pdev) { - const struct s3c2410_wdt_variant *variant; struct device *dev = &pdev->dev; + const struct s3c2410_wdt_variant *variant; + struct s3c2410_wdt *wdt; + unsigned int wtcon; + int wdt_irq; + int ret; + + wdt = devm_kzalloc(dev, sizeof(*wdt), GFP_KERNEL); + if (!wdt) + return -ENOMEM; + + wdt->dev = dev; + spin_lock_init(&wdt->lock); + wdt->wdt_device = s3c2410_wdd; variant = of_device_get_match_data(dev); if (!variant) { @@ -597,56 +613,30 @@ s3c2410_get_wdt_drv_data(struct platform_device *pdev) if (variant == &drv_data_exynos850_cl0 || variant == &drv_data_exynosautov9_cl0) { u32 index; - int err; - err = of_property_read_u32(dev->of_node, + ret = of_property_read_u32(dev->of_node, "samsung,cluster-index", &index); - if (err) { + if (ret) { dev_err(dev, "failed to get cluster index\n"); - return NULL; + return -EINVAL; } switch (index) { case 0: - return variant; + break; case 1: - return (variant == &drv_data_exynos850_cl0) ? - &drv_data_exynos850_cl1 : - &drv_data_exynosautov9_cl1; + if (variant == &drv_data_exynos850_cl0) + variant = &drv_data_exynos850_cl1; + else + variant = &drv_data_exynosautov9_cl1; + break; default: dev_err(dev, "wrong cluster index: %u\n", index); - return NULL; + return -EINVAL; } } #endif - - return variant; -} - -static void s3c2410wdt_wdt_disable_action(void *data) -{ - s3c2410wdt_enable(data, false); -} - -static int s3c2410wdt_probe(struct platform_device *pdev) -{ - struct device *dev = &pdev->dev; - struct s3c2410_wdt *wdt; - unsigned int wtcon; - int wdt_irq; - int ret; - - wdt = devm_kzalloc(dev, sizeof(*wdt), GFP_KERNEL); - if (!wdt) - return -ENOMEM; - - wdt->dev = dev; - spin_lock_init(&wdt->lock); - wdt->wdt_device = s3c2410_wdd; - - wdt->drv_data = s3c2410_get_wdt_drv_data(pdev); - if (!wdt->drv_data) - return -EINVAL; + wdt->drv_data = variant; if (wdt->drv_data->quirks & QUIRKS_HAVE_PMUREG) { wdt->pmureg = syscon_regmap_lookup_by_phandle(dev->of_node, -- 2.39.1