[PATCH v2 00/20] Add minimal Tensor/GS101 SoC support and Oriole/Pixel6 board
Krzysztof Kozlowski
krzysztof.kozlowski at linaro.org
Mon Nov 6 05:46:35 PST 2023
On 06/11/2023 13:46, Peter Griffin wrote:
>>
>> Also, what kind of Google IP are you talking about? I believe only the
>> neural accelerator should be custom-ish.
>
> This should not be considered an exhaustive list, but whilst looking in the
> downstream public drivers at least the following Google IPs in the SoC
>
> TPU/ML accelerator
> Bigocean av1 video accelerator
> Emerald hill compression engine
> Camera ISP blocks
> (AoC) Always on Compute
>
> Plus of course Arm IPs (CPU+GPU), Synopsis IPs (USB, PCI. phys) etc.
These are all common to Exynos and usually they use Exynos-specific
glue, so we consider them all Exynos-specific.
>
> The Exynos based IPs tend to be for things like pinmux, clocks, i2c, spi,
> uart, mfc, display controller, timer etc.
>
>>
>> Additionally, I believe it having or not having Google IP is irrelevant:
>> for example, the new Raspberry Pi 5 Broadcom SoC has a lot of
>> Raspberry's own IP, but it's still called Broadcom as it's the real
>> manufacturer and designer of the chip.
>
> I think RPi / Broadcom is a very different situation to this. The original SoC
> in RPi 1 was wholly designed by Broadcom, and marketed as a Broadcom
> SoC [1].
>
> Further iterations of the SoC until now have also not had RPi IP integrated.
> RPi themselves refer to them as "Broadcom SoCs" on their webpage [2],
> so it is completely expected that they live in a broadcom directory.
>
> BCM2717 has integrated the RPi ISP, but to all intents and purposes this is a
> Broadcom owned and designed SoC, albeit only now sold to one customer.
Not that different.
Broadcom designed previous chip.
Samsung designed previous chip.
Broadcom designed BCM2717 with RPi ISP.
Samsung designed GS101 with Tensor NPU and other blocks.
>>>
>>> I guess the same is also true for `axis,artpec8` and `tesla,fsd` SoCs.
>>> IMO the SoC compatible string should be uniquely identifying the actual
>>> SoC, not a close relative.
>>>
>>> Regarding product_id you are correct this reads 0x09845000 but even
>>> within Samsung Exynos family there are examples where the register
>>> value does not match the SoC compatible. For example Exynos850 SoC
>>> has a product ID value of "E3830". Where the Linux compatible is
>>> matching the Samsung marketing name, not the internal/outdated name.
>>
>> I did not know Exynos 850 is also not going under it's real name.
>
> It is going by its real name :) just not by its internal name that nobody has
> heard of.
>
>> Ultimately, I believe all of those SoCs should go under their technical
>> name in the exynos/ directory.
>>
>> Another concern is that Google could in the future license other SoC: be
>> it Qualcomm, Nvidia or anything. If we put completely different hw under
>> google/ directory, does it really make sense? In that case, who'll
>> maintain the google/ directory? Exynos people? Qualcomm people if they
>> license it? Some other people?
>
> I expect Google, or Google sponsored devs (as is the case for Linaro) to be
> helping maintain the Google SoCs upstream. See the MAINTAINERS entry
> for this series of who I expect to maintain this google directory.
That's fine. What I don't agree is with putting it into Google, because
Google wants to have all its phones in one place. That's not the
argument we used for any other SoCs or products.
We do not make decisions based on marketing or packaging wishes of some
company. Otherwise Samsung phones will be together. Toradex boards (also
spanning over NXP and TI) as well. Chromebooks DTS as well (oh, Doug
would be happy, I guess :) ). And so on.
>
>>
>> Then, I don't think Tensor G3 has a proper "GS" name, it goes by "Zuma"
>> in decompiled kernel modules as far as I see.
>
> That is correct, it is named Zuma downstream and they did away with the
> gs101, gs201 type naming scheme.
>
>>
>> Finally, Tesla people already tried to submit drivers called by Tesla
>> name, but which basically copied the functionality of the Exynos
>> drivers. We would want to avoid that, ideally.
>
> As you can see from this series we are not proposing that. Any IPs that
> use Exynos IP we are using the existing upstream driver and enhance
> it where we have features that aren't present upstream.
>
>>
>> My opinion is that all the Tesla and Google SoCs should be in the
>> exynos/ directory, not only because they are basically Samsung Exynos,
>> but also because they don't really need a separate directory: neither
>> Google nor Tesla didn't neither manufacture or design those SoCs from
>> scratch.
>
> Who manufactures it seems irrelevant. Qcom and Broadcom don't
> manufacture their SoCs either, but they still live in qcom and broadcom
> directories upstream. Whether they designed the SoC from scratch or not
> is also IMO largely irrelevant. In many cases the upstream community
> has no way to determine whether things were outsourced or not anyway.
> Did Apple outsource things in their silicon design? Who knows, and why
> do we care? It's an apple branded chip in an apple branded product
> let's call the directory apple.
>
> Interestingly apple uses the same uart driver as Tensor, when I check back
> through the commits in the driver.
>
> fcbba344907afe26da487f1ed0b0e285c06a547b
>
> tty: serial: samsung_tty: Add support for Apple UARTs
>
> Apple SoCs are a distant descendant of Samsung designs and use yet
> another variant of their UART style, with different interrupt handling.
>
>
>> The only reason I can think of for them to have it in a
>> separate directory is maybe because Google and Tesla actually paid
>> Samsung money for the right to call Exynos "Google designed" SoCs, but I
>> believe the kernel should be left out of that.
>
> Also the fact that they contain IPs not found in Samsung designed devices,
> aren't known to most people as Exynos, and the maintenance issues of
> having all the Google, Tesla, Axis, Exynos based SoCs in the same directory
> (and who knows how many other ASIC customers in the future).
>
> Ultimately it is Krzysztof's decision I think. I followed what he had previously
> accepted for other SoCs for consistency and also because it seemed like the
> correct approach to help scale up and ease the maintenance burden. If I look
> at the number of tensor based SoCs, phones per SoC and board variants per
> phone model, then you end up having a lot of files in the exynos directory over
> time.
I agreed on Tesla FSD in its own place mainly because of arguments
provided that time: it's entirely different architecture. These
arguments were not backed by actual facts or proofs, though. The
upstreamed parts of FSD turned out to be... only Exynos specific. There
is literally nothing non-Exynos in upstream. Therefore knowing the
outcome I would say: put FSD into samsung directory.
About GS101 I have the same questions - how similar it is? I am pretty
sure that 95% of upstreamed code (DTS and drivers) will be Exynos-like
(except for missing upstream support for generations of Exynos SoC!).
But I cannot really judge and I am not going to investigate downstream
code to figure this out. Thus if you insist that SoC architecture and
core features are quite different from Exynos family, then sure, I can
live with it.
Best regards,
Krzysztof
More information about the linux-arm-kernel
mailing list