From: Daniel Lezcano <daniel.lezcano@linaro.org> To: daniel.lezcano@linaro.org, tglx@linutronix.de Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Subject: [PATCH 63/92] clocksource/drivers/vt8500: Convert init function to return error Date: Tue, 28 Jun 2016 12:31:22 +0200 [thread overview] Message-ID: <1467109911-11060-63-git-send-email-daniel.lezcano@linaro.org> (raw) In-Reply-To: <1467109911-11060-1-git-send-email-daniel.lezcano@linaro.org> The init functions do not return any error. They behave as the following: - panic, thus leading to a kernel crash while another timer may work and make the system boot up correctly or - print an error and let the caller unaware if the state of the system Change that by converting the init functions to return an error conforming to the CLOCKSOURCE_OF_RET prototype. Proper error handling (rollback, errno value) will be changed later case by case, thus this change just return back an error or success in the init function. Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> --- drivers/clocksource/vt8500_timer.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/drivers/clocksource/vt8500_timer.c b/drivers/clocksource/vt8500_timer.c index ddb4092..1bc8707 100644 --- a/drivers/clocksource/vt8500_timer.c +++ b/drivers/clocksource/vt8500_timer.c @@ -121,38 +121,48 @@ static struct irqaction irq = { .dev_id = &clockevent, }; -static void __init vt8500_timer_init(struct device_node *np) +static int __init vt8500_timer_init(struct device_node *np) { - int timer_irq; + int timer_irq, ret; regbase = of_iomap(np, 0); if (!regbase) { pr_err("%s: Missing iobase description in Device Tree\n", __func__); - return; + return -ENXIO; } + timer_irq = irq_of_parse_and_map(np, 0); if (!timer_irq) { pr_err("%s: Missing irq description in Device Tree\n", __func__); - return; + return -EINVAL; } writel(1, regbase + TIMER_CTRL_VAL); writel(0xf, regbase + TIMER_STATUS_VAL); writel(~0, regbase + TIMER_MATCH_VAL); - if (clocksource_register_hz(&clocksource, VT8500_TIMER_HZ)) + ret = clocksource_register_hz(&clocksource, VT8500_TIMER_HZ); + if (ret) { pr_err("%s: vt8500_timer_init: clocksource_register failed for %s\n", - __func__, clocksource.name); + __func__, clocksource.name); + return ret; + } clockevent.cpumask = cpumask_of(0); - if (setup_irq(timer_irq, &irq)) + ret = setup_irq(timer_irq, &irq); + if (ret) { pr_err("%s: setup_irq failed for %s\n", __func__, clockevent.name); + return ret; + } + clockevents_config_and_register(&clockevent, VT8500_TIMER_HZ, MIN_OSCR_DELTA * 2, 0xf0000000); + + return 0; } -CLOCKSOURCE_OF_DECLARE(vt8500, "via,vt8500-timer", vt8500_timer_init); +CLOCKSOURCE_OF_DECLARE_RET(vt8500, "via,vt8500-timer", vt8500_timer_init); -- 1.9.1
WARNING: multiple messages have this Message-ID (diff)
From: daniel.lezcano@linaro.org (Daniel Lezcano) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 63/92] clocksource/drivers/vt8500: Convert init function to return error Date: Tue, 28 Jun 2016 12:31:22 +0200 [thread overview] Message-ID: <1467109911-11060-63-git-send-email-daniel.lezcano@linaro.org> (raw) In-Reply-To: <1467109911-11060-1-git-send-email-daniel.lezcano@linaro.org> The init functions do not return any error. They behave as the following: - panic, thus leading to a kernel crash while another timer may work and make the system boot up correctly or - print an error and let the caller unaware if the state of the system Change that by converting the init functions to return an error conforming to the CLOCKSOURCE_OF_RET prototype. Proper error handling (rollback, errno value) will be changed later case by case, thus this change just return back an error or success in the init function. Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> --- drivers/clocksource/vt8500_timer.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/drivers/clocksource/vt8500_timer.c b/drivers/clocksource/vt8500_timer.c index ddb4092..1bc8707 100644 --- a/drivers/clocksource/vt8500_timer.c +++ b/drivers/clocksource/vt8500_timer.c @@ -121,38 +121,48 @@ static struct irqaction irq = { .dev_id = &clockevent, }; -static void __init vt8500_timer_init(struct device_node *np) +static int __init vt8500_timer_init(struct device_node *np) { - int timer_irq; + int timer_irq, ret; regbase = of_iomap(np, 0); if (!regbase) { pr_err("%s: Missing iobase description in Device Tree\n", __func__); - return; + return -ENXIO; } + timer_irq = irq_of_parse_and_map(np, 0); if (!timer_irq) { pr_err("%s: Missing irq description in Device Tree\n", __func__); - return; + return -EINVAL; } writel(1, regbase + TIMER_CTRL_VAL); writel(0xf, regbase + TIMER_STATUS_VAL); writel(~0, regbase + TIMER_MATCH_VAL); - if (clocksource_register_hz(&clocksource, VT8500_TIMER_HZ)) + ret = clocksource_register_hz(&clocksource, VT8500_TIMER_HZ); + if (ret) { pr_err("%s: vt8500_timer_init: clocksource_register failed for %s\n", - __func__, clocksource.name); + __func__, clocksource.name); + return ret; + } clockevent.cpumask = cpumask_of(0); - if (setup_irq(timer_irq, &irq)) + ret = setup_irq(timer_irq, &irq); + if (ret) { pr_err("%s: setup_irq failed for %s\n", __func__, clockevent.name); + return ret; + } + clockevents_config_and_register(&clockevent, VT8500_TIMER_HZ, MIN_OSCR_DELTA * 2, 0xf0000000); + + return 0; } -CLOCKSOURCE_OF_DECLARE(vt8500, "via,vt8500-timer", vt8500_timer_init); +CLOCKSOURCE_OF_DECLARE_RET(vt8500, "via,vt8500-timer", vt8500_timer_init); -- 1.9.1
next prev parent reply other threads:[~2016-06-28 10:34 UTC|newest] Thread overview: 153+ messages / expand[flat|nested] mbox.gz Atom feed top [not found] <577251A4.7030508@linaro.org> 2016-06-28 10:30 ` [PATCH 01/92] clocksource/drivers/armada-370-xp: Make syscore_ops static Daniel Lezcano 2016-06-28 10:30 ` [PATCH 02/92] clocksource/drivers/digicolor: Fix warning of non-static function Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` [PATCH 03/92] clocksource/drivers/samsung_pwm_timer: Fix endian accessors Daniel Lezcano 2016-06-28 10:30 ` [PATCH 04/92] clocksource/drivers/samsung_pwm: Fix typo in Kconfig Daniel Lezcano 2016-06-28 10:30 ` [PATCH 05/92] dt-bindings: Document rk3399 rk-timer bindings Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` [PATCH 06/92] clocksource/drivers/rockchip: Add the dynamic irq flag to the timer Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` [PATCH 07/92] clocksource/drivers/rockchip: Add support for the rk3399 SoC Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` [PATCH 08/92] arm64: dts: rockchip: Add rktimer device node for rk3399 Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` [PATCH 09/92] clocksource/drivers/oxnas-rps: Add Oxford Semiconductor RPS Dual Timer Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` [PATCH 10/92] dt-bindings: clocksource: Add Oxford Semiconductor RPS Timer bindings Daniel Lezcano 2016-06-28 10:30 ` [PATCH 11/92] of: Add a new macro to declare_of for one parameter function returning a value Daniel Lezcano 2016-06-28 10:30 ` [PATCH 12/92] clocksource/drivers/clksrc-probe: Introduce init functions with return code Daniel Lezcano 2016-06-28 10:30 ` [PATCH 13/92] clocksource/drivers/rockchip_timer: Convert init function to return error Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` [PATCH 14/92] clocksource/drivers/mtk_timer: " Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` [PATCH 15/92] clocksource/drivers/exynos_mct: " Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` [PATCH 16/92] clocksource/drivers/asm9260: " Daniel Lezcano 2016-06-28 10:30 ` [PATCH 17/92] clocksource/drivers/cadence_ttc: " Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` [PATCH 18/92] clocksource/drivers/st_lpc: " Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` [PATCH 19/92] clocksource/drivers/dw_apb_timer: " Daniel Lezcano 2016-06-28 10:30 ` [PATCH 20/92] clocksource/drivers/clps711x: " Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` [PATCH 21/92] clocksource/drivers/digicolor: " Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` [PATCH 22/92] clocksource/drivers/armv7m_systick: " Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` [PATCH 23/92] clocksource/drivers/bcm2835_timer: " Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` [PATCH 24/92] clocksource/drivers/bcm_kona: " Daniel Lezcano 2016-06-28 10:30 ` [PATCH 25/92] clocksource/drivers/clksrc-dbx500: " Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` [PATCH 26/92] clocksource/drivers/fsl_ftm_timer: " Daniel Lezcano 2016-06-28 10:30 ` [PATCH 27/92] clocksource/drivers/arm_arch_timer: " Daniel Lezcano 2016-06-28 10:30 ` [PATCH 28/92] clocksource/drivers/arm_global_timer: " Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` [PATCH 29/92] clocksource/drivers/h8300_timer16: " Daniel Lezcano 2016-06-28 10:30 ` [PATCH 30/92] clocksource/drivers/h8300_timer8: " Daniel Lezcano 2016-06-28 10:30 ` [PATCH 31/92] clocksource/drivers/h8300_tpu: " Daniel Lezcano 2016-06-28 10:30 ` [PATCH 32/92] clocksource/drivers/meson6_timer.c: " Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` [PATCH 33/92] clocksource/drivers/mips-gic-timer: " Daniel Lezcano 2016-06-28 10:30 ` [PATCH 34/92] clocksource/drivers/moxart: " Daniel Lezcano 2016-06-28 10:30 ` [PATCH 35/92] clocksource/drivers/mps2-timer: " Daniel Lezcano 2016-06-28 10:30 ` Daniel Lezcano 2016-06-28 10:30 ` [PATCH 36/92] clocksource/drivers/mxs: " Daniel Lezcano 2016-06-28 10:30 ` [PATCH 37/92] clocksource/drivers/nomadik-mtu: " Daniel Lezcano 2016-06-28 10:30 ` [PATCH 38/92] clocksource/drivers/pxa: " Daniel Lezcano 2016-06-28 10:30 ` [PATCH 39/92] clocksource/drivers/qcom: " Daniel Lezcano 2016-06-28 10:30 ` [PATCH 40/92] clocksource/drivers/samsung_pwm: " Daniel Lezcano 2016-06-28 10:31 ` [PATCH 41/92] clocksource/drivers/sun4i: " Daniel Lezcano 2016-06-28 10:31 ` Daniel Lezcano 2016-06-28 10:31 ` [PATCH 42/92] clocksource/drivers/tango_xtal: " Daniel Lezcano 2016-06-28 10:31 ` [PATCH 43/92] clocksource/drivers/tegra20: " Daniel Lezcano 2016-06-28 10:31 ` [PATCH 44/92] clocksource/drivers/time-armada-370-xp: " Daniel Lezcano 2016-06-28 10:31 ` [PATCH 45/92] clocksource/drivers/time-efm32: " Daniel Lezcano 2016-06-28 10:31 ` Daniel Lezcano 2016-06-28 10:31 ` [PATCH 46/92] clocksource/drivers/time-lpc32xx: " Daniel Lezcano 2016-06-28 10:31 ` Daniel Lezcano 2016-06-28 10:31 ` [PATCH 47/92] clocksource/drivers/orion: " Daniel Lezcano 2016-06-28 10:31 ` [PATCH 48/92] clocksource/drivers/pistachio: " Daniel Lezcano 2016-06-28 10:31 ` [PATCH 49/92] clocksource/drivers/atlas7: " Daniel Lezcano 2016-06-28 10:31 ` Daniel Lezcano 2016-06-28 10:31 ` [PATCH 50/92] clocksource/drivers/atmel-pit: " Daniel Lezcano 2016-06-28 10:31 ` [PATCH 51/92] clocksource/drivers/atmel-st: " Daniel Lezcano 2016-06-28 10:31 ` [PATCH 52/92] clocksource/drivers/prima2: " Daniel Lezcano 2016-06-28 10:31 ` Daniel Lezcano 2016-06-28 10:31 ` [PATCH 53/92] clocksource/drivers/imx-gpt: " Daniel Lezcano 2016-06-28 10:31 ` [PATCH 54/92] clocksource/drivers/integrator-ap: " Daniel Lezcano 2016-06-28 10:31 ` [PATCH 55/92] clocksource/drivers/keystone: " Daniel Lezcano 2016-06-28 10:31 ` Daniel Lezcano 2016-06-28 10:31 ` [PATCH 56/92] clocksource/drivers/sp804: " Daniel Lezcano 2016-06-28 10:31 ` [PATCH 57/92] clocksource/drivers/stm32: " Daniel Lezcano 2016-06-28 10:31 ` Daniel Lezcano 2016-06-28 10:31 ` [PATCH 58/92] clocksource/drivers/sun5i: " Daniel Lezcano 2016-06-28 10:31 ` Daniel Lezcano 2016-06-28 10:31 ` [PATCH 59/92] clocksource/drivers/ti-32k: " Daniel Lezcano 2016-06-28 10:31 ` [PATCH 60/92] clocksource/drivers/u300: " Daniel Lezcano 2016-06-28 10:31 ` Daniel Lezcano 2016-06-28 10:31 ` [PATCH 61/92] clocksource/drivers/versatile: " Daniel Lezcano 2016-06-28 10:31 ` Daniel Lezcano 2016-06-28 10:31 ` [PATCH 62/92] clocksource/drivers/vf_pit_timer: " Daniel Lezcano 2016-06-28 10:31 ` Daniel Lezcano [this message] 2016-06-28 10:31 ` [PATCH 63/92] clocksource/drivers/vt8500: " Daniel Lezcano 2016-06-28 10:31 ` [PATCH 64/92] clocksource/drivers/zevio: " Daniel Lezcano 2016-06-28 10:31 ` [PATCH 65/92] clocksource/drivers/microblaze: " Daniel Lezcano 2016-06-28 10:31 ` [PATCH 66/92] clocksource/drivers/ralink: " Daniel Lezcano 2016-06-28 10:31 ` [PATCH 67/92] clocksource/drivers/nios2: " Daniel Lezcano 2016-06-28 10:31 ` [PATCH 68/92] clocksource/drivers/smp_twd: " Daniel Lezcano 2016-06-28 10:31 ` Daniel Lezcano 2016-06-28 10:31 ` [PATCH 69/92] clocksource/drivers/nps: " Daniel Lezcano 2016-06-28 10:31 ` [PATCH 70/92] clocksource/drivers/arc: " Daniel Lezcano 2016-06-28 10:31 ` Daniel Lezcano 2016-06-28 10:31 ` [PATCH 71/92] clocksource/drivers/oxnas-rps: " Daniel Lezcano 2016-06-28 10:31 ` Daniel Lezcano [not found] ` <1467109911-11060-1-git-send-email-daniel.lezcano-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> 2016-06-28 10:31 ` [PATCH 72/92] clocksources: Switch back to the clksrc table Daniel Lezcano 2016-06-28 10:31 ` Daniel Lezcano 2016-06-28 10:31 ` Daniel Lezcano 2016-06-28 10:31 ` Daniel Lezcano 2016-06-28 10:31 ` Daniel Lezcano 2016-06-28 10:31 ` [PATCH 73/92] clk: Add missing clk_get_sys() stub Daniel Lezcano 2016-06-28 10:31 ` [PATCH 74/92] clocksource/drivers/bcm_kona: Remove useless header <asm/mach/time.h> Daniel Lezcano 2016-06-29 5:53 ` Ray Jui 2016-06-28 10:31 ` [PATCH 75/92] clocksource/drivers/bcm2835: Add the COMPILE_TEST option Daniel Lezcano 2016-06-28 10:31 ` Daniel Lezcano 2016-06-28 10:51 ` [PATCH 76/92] clocksource/drivers/armv7m_systick: " Daniel Lezcano 2016-06-28 10:51 ` Daniel Lezcano 2016-06-28 10:51 ` [PATCH 77/92] clocksource/drivers/bcm_kona: " Daniel Lezcano 2016-06-28 10:51 ` Daniel Lezcano 2016-06-28 10:51 ` [PATCH 78/92] clocksource/drivers/clps_711x: " Daniel Lezcano 2016-06-28 10:51 ` Daniel Lezcano 2016-06-28 10:51 ` [PATCH 79/92] clocksource/drivers/atlas7: " Daniel Lezcano 2016-06-28 10:51 ` Daniel Lezcano 2016-06-28 10:51 ` [PATCH 80/92] clocksource/drivers/moxart: " Daniel Lezcano 2016-06-28 10:51 ` Daniel Lezcano 2016-06-28 10:51 ` [PATCH 81/92] clocksource/drivers/mxs: Remove useless header <asm/mach/time.h> Daniel Lezcano 2016-06-28 10:51 ` [PATCH 82/92] clocksource/drivers/mxs: Add the COMPILE_TEST option Daniel Lezcano 2016-06-28 10:51 ` Daniel Lezcano 2016-06-28 10:51 ` [PATCH 83/92] clocksource/drivers/prima2: Remove useless header <asm/mach/time.h> Daniel Lezcano 2016-06-28 10:51 ` Daniel Lezcano 2016-06-28 10:51 ` [PATCH 84/92] clocksource/drivers/prima2: Add the COMPILE_TEST option Daniel Lezcano 2016-06-28 10:51 ` Daniel Lezcano 2016-06-28 10:51 ` [PATCH 85/92] clocksource/drivers/u300: " Daniel Lezcano 2016-06-28 10:51 ` Daniel Lezcano 2016-06-28 10:51 ` [PATCH 86/92] clocksource/drivers/nspire: " Daniel Lezcano 2016-06-28 10:51 ` Daniel Lezcano 2016-06-28 10:51 ` [PATCH 87/92] clocksource/drivers/keystone: " Daniel Lezcano 2016-06-28 10:51 ` Daniel Lezcano 2016-06-28 10:51 ` [PATCH 88/92] clocksource/drivers/integrator-ap: " Daniel Lezcano 2016-06-28 10:51 ` Daniel Lezcano 2016-06-28 10:51 ` [PATCH 89/92] clocksource/drivers/arm_global_timer: " Daniel Lezcano 2016-06-28 10:51 ` [PATCH 90/92] clocksource/drivers/timer-atmel-st: " Daniel Lezcano 2016-06-28 10:51 ` [PATCH 91/92] clocksource/drivers/versatile: " Daniel Lezcano 2016-06-28 10:51 ` [PATCH 92/92] clocksource/drivers/arm_arch_timer: Control the evtstrm via the cmdline Daniel Lezcano 2016-07-06 10:24 ` [PULL] : clockevents for 4.8 Daniel Lezcano 2016-07-06 10:44 ` Thomas Gleixner 2016-07-06 10:47 ` Thomas Gleixner 2016-07-06 13:21 ` Daniel Lezcano
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1467109911-11060-63-git-send-email-daniel.lezcano@linaro.org \ --to=daniel.lezcano@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=tglx@linutronix.de \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.