mbox series

[00/12] Add minimal support for Exynos850 SoC

Message ID 20210730144922.29111-1-semen.protsenko@linaro.org
Headers show
Series Add minimal support for Exynos850 SoC | expand

Message

Sam Protsenko July 30, 2021, 2:49 p.m. UTC
This patch series adds initial platform support for Samsung Exynos850
SoC [1]. With this patchset it's possible to run the kernel with BusyBox
rootfs as a RAM disk. More advanced platform support (like MMC driver
additions) will be added later. The idea is to keep the first submission
minimal to ease the review, and then build up on top of that.

[1] https://www.samsung.com/semiconductor/minisite/exynos/products/mobileprocessor/exynos-850/

Jaehyoung Choi (1):
  pinctrl: samsung: Fix pinctrl bank pin count

Sam Protsenko (11):
  pinctrl: samsung: Add Exynos850 SoC specific data
  dt-bindings: pinctrl: samsung: Add Exynos850 doc
  tty: serial: samsung: Init USI to keep clocks running
  tty: serial: samsung: Fix driver data macros style
  tty: serial: samsung: Add Exynos850 SoC data
  dt-bindings: serial: samsung: Add Exynos850 doc
  MAINTAINERS: Cover Samsung clock YAML bindings
  dt-bindings: clock: Add bindings for Exynos850 clock controller
  clk: samsung: Add Exynos850 clock driver stub
  dt-bindings: interrupt-controller: Add IRQ constants for Exynos850
  arm64: dts: exynos: Add Exynos850 SoC support

 .../bindings/clock/exynos850-clock.yaml       |  70 ++
 .../bindings/pinctrl/samsung-pinctrl.txt      |   1 +
 .../bindings/serial/samsung_uart.yaml         |   1 +
 MAINTAINERS                                   |   3 +-
 .../boot/dts/exynos/exynos850-pinctrl.dtsi    | 782 ++++++++++++++++++
 arch/arm64/boot/dts/exynos/exynos850-usi.dtsi |  30 +
 arch/arm64/boot/dts/exynos/exynos850.dtsi     | 245 ++++++
 drivers/clk/samsung/Makefile                  |   1 +
 drivers/clk/samsung/clk-exynos850.c           |  63 ++
 .../pinctrl/samsung/pinctrl-exynos-arm64.c    | 129 +++
 drivers/pinctrl/samsung/pinctrl-exynos.h      |  29 +
 drivers/pinctrl/samsung/pinctrl-samsung.c     |   4 +-
 drivers/pinctrl/samsung/pinctrl-samsung.h     |   1 +
 drivers/tty/serial/samsung_tty.c              |  50 +-
 include/dt-bindings/clock/exynos850.h         | 267 ++++++
 .../interrupt-controller/exynos850.h          | 290 +++++++
 include/linux/serial_s3c.h                    |   9 +
 17 files changed, 1970 insertions(+), 5 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/clock/exynos850-clock.yaml
 create mode 100644 arch/arm64/boot/dts/exynos/exynos850-pinctrl.dtsi
 create mode 100644 arch/arm64/boot/dts/exynos/exynos850-usi.dtsi
 create mode 100644 arch/arm64/boot/dts/exynos/exynos850.dtsi
 create mode 100644 drivers/clk/samsung/clk-exynos850.c
 create mode 100644 include/dt-bindings/clock/exynos850.h
 create mode 100644 include/dt-bindings/interrupt-controller/exynos850.h

Comments

Krzysztof Kozlowski July 30, 2021, 4:34 p.m. UTC | #1
On 30/07/2021 16:49, Sam Protsenko wrote:
> Make checkpatch happy by fixing this error:
> 
>     ERROR: Macros with complex values should be enclosed in parentheses
> 
> Although this change is made to keep macros consistent with consequent
> patches (adding driver data for new SoC), it's intentionally added as a
> separate patch to ease possible porting efforts in future.
> 
> Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org>
> ---
>  drivers/tty/serial/samsung_tty.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 


Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>


Best regards,
Krzysztof
Krzysztof Kozlowski July 30, 2021, 5:21 p.m. UTC | #2
On 30/07/2021 17:18, Krzysztof Kozlowski wrote:
> On 30/07/2021 16:49, Sam Protsenko wrote:
>> This patch series adds initial platform support for Samsung Exynos850
>> SoC [1]. With this patchset it's possible to run the kernel with BusyBox
>> rootfs as a RAM disk. More advanced platform support (like MMC driver
>> additions) will be added later. The idea is to keep the first submission
>> minimal to ease the review, and then build up on top of that.
>>
>> [1] https://www.samsung.com/semiconductor/minisite/exynos/products/mobileprocessor/exynos-850/
>>
> 
> Great work!
> 
> What's the SoC revision number (should be accessible via
> /sys/bus/soc/devices/soc0/)? Recent wrap in numbering of Exynos chips
> might bring confusion...

Judging by vendor's sources it is quite confusing. It looks mostly like
Exynos3830 but in few other cases it uses Exynos9 compatibles (Exynos9,
Exynos9820). Only in few places there is Exynos850. Marketing department
made it so confusing...  The revision embedded in SoC would be very
interesting.

Anyway, judging by current versioning, there is a risk Samsung will come
with a new chipset name conflicting with existing ones. It already
overflowed.

It's even worse with a thingy called "Exynos9 auto" which hides
numbering even more.


Best regards,
Krzysztof
Sam Protsenko Aug. 2, 2021, 11:27 p.m. UTC | #3
On Sat, 31 Jul 2021 at 11:12, Krzysztof Kozlowski
<krzysztof.kozlowski@canonical.com> wrote:
>
> On 31/07/2021 09:29, Krzysztof Kozlowski wrote:
> > On 30/07/2021 21:02, Sam Protsenko wrote:
> >> Hi Krzysztof,
> >>
> >> On Fri, 30 Jul 2021 at 20:21, Krzysztof Kozlowski
> >> <krzysztof.kozlowski@canonical.com> wrote:
> >>>
> >>> On 30/07/2021 17:18, Krzysztof Kozlowski wrote:
> >>>> On 30/07/2021 16:49, Sam Protsenko wrote:
> >>>>> This patch series adds initial platform support for Samsung Exynos850
> >>>>> SoC [1]. With this patchset it's possible to run the kernel with BusyBox
> >>>>> rootfs as a RAM disk. More advanced platform support (like MMC driver
> >>>>> additions) will be added later. The idea is to keep the first submission
> >>>>> minimal to ease the review, and then build up on top of that.
> >>>>>
> >>>>> [1] https://www.samsung.com/semiconductor/minisite/exynos/products/mobileprocessor/exynos-850/
> >>>>>
> >>>>
> >>>> Great work!
> >>>>
> >>
> >> Thanks, Krzysztof! And thank you for reviewing the whole series.
> >>
> >>>> What's the SoC revision number (should be accessible via
> >>>> /sys/bus/soc/devices/soc0/)? Recent wrap in numbering of Exynos chips
> >>>> might bring confusion...
> >>
> >> # cat /sys/devices/soc0/revision
> >> 0
> >
> > soc_id but you're right it won't be set for unknown SoCs. You need to
> > extend drivers/soc/samsung/exynos-chipid.c to parse new values (E3830000
> > for product ID) and maybe new register offsets (previous offset is 0x0,
> > for 3830 is 0x10 I think). Also revision mask might change.
> >
> >>> Judging by vendor's sources it is quite confusing. It looks mostly like
> >>> Exynos3830 but in few other cases it uses Exynos9 compatibles (Exynos9,
> >>> Exynos9820). Only in few places there is Exynos850. Marketing department
> >>> made it so confusing...  The revision embedded in SoC would be very
> >>> interesting.
> >>>
> >>
> >> As I understand, this SoC is called Exynos850 everywhere now.
> >> Exynos3830 is its old name, not used anymore. As you noticed from
> >> patch #2, it shares some definitions with Exynos9 SoC, so I guess some
> >> software is similar for both architectures. Not sure about hardware
> >> though, never worked with Exynos9 CPUs. Anyway, I asked Samsung
> >> representatives about naming, and it seems like we should stick to
> >> "Exynos850" name, even in code.
> >
> >
> > Since the chip identifies itself as E3830000, I would prefer naming
> > matching real product ID instead of what is pushed by marketing or sales
> > representatives. The marketing names don't have to follow any
> > engineering rules, they can be changed and renamed. Sales follows rather
> > money and corporate rules, not consistency for upstream project.
>
> On the other hand we have already two exceptions for naming
> inconsistency - Exynos3250 identifies itself as 3472 (which is confusing
> because 3250 is two core and there is a separate quad-core
> Exyons3472...) and Exynos5800 is actually marketing name for a revision
> of Exynos5422. Maybe indeed will be easier to go with the branded name
> 850...
>

Well, chip engraving says "3830", but I was specifically told to stick
to "850" in upstream kernel. I can presume there was some mix ups with
this naming, and it might be the case it's better to stick to "850"
exactly to avoid further confusion. Yes, I can see that
EXYNOS3830_SOC_ID = 0xE3830000 in chipid driver, but we can return
"EXYNOS850" string for that const, right? If you google "Exynos850"
and "Exynos3830", it's obvious everybody uses the former, so I'd
appreciate if we can stick to "850" in the end.

>
> Best regards,
> Krzysztof
Krzysztof Kozlowski Aug. 3, 2021, 7:41 a.m. UTC | #4
On 03/08/2021 01:27, Sam Protsenko wrote:
> On Sat, 31 Jul 2021 at 11:12, Krzysztof Kozlowski

> <krzysztof.kozlowski@canonical.com> wrote:

>>

>> On 31/07/2021 09:29, Krzysztof Kozlowski wrote:

>>> On 30/07/2021 21:02, Sam Protsenko wrote:

>>>> Hi Krzysztof,

>>>>

>>>> On Fri, 30 Jul 2021 at 20:21, Krzysztof Kozlowski

>>>> <krzysztof.kozlowski@canonical.com> wrote:

>>>>>

>>>>> On 30/07/2021 17:18, Krzysztof Kozlowski wrote:

>>>>>> On 30/07/2021 16:49, Sam Protsenko wrote:

>>>>>>> This patch series adds initial platform support for Samsung Exynos850

>>>>>>> SoC [1]. With this patchset it's possible to run the kernel with BusyBox

>>>>>>> rootfs as a RAM disk. More advanced platform support (like MMC driver

>>>>>>> additions) will be added later. The idea is to keep the first submission

>>>>>>> minimal to ease the review, and then build up on top of that.

>>>>>>>

>>>>>>> [1] https://www.samsung.com/semiconductor/minisite/exynos/products/mobileprocessor/exynos-850/

>>>>>>>

>>>>>>

>>>>>> Great work!

>>>>>>

>>>>

>>>> Thanks, Krzysztof! And thank you for reviewing the whole series.

>>>>

>>>>>> What's the SoC revision number (should be accessible via

>>>>>> /sys/bus/soc/devices/soc0/)? Recent wrap in numbering of Exynos chips

>>>>>> might bring confusion...

>>>>

>>>> # cat /sys/devices/soc0/revision

>>>> 0

>>>

>>> soc_id but you're right it won't be set for unknown SoCs. You need to

>>> extend drivers/soc/samsung/exynos-chipid.c to parse new values (E3830000

>>> for product ID) and maybe new register offsets (previous offset is 0x0,

>>> for 3830 is 0x10 I think). Also revision mask might change.

>>>

>>>>> Judging by vendor's sources it is quite confusing. It looks mostly like

>>>>> Exynos3830 but in few other cases it uses Exynos9 compatibles (Exynos9,

>>>>> Exynos9820). Only in few places there is Exynos850. Marketing department

>>>>> made it so confusing...  The revision embedded in SoC would be very

>>>>> interesting.

>>>>>

>>>>

>>>> As I understand, this SoC is called Exynos850 everywhere now.

>>>> Exynos3830 is its old name, not used anymore. As you noticed from

>>>> patch #2, it shares some definitions with Exynos9 SoC, so I guess some

>>>> software is similar for both architectures. Not sure about hardware

>>>> though, never worked with Exynos9 CPUs. Anyway, I asked Samsung

>>>> representatives about naming, and it seems like we should stick to

>>>> "Exynos850" name, even in code.

>>>

>>>

>>> Since the chip identifies itself as E3830000, I would prefer naming

>>> matching real product ID instead of what is pushed by marketing or sales

>>> representatives. The marketing names don't have to follow any

>>> engineering rules, they can be changed and renamed. Sales follows rather

>>> money and corporate rules, not consistency for upstream project.

>>

>> On the other hand we have already two exceptions for naming

>> inconsistency - Exynos3250 identifies itself as 3472 (which is confusing

>> because 3250 is two core and there is a separate quad-core

>> Exyons3472...) and Exynos5800 is actually marketing name for a revision

>> of Exynos5422. Maybe indeed will be easier to go with the branded name

>> 850...

>>

> 

> Well, chip engraving says "3830", but I was specifically told to stick

> to "850" in upstream kernel. I can presume there was some mix ups with

> this naming, and it might be the case it's better to stick to "850"

> exactly to avoid further confusion. Yes, I can see that

> EXYNOS3830_SOC_ID = 0xE3830000 in chipid driver, but we can return

> "EXYNOS850" string for that const, right? If you google "Exynos850"

> and "Exynos3830", it's obvious everybody uses the former, so I'd

> appreciate if we can stick to "850" in the end.


Yeah, let it be. If you have some pushback from some company
representatives about naming, encourage them to speak up here. Otherwise
you will be the guy in the middle bringing arguments between different
parties. :)


Best regards,
Krzysztof