From: arnd@arndb.de (Arnd Bergmann)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 01/16] ARM: scu: Provide support for parsing SCU device node to enable SCU
Date: Thu, 17 Nov 2016 18:03:05 +0100 [thread overview]
Message-ID: <3360559.T0zQaY0FJ3@wuerfel> (raw)
In-Reply-To: <fe90b6cc-81b1-772e-ab78-f2199957ec96@samsung.com>
On Thursday, November 17, 2016 9:50:27 AM CET pankaj.dubey wrote:
>
> >>> of_scu_enable() which _only_ looks up the SCU address in DT and enables
> >>> it if it finds it, otherwise returning failure.
> >>>
> >>> a9_scu_enable() which tries to use the A9 provided SCU address and
> >>> enables it if it finds it, otherwise returning failure.
> >>>
>
> OK, In that case I can see need for following four helpers as:
>
> 1: of_scu_enable() which will __only__ lookup the SCU address in DT and
> enables it if it finds, otherwise return -ENOMEM failure.
> This helper APIs is required and sufficient for most of platforms such
> as exynos, berlin, realview, socfpga, STi, ux500, vexpress, rockchip and
> mvebu
>
> 2: a9_scu_enable(), which will __only__ use A9 provided SCU address and
> enables it, if address mapped successfully, otherwise returning failure.
> This helper APIs is required and sufficient for two ARM platforms as of
> now tegra and hisi.
>
> 3: of_scu_get_base() which will lookup the SCU address in DT and if node
> found maps address and returns ioremapped address to caller.
> This helper APIs is required for three ARM plaforms rockchip, mvebu and
> ux500, along with scu_enable() API to enable and find number_of_cores.
>
> 4: s9_scu_iomap_base() which will internally use s9_scu_get_base() and
> do ioremap of scu address and returns ioremapped address to the caller
> along with ownership (caller has responsibility to unmap it).
> This helper APIs is required to simplify SCU enable and related code in
> two ARM plaforms BCM ans ZX.
>
> For remaining two ARM platforms (IMX and ZYNQ), none of these helpers
> are useful for the time-being, as they need SCU mapping very early of
> boot, where we can't use iomap APIs. So I will drop patches related to
> these platforms in v2 version.
>
> Please let me know if any concern in this approach.
I think ideally we wouldn't even need to know the virtual address
outside of smp_scu.c. If we can move all users of the address
into that file directly, it could become a local variable and
we change scu_power_mode() and scu_get_core_count() instead to
not require the address argument.
The only user I could find outside of that file is
static int shmobile_smp_scu_psr_core_disabled(int cpu)
{
unsigned long mask = SCU_PM_POWEROFF << (cpu * 8);
if ((__raw_readl(shmobile_scu_base + 8) & mask) == mask)
return 1;
return 0;
}
which can be done in the same file as well.
> >>> Then callers can decide which of these to call, and what error messages
> >>> to print on their failures.
> >>
> >> Splitting the function in two is probably simpler overall, but
> >> we may still have to look at all the callers: Any platform that
> >> currently tries to map it on any CPU and doesn't warn about the
> >> absence of the device node (or about scu_a9_has_base() == false)
> >> should really continue not to warn about that.
> >
> > Did you miss the bit where none of of_scu_enable() or a9_scu_enable()
> > should produce any warnings or errors to be printed. It's up to the
> > caller to report the failure, otherwise doing this doesn't make sense:
> >
> > if (of_scu_enable() < 0 && a9_scu_enable() < 0)
> > pr_err("Failed to map and enable the SCU\n");
> >
> > because if of_scu_enable() prints a warning/error, then it's patently
> > misleading.
> >
That's why I said "otherwise we can leave the warning in the caller
after checking the return code of the new APIs." for the case where
we actually need it.
> I will move out error message out of these helpers and let caller
> (platform specific code) handle and print error if required.
Ok.
Arnd
next prev parent reply other threads:[~2016-11-17 17:03 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-14 5:01 [PATCH 00/16] Provide support of generic function for SCU enable Pankaj Dubey
2016-11-14 5:01 ` [PATCH 01/16] ARM: scu: Provide support for parsing SCU device node to enable SCU Pankaj Dubey
2016-11-14 6:12 ` Jisheng Zhang
2016-11-14 6:54 ` Jisheng Zhang
2016-11-14 8:23 ` pankaj.dubey
2016-11-14 8:47 ` Jisheng Zhang
2016-11-14 8:40 ` pankaj.dubey
2016-11-14 12:03 ` Arnd Bergmann
2016-11-14 13:50 ` Russell King - ARM Linux
2016-11-14 14:37 ` Arnd Bergmann
2016-11-14 14:51 ` Russell King - ARM Linux
2016-11-17 4:20 ` pankaj.dubey
2016-11-17 17:03 ` Arnd Bergmann [this message]
2016-11-18 3:24 ` pankaj.dubey
2016-11-18 12:14 ` Arnd Bergmann
2016-11-18 12:48 ` Russell King - ARM Linux
2016-11-18 13:32 ` Arnd Bergmann
2016-12-08 15:18 ` Pankaj Dubey
2016-11-14 13:48 ` Russell King - ARM Linux
2016-11-17 2:22 ` pankaj.dubey
2016-11-14 5:01 ` [PATCH 02/16] ARM: EXYNOS: use generic API " Pankaj Dubey
2016-11-15 18:59 ` Krzysztof Kozlowski
2016-11-17 2:15 ` pankaj.dubey
2016-11-14 5:01 ` [PATCH 03/16] ARM: berlin: use generic API for enabling SCU Pankaj Dubey
2016-11-14 8:51 ` Jisheng Zhang
2016-11-14 16:20 ` Pankaj Dubey
2016-11-14 5:01 ` [PATCH 04/16] ARM: realview: " Pankaj Dubey
2016-11-14 11:56 ` Arnd Bergmann
2016-11-14 12:06 ` pankaj.dubey
2016-11-14 14:28 ` Arnd Bergmann
2016-11-14 13:19 ` Pankaj Dubey
2016-11-14 5:02 ` [PATCH 05/16] ARM: socfpga: " Pankaj Dubey
2016-11-14 5:02 ` [PATCH 06/16] ARM: STi: " Pankaj Dubey
2016-11-14 5:02 ` [PATCH 07/16] ARM: ux500: " Pankaj Dubey
2016-11-14 5:02 ` [PATCH 08/16] ARM: vexpress: " Pankaj Dubey
2016-11-16 14:34 ` Sudeep Holla
2016-11-17 2:12 ` pankaj.dubey
2016-11-14 5:02 ` [PATCH 09/16] ARM: BCM: " Pankaj Dubey
2016-11-14 6:10 ` Florian Fainelli
2016-11-14 5:02 ` [PATCH 10/16] ARM: tegra: " Pankaj Dubey
2016-11-14 5:02 ` [PATCH 11/16] ARM: rockchip: " Pankaj Dubey
2016-11-14 5:02 ` [PATCH 12/16] ARM: imx: " Pankaj Dubey
2016-11-14 14:26 ` Shawn Guo
2016-11-17 4:29 ` pankaj.dubey
2016-11-14 5:02 ` [PATCH 13/16] ARM: zynq: " Pankaj Dubey
2016-11-14 5:02 ` [PATCH 14/16] ARM: hisi: " Pankaj Dubey
2016-11-14 5:02 ` [PATCH 15/16] ARM: mvebu: " Pankaj Dubey
2016-11-14 5:02 ` [PATCH 16/16] ARM: zx: " Pankaj Dubey
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=3360559.T0zQaY0FJ3@wuerfel \
--to=arnd@arndb.de \
--cc=linux-arm-kernel@lists.infradead.org \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox