From: fu.wei@linaro.org To: rjw@rjwysocki.net, lenb@kernel.org, daniel.lezcano@linaro.org, tglx@linutronix.de, marc.zyngier@arm.com, mark.rutland@arm.com, lorenzo.pieralisi@arm.com, sudeep.holla@arm.com, hanjun.guo@linaro.org Cc: linux-arm-kernel@lists.infradead.org, linaro-acpi@lists.linaro.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, rruigrok@codeaurora.org, harba@codeaurora.org, cov@codeaurora.org, timur@codeaurora.org, graeme.gregory@linaro.org, al.stone@linaro.org, jcm@redhat.com, wei@redhat.com, arnd@arndb.de, catalin.marinas@arm.com, will.deacon@arm.com, Suravee.Suthikulpanit@amd.com, leo.duran@amd.com, wim@iguana.be, linux@roeck-us.net, linux-watchdog@vger.kernel.org, tn@semihalf.com, christoffer.dall@linaro.org, julien.grall@arm.com, Fu Wei <fu.wei@linaro.org> Subject: [PATCH v19 07/15] clocksource/drivers/arm_arch_timer: Refactor arch_timer_needs_probing Date: Wed, 21 Dec 2016 14:45:55 +0800 [thread overview] Message-ID: <20161221064603.11830-8-fu.wei@linaro.org> (raw) In-Reply-To: <20161221064603.11830-1-fu.wei@linaro.org> From: Fu Wei <fu.wei@linaro.org> When system init with device-tree, we don't know which node will be initialized first. And the code in arch_timer_common_init should wait until per-cpu timer and MMIO timer are both initialized. So we need arch_timer_needs_probing to detect the init status of system. But currently the code is dispersed in arch_timer_needs_probing and arch_timer_common_init. And the function name doesn't specify that it's only for device-tree. This is somewhat confusing. This patch move all related code from arch_timer_common_init to arch_timer_needs_probing, refactor it, and rename it to arch_timer_needs_of_probing. And make sure that it will be called only if acpi is disabled. Signed-off-by: Fu Wei <fu.wei@linaro.org> --- drivers/clocksource/arm_arch_timer.c | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c index 9a1f138..5f7be04 100644 --- a/drivers/clocksource/arm_arch_timer.c +++ b/drivers/clocksource/arm_arch_timer.c @@ -795,15 +795,28 @@ static const struct of_device_id arch_timer_mem_of_match[] __initconst = { {}, }; -static bool __init -arch_timer_needs_probing(int type, const struct of_device_id *matches) +static bool __init arch_timer_needs_of_probing(void) { struct device_node *dn; bool needs_probing = false; + unsigned int mask = ARCH_TIMER_TYPE_CP15 | ARCH_TIMER_TYPE_MEM; - dn = of_find_matching_node(NULL, matches); - if (dn && of_device_is_available(dn) && !(arch_timers_present & type)) + /* We have two timers, and both device-tree nodes are probed. */ + if ((arch_timers_present & mask) == mask) + return false; + + /* + * Only one type of timer is probed, + * check if we have another type of timer node in device-tree. + */ + if (arch_timers_present & ARCH_TIMER_TYPE_CP15) + dn = of_find_matching_node(NULL, arch_timer_mem_of_match); + else + dn = of_find_matching_node(NULL, arch_timer_of_match); + + if (dn && of_device_is_available(dn)) needs_probing = true; + of_node_put(dn); return needs_probing; @@ -811,17 +824,8 @@ arch_timer_needs_probing(int type, const struct of_device_id *matches) static int __init arch_timer_common_init(void) { - unsigned mask = ARCH_TIMER_TYPE_CP15 | ARCH_TIMER_TYPE_MEM; - - /* Wait until both nodes are probed if we have two timers */ - if ((arch_timers_present & mask) != mask) { - if (arch_timer_needs_probing(ARCH_TIMER_TYPE_MEM, - arch_timer_mem_of_match)) - return 0; - if (arch_timer_needs_probing(ARCH_TIMER_TYPE_CP15, - arch_timer_of_match)) - return 0; - } + if (acpi_disabled && arch_timer_needs_of_probing()) + return 0; arch_timer_banner(arch_timers_present); arch_counter_register(arch_timers_present); -- 2.9.3
next prev parent reply other threads:[~2016-12-21 6:47 UTC|newest] Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-12-21 6:45 [PATCH v19 00/15] acpi, clocksource: add GTDT driver and GTDT support in arm_arch_timer fu.wei 2016-12-21 6:45 ` [PATCH v19 01/15] clocksource/drivers/arm_arch_timer: Move enums and defines to header file fu.wei 2016-12-21 6:45 ` [PATCH v19 02/15] clocksource/drivers/arm_arch_timer: Add a new enum for spi type fu.wei 2016-12-21 6:45 ` [PATCH v19 03/15] clocksource/drivers/arm_arch_timer: Improve printk relevant code fu.wei 2016-12-21 6:45 ` [PATCH v19 04/15] clocksource/drivers/arm_arch_timer: rename some enums and defines fu.wei 2016-12-21 6:45 ` [PATCH v19 05/15] clocksource/drivers/arm_arch_timer: rework PPI determination fu.wei 2017-01-16 17:29 ` Mark Rutland 2017-01-17 23:49 ` Fu Wei 2016-12-21 6:45 ` [PATCH v19 06/15] clocksource/drivers/arm_arch_timer: Rework counter frequency detection fu.wei 2017-01-16 17:50 ` Mark Rutland 2017-01-18 4:27 ` Fu Wei 2016-12-21 6:45 ` fu.wei [this message] 2016-12-21 6:45 ` [PATCH v19 08/15] clocksource/drivers/arm_arch_timer: move arch_timer_needs_of_probing into DT init call fu.wei 2016-12-21 6:45 ` [PATCH v19 09/15] clocksource/drivers/arm_arch_timer: Introduce some new structs to prepare for GTDT fu.wei 2016-12-21 6:45 ` [PATCH v19 10/15] clocksource/drivers/arm_arch_timer: Refactor the timer init code " fu.wei 2017-01-16 18:30 ` Mark Rutland 2017-01-17 10:30 ` Fu Wei 2017-01-17 10:39 ` Fu Wei 2017-01-17 12:18 ` Timur Tabi 2017-01-17 12:29 ` Mark Rutland 2017-01-17 13:22 ` Fu Wei 2016-12-21 6:45 ` [PATCH v19 11/15] acpi/arm64: Add GTDT table parse driver fu.wei 2016-12-21 6:46 ` [PATCH v19 12/15] clocksource/drivers/arm_arch_timer: Simplify ACPI support code fu.wei 2016-12-21 6:46 ` [PATCH v19 13/15] acpi/arm64: Add memory-mapped timer support in GTDT driver fu.wei 2016-12-21 6:46 ` [PATCH v19 14/15] clocksource/drivers/arm_arch_timer: Add GTDT support for memory-mapped timer fu.wei 2016-12-21 6:46 ` [PATCH v19 15/15] acpi/arm64: Add SBSA Generic Watchdog support in GTDT driver fu.wei 2017-01-16 6:26 ` [PATCH v19 00/15] acpi, clocksource: add GTDT driver and GTDT support in arm_arch_timer Fu Wei 2017-01-16 12:01 ` Mark Rutland 2017-01-16 12:04 ` Fu Wei 2017-01-16 17:00 ` Mark Rutland 2017-01-17 9:14 ` Fu Wei
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=20161221064603.11830-8-fu.wei@linaro.org \ --to=fu.wei@linaro.org \ --cc=Suravee.Suthikulpanit@amd.com \ --cc=al.stone@linaro.org \ --cc=arnd@arndb.de \ --cc=catalin.marinas@arm.com \ --cc=christoffer.dall@linaro.org \ --cc=cov@codeaurora.org \ --cc=daniel.lezcano@linaro.org \ --cc=graeme.gregory@linaro.org \ --cc=hanjun.guo@linaro.org \ --cc=harba@codeaurora.org \ --cc=jcm@redhat.com \ --cc=julien.grall@arm.com \ --cc=lenb@kernel.org \ --cc=leo.duran@amd.com \ --cc=linaro-acpi@lists.linaro.org \ --cc=linux-acpi@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-watchdog@vger.kernel.org \ --cc=linux@roeck-us.net \ --cc=lorenzo.pieralisi@arm.com \ --cc=marc.zyngier@arm.com \ --cc=mark.rutland@arm.com \ --cc=rjw@rjwysocki.net \ --cc=rruigrok@codeaurora.org \ --cc=sudeep.holla@arm.com \ --cc=tglx@linutronix.de \ --cc=timur@codeaurora.org \ --cc=tn@semihalf.com \ --cc=wei@redhat.com \ --cc=will.deacon@arm.com \ --cc=wim@iguana.be \ --subject='Re: [PATCH v19 07/15] clocksource/drivers/arm_arch_timer: Refactor arch_timer_needs_probing' \ /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: link
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).