2022-09-26 10:19:32

by Kartik Rajput

[permalink] [raw]
Subject: [PATCH] soc/tegra: fuse: Export tegra_get_platform() & tegra_is_silicon()

Functions tegra_get_platform() and tegra_is_silicon() are required
for pre-silicon development to correctly identify the platform on
which the software is running.

Export tegra_get_platform() and tegra_is_silicon(), so they can be
used for pre-slicon development of device drivers and kernel space
tests.

Signed-off-by: Kartik <[email protected]>
---
drivers/soc/tegra/fuse/tegra-apbmisc.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/soc/tegra/fuse/tegra-apbmisc.c b/drivers/soc/tegra/fuse/tegra-apbmisc.c
index 3351bd872ab2..904797f651a1 100644
--- a/drivers/soc/tegra/fuse/tegra-apbmisc.c
+++ b/drivers/soc/tegra/fuse/tegra-apbmisc.c
@@ -56,6 +56,7 @@ u8 tegra_get_platform(void)
{
return (tegra_read_chipid() >> 20) & 0xf;
}
+EXPORT_SYMBOL(tegra_get_platform);

bool tegra_is_silicon(void)
{
@@ -76,6 +77,7 @@ bool tegra_is_silicon(void)
*/
return true;
}
+EXPORT_SYMBOL(tegra_is_silicon);

u32 tegra_read_straps(void)
{
--
2.17.1


2022-10-20 10:15:48

by Thierry Reding

[permalink] [raw]
Subject: Re: [PATCH] soc/tegra: fuse: Export tegra_get_platform() & tegra_is_silicon()

On Mon, Sep 26, 2022 at 03:35:59PM +0530, Kartik wrote:
> Functions tegra_get_platform() and tegra_is_silicon() are required
> for pre-silicon development to correctly identify the platform on
> which the software is running.
>
> Export tegra_get_platform() and tegra_is_silicon(), so they can be
> used for pre-slicon development of device drivers and kernel space
> tests.
>
> Signed-off-by: Kartik <[email protected]>
> ---
> drivers/soc/tegra/fuse/tegra-apbmisc.c | 2 ++
> 1 file changed, 2 insertions(+)

Hi Arnd, Olof,

can you take a quick look at this and provide some feedback regarding
acceptance? It's slightly unorthodox because the only in-tree users of
these functions are built-in drivers and early code, so they don't
technically need to be exported for strictly in-kernel users. However,
we do see these used quite frequently in pre-silicon development and
having these available upstream would help with internal kernel
transitions and so on. We may also see them used more commonly in
upstream drivers in the future.

Thierry

> diff --git a/drivers/soc/tegra/fuse/tegra-apbmisc.c b/drivers/soc/tegra/fuse/tegra-apbmisc.c
> index 3351bd872ab2..904797f651a1 100644
> --- a/drivers/soc/tegra/fuse/tegra-apbmisc.c
> +++ b/drivers/soc/tegra/fuse/tegra-apbmisc.c
> @@ -56,6 +56,7 @@ u8 tegra_get_platform(void)
> {
> return (tegra_read_chipid() >> 20) & 0xf;
> }
> +EXPORT_SYMBOL(tegra_get_platform);
>
> bool tegra_is_silicon(void)
> {
> @@ -76,6 +77,7 @@ bool tegra_is_silicon(void)
> */
> return true;
> }
> +EXPORT_SYMBOL(tegra_is_silicon);
>
> u32 tegra_read_straps(void)
> {
> --
> 2.17.1
>


Attachments:
(No filename) (1.65 kB)
signature.asc (849.00 B)
Download all attachments

2022-10-20 10:18:08

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH] soc/tegra: fuse: Export tegra_get_platform() & tegra_is_silicon()

On Thu, Oct 20, 2022, at 11:54, Thierry Reding wrote:
> On Mon, Sep 26, 2022 at 03:35:59PM +0530, Kartik wrote:
>> Functions tegra_get_platform() and tegra_is_silicon() are required
>> for pre-silicon development to correctly identify the platform on
>> which the software is running.
>>
>> Export tegra_get_platform() and tegra_is_silicon(), so they can be
>> used for pre-slicon development of device drivers and kernel space
>> tests.
>>
>> Signed-off-by: Kartik <[email protected]>
>> ---
>> drivers/soc/tegra/fuse/tegra-apbmisc.c | 2 ++
>> 1 file changed, 2 insertions(+)
>
> Hi Arnd, Olof,
>
> can you take a quick look at this and provide some feedback regarding
> acceptance? It's slightly unorthodox because the only in-tree users of
> these functions are built-in drivers and early code, so they don't
> technically need to be exported for strictly in-kernel users. However,
> we do see these used quite frequently in pre-silicon development and
> having these available upstream would help with internal kernel
> transitions and so on. We may also see them used more commonly in
> upstream drivers in the future.

Hi Thierry and Kartik,

Have you looked at using soc_device_match() instead?

As long as the information is part of the soc_device_attribute
prvoided by the soc info driver, any other kernel driver should
be able to just use string matching to get what you need here.

Arnd

2022-10-20 14:19:45

by Thierry Reding

[permalink] [raw]
Subject: Re: [PATCH] soc/tegra: fuse: Export tegra_get_platform() & tegra_is_silicon()

On Thu, Oct 20, 2022 at 11:57:39AM +0200, Arnd Bergmann wrote:
> On Thu, Oct 20, 2022, at 11:54, Thierry Reding wrote:
> > On Mon, Sep 26, 2022 at 03:35:59PM +0530, Kartik wrote:
> >> Functions tegra_get_platform() and tegra_is_silicon() are required
> >> for pre-silicon development to correctly identify the platform on
> >> which the software is running.
> >>
> >> Export tegra_get_platform() and tegra_is_silicon(), so they can be
> >> used for pre-slicon development of device drivers and kernel space
> >> tests.
> >>
> >> Signed-off-by: Kartik <[email protected]>
> >> ---
> >> drivers/soc/tegra/fuse/tegra-apbmisc.c | 2 ++
> >> 1 file changed, 2 insertions(+)
> >
> > Hi Arnd, Olof,
> >
> > can you take a quick look at this and provide some feedback regarding
> > acceptance? It's slightly unorthodox because the only in-tree users of
> > these functions are built-in drivers and early code, so they don't
> > technically need to be exported for strictly in-kernel users. However,
> > we do see these used quite frequently in pre-silicon development and
> > having these available upstream would help with internal kernel
> > transitions and so on. We may also see them used more commonly in
> > upstream drivers in the future.
>
> Hi Thierry and Kartik,
>
> Have you looked at using soc_device_match() instead?
>
> As long as the information is part of the soc_device_attribute
> prvoided by the soc info driver, any other kernel driver should
> be able to just use string matching to get what you need here.

The values that we stash into the struct soc_device_attribute for Tegra
are not very useful for this purpose. If there's no concern about back-
wards compatibility, perhaps that could be changed. I could imagine that
we could store some "simulation" string as a special case into the
revision attribute. Any "revision" that doesn't match "simulation" could
then be considered to be "silicon".

We don't populate "machine" at all it seems, but I'm not sure it would
be a good fit for this anyway.

Kartik, Jon, I wonder if we're really also interested in the platform or
if we export that primarily because it's needed by tegra_is_silicon(). I
see derivatives used in certain cases, but perhaps they can be
represented by other special "revision" strings?

Thierry


Attachments:
(No filename) (2.29 kB)
signature.asc (849.00 B)
Download all attachments