Add support for SAMA7D65
Subsystems (13)
v3 cover Add support for SAMA7D65
From: Ryan Wanner <[email protected]>
This series adds support for the SAMA7D65 SoC.
V2 of this series [1].
For the pinctrl and pit64 timers those will have DTB warnings due to those bindings not being in the .yaml format.
Changes v1->v2:
- V1 set was sent incorrectly as multiple seprate patches v2 took all those patches and put them in 1 thread.
Changes v2->v3:
- Correct the patch order to follow correct practice.
- Correct flexcom dt-binding commit messge to reflect the changes in the coding style.
- Add missing SoB tags to patches.
- Moved export clocks to DT patch to be included with the clock binding patch.
- Separate Kconfig changes and defconfig changes into different patches and removed unused Kconfig params.
- Correct confusing SoB and Co-developed chain.
- Removed unsued nodes in DTSI file and sorted includes alphanumerically.
- Fix incorrect dts formatting.
- Separate dts and pinmux changes into two patches.
- Combine PLL and MCK changes into core clock driver patch.
- Correct formatting in main clock driver.
- MMC dt-binding changes are applied for next so have been removed from the set [2].
1) https://lore.kernel.org/linux-arm-kernel/[email protected]/T/#m9691b4d58b62f36f6cbac1d06883c985766c2c0d
2) https://lore.kernel.org/linux-arm-kernel/[email protected]/T/#mccf6521c07e74e1c7dc61b09ae0ebdbbdde73a28
Dharma Balasubiramani (6):
dt-bindings: mfd: atmel,sama5d2-flexcom: add
microchip,sama7d65-flexcom
dt-bindings: atmel-sysreg: add sama7d65 RAM and PIT
dt-bindings: serial: atmel,at91-usart: add microchip,sama7d65-usart
dt-bindings: pinctrl: at91-pio4: add microchip,sama7d65-pinctrl
dt-bindings: clocks: atmel,at91sam9x5-sckc: add sama7d65
dt-bindings: clock: Add SAMA7D65 PMC compatible string
Romain Sioen (2):
dt-bindings: ARM: at91: Document Microchip SAMA7D65 Curiosity
ARM: dts: microchip: add support for sama7d65_curiosity board
Ryan Wanner (5):
clk: at91: sama7d65: add sama7d65 pmc driver
ARM: dts: microchip: add sama7d65 SoC DT
ARM: dts: at91: Add sama7d65 pinmux
ARM: configs: at91: sama7: add new SoC config
ARM: at91: add new SoC sama7d65
.../devicetree/bindings/arm/atmel-at91.yaml | 7 + .../devicetree/bindings/arm/atmel-sysregs.txt | 14 +- .../bindings/clock/atmel,at91rm9200-pmc.yaml | 2 + .../bindings/clock/atmel,at91sam9x5-sckc.yaml | 1 + .../bindings/mfd/atmel,sama5d2-flexcom.yaml | 9 +- .../pinctrl/atmel,at91-pio4-pinctrl.txt | 1 + .../bindings/serial/atmel,at91-usart.yaml | 1 + arch/arm/boot/dts/microchip/Makefile | 3 + .../dts/microchip/at91-sama7d65_curiosity.dts | 89 ++ .../arm/boot/dts/microchip/sama7d65-pinfunc.h | 947 ++++++++++++ arch/arm/boot/dts/microchip/sama7d65.dtsi | 145 ++ arch/arm/configs/multi_v7_defconfig | 1 + arch/arm/configs/sama7_defconfig | 1 + arch/arm/mach-at91/Kconfig | 9 + drivers/clk/at91/Makefile | 1 + drivers/clk/at91/clk-master.c | 2 +- drivers/clk/at91/clk-sam9x60-pll.c | 2 +- drivers/clk/at91/pmc.c | 1 + drivers/clk/at91/sama7d65.c | 1373 +++++++++++++++++ include/dt-bindings/clock/at91.h | 4 + 20 files changed, 2600 insertions(+), 13 deletions(-) create mode 100644 arch/arm/boot/dts/microchip/at91-sama7d65_curiosity.dts create mode 100644 arch/arm/boot/dts/microchip/sama7d65-pinfunc.h create mode 100644 arch/arm/boot/dts/microchip/sama7d65.dtsi create mode 100644 drivers/clk/at91/sama7d65.c
Signature · 1 line
2.43.0
PATCH v3 1/13 dt-bindings: ARM: at91: Document Microchip SAMA7D65 Curiosity
From: Romain Sioen <[email protected]>
Document device tree binding of the Microchip SAMA7D65 Curiosity board.
--- Documentation/devicetree/bindings/arm/atmel-at91.yaml | 7 +++++++ 1 file changed, 7 insertions(+)
Documentation/devicetree/bindings/arm/atmel-at91.yaml +7 -0
@@ -180,6 +180,13 @@ properties: - const: atmel,sama5d4 - const: atmel,sama5 + - description: Microchip SAMA7D65 Curiosity Board + items: + - const: microchip,sama7d65-curiosity + - const: microchip,sama7d65 + - const: microchip,sama7d6 + - const: microchip,sama7 + - items: - const: microchip,sama7g5ek # SAMA7G5 Evaluation Kit - const: microchip,sama7g5
Signature · 1 line
2.43.0
Re: [PATCH v3 01/13] dt-bindings: ARM: at91: Document Microchip SAMA7D65 Curiosity
Quoted 9 lines · On 06.12.2024 21:59, [email protected] wrote:
From: Romain Sioen <[email protected]>
Document device tree binding of the Microchip SAMA7D65 Curiosity board.
Signed-off-by Romain Sioen <[email protected]>Acked-by Nicolas Ferre <[email protected]>Signed-off-by Dharma Balasubiramani <[email protected]>Signed-off-by Ryan Wanner <[email protected]>Acked-by Conor Dooley <[email protected]>
Quoted 22 lines
--- Documentation/devicetree/bindings/arm/atmel-at91.yaml | 7 +++++++ 1 file changed, 7 insertions(+)Documentation/devicetree/bindings/arm/atmel-at91.yaml +7
-0@@ -180,6 +180,13 @@ properties: - const: atmel,sama5d4 - const: atmel,sama5 + - description: Microchip SAMA7D65 Curiosity Board + items: + - const: microchip,sama7d65-curiosity + - const: microchip,sama7d65 + - const: microchip,sama7d6 + - const: microchip,sama7 + - items: - const: microchip,sama7g5ek # SAMA7G5 Evaluation Kit - const: microchip,sama7g5
PATCH v3 2/13 dt-bindings: mfd: atmel,sama5d2-flexcom: add microchip,sama7d65-flexcom
In reply to [email protected]From: Dharma Balasubiramani <[email protected]>
Add flexcom binding documentation for sama7d65.
Consolidated entries into one enum to match proper coding style.
--- .../devicetree/bindings/mfd/atmel,sama5d2-flexcom.yaml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
Documentation/devicetree/bindings/mfd/atmel,sama5d2-flexcom.yaml +4 -5
@@ -19,12 +19,11 @@ properties: oneOf: - const: atmel,sama5d2-flexcom - items: - - const: microchip,sam9x7-flexcom + - enum: + - microchip,sam9x7-flexcom + - microchip,sama7d65-flexcom + - microchip,sama7g5-flexcom - const: atmel,sama5d2-flexcom - - items: - - const: microchip,sama7g5-flexcom - - const: atmel,sama5d2-flexcom - reg: maxItems: 1
Signature · 1 line
2.43.0
Re: [PATCH v3 02/13] dt-bindings: mfd: atmel,sama5d2-flexcom: add microchip,sama7d65-flexcom
Quoted 4 lines · On Fri, Dec 06, 2024 at 12:59:47PM -0700, [email protected] wrote:
From: Dharma Balasubiramani <[email protected]>
Add flexcom binding documentation for sama7d65.
Quoted 8 lines
Consolidated entries into one enum to match proper coding style.
Signed-off-by Dharma Balasubiramani <[email protected]>Signed-off-by Ryan Wanner <[email protected]>--- .../devicetree/bindings/mfd/atmel,sama5d2-flexcom.yaml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
Best regards,
Krzysztof
PATCH v3 3/13 dt-bindings: atmel-sysreg: add sama7d65 RAM and PIT
In reply to [email protected]From: Dharma Balasubiramani <[email protected]>
Add SAMA7D65 RAM controller, PIT64 DT bindings.
--- .../devicetree/bindings/arm/atmel-sysregs.txt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-)
Documentation/devicetree/bindings/arm/atmel-sysregs.txt +8 -6
@@ -13,6 +13,7 @@ PIT Timer required properties: PIT64B Timer required properties: - compatible: Should be "microchip,sam9x60-pit64b" or "microchip,sam9x7-pit64b", "microchip,sam9x60-pit64b" + "microchip,sama7d65-pit64b", "microchip,sam9x60-pit64b" - reg: Should contain registers location and length - interrupts: Should contain interrupt for PIT64B timer - clocks: Should contain the available clock sources for PIT64B timer.
@@ -27,12 +28,13 @@ Its subnodes can be: - watchdog: compatible should be "atmel,at91rm9200-wdt" RAMC SDRAM/DDR Controller required properties: -- compatible: Should be "atmel,at91rm9200-sdramc", "syscon" - "atmel,at91sam9260-sdramc", - "atmel,at91sam9g45-ddramc", - "atmel,sama5d3-ddramc", - "microchip,sam9x60-ddramc", - "microchip,sama7g5-uddrc", +- compatible: Should be "atmel,at91rm9200-sdramc", "syscon" or + "atmel,at91sam9260-sdramc" or + "atmel,at91sam9g45-ddramc" or + "atmel,sama5d3-ddramc" or + "microchip,sam9x60-ddramc" or + "microchip,sama7g5-uddrc" or + "microchip,sama7d65-uddrc","microchip,sama7g5-uddrc" or "microchip,sam9x7-ddramc", "atmel,sama5d3-ddramc". - reg: Should contain registers location and length
Signature · 1 line
2.43.0
Re: [PATCH v3 03/13] dt-bindings: atmel-sysreg: add sama7d65 RAM and PIT
Quoted 29 lines · On 06.12.2024 21:59, [email protected] wrote:
From: Dharma Balasubiramani <[email protected]>
Add SAMA7D65 RAM controller, PIT64 DT bindings.
Signed-off-by Dharma Balasubiramani <[email protected]>Signed-off-by Ryan Wanner <[email protected]>--- .../devicetree/bindings/arm/atmel-sysregs.txt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-)Documentation/devicetree/bindings/arm/atmel-sysregs.txt +1
-3@@ -13,6 +13,7 @@ PIT Timer required properties: PIT64B Timer required properties: - compatible: Should be "microchip,sam9x60-pit64b" or "microchip,sam9x7-pit64b", "microchip,sam9x60-pit64b" + "microchip,sama7d65-pit64b", "microchip,sam9x60-pit64b" - reg: Should contain registers location and length - interrupts: Should contain interrupt for PIT64B timer - clocks: Should contain the available clock sources for PIT64B timer.@@ -27,12 +28,13 @@ Its subnodes can be: - watchdog: compatible should be "atmel,at91rm9200-wdt" RAMC SDRAM/DDR Controller required properties: -- compatible: Should be "atmel,at91rm9200-sdramc", "syscon" - "atmel,at91sam9260-sdramc", - "atmel,at91sam9g45-ddramc",
Documentation/devicetree/bindings/arm/atmel-sysregs.txt Its subnodes can be: · line 37
Quoted 10 lines
Documentation/devicetree/bindings/arm/atmel-sysregs.txt +7
-3- "atmel,sama5d3-ddramc", - "microchip,sam9x60-ddramc", - "microchip,sama7g5-uddrc", +- compatible: Should be "atmel,at91rm9200-sdramc", "syscon" or + "atmel,at91sam9260-sdramc" or + "atmel,at91sam9g45-ddramc" or + "atmel,sama5d3-ddramc" or + "microchip,sam9x60-ddramc" or + "microchip,sama7g5-uddrc" or + "microchip,sama7d65-uddrc","microchip,sama7g5-uddrc" or
Missing space here --------------------------------^
I'll adjust it while applying.
Quoted 3 lines
Documentation/devicetree/bindings/arm/atmel-sysregs.txt +0
-0"microchip,sam9x7-ddramc", "atmel,sama5d3-ddramc". - reg: Should contain registers location and length
Re: [PATCH v3 03/13] dt-bindings: atmel-sysreg: add sama7d65 RAM and PIT
In reply to [email protected]Quoted 10 lines · On Fri, 06 Dec 2024 12:59:48 -0700, [email protected] wrote:
From: Dharma Balasubiramani <[email protected]>
Add SAMA7D65 RAM controller, PIT64 DT bindings.
Signed-off-by Dharma Balasubiramani <[email protected]>Signed-off-by Ryan Wanner <[email protected]>--- .../devicetree/bindings/arm/atmel-sysregs.txt | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-)
PATCH v3 4/13 dt-bindings: serial: atmel,at91-usart: add microchip,sama7d65-usart
In reply to [email protected]From: Dharma Balasubiramani <[email protected]>
Add SAMA7D65 USART compatible to DT bindings documentation.
--- Documentation/devicetree/bindings/serial/atmel,at91-usart.yaml | 1 + 1 file changed, 1 insertion(+)
Documentation/devicetree/bindings/serial/atmel,at91-usart.yaml +1 -0
@@ -26,6 +26,7 @@ properties: - enum: - microchip,sam9x60-usart - microchip,sam9x7-usart + - microchip,sama7d65-usart - const: atmel,at91sam9260-usart - items: - const: microchip,sam9x60-dbgu
Signature · 1 line
2.43.0
Re: [PATCH v3 04/13] dt-bindings: serial: atmel,at91-usart: add microchip,sama7d65-usart
Quoted 10 lines · On Fri, 06 Dec 2024 12:59:49 -0700, [email protected] wrote:
From: Dharma Balasubiramani <[email protected]>
Add SAMA7D65 USART compatible to DT bindings documentation.
Signed-off-by Dharma Balasubiramani <[email protected]>Signed-off-by Ryan Wanner <[email protected]>--- Documentation/devicetree/bindings/serial/atmel,at91-usart.yaml | 1 + 1 file changed, 1 insertion(+)
PATCH v3 5/13 dt-bindings: pinctrl: at91-pio4: add microchip,sama7d65-pinctrl
In reply to [email protected]From: Dharma Balasubiramani <[email protected]>
Add pinctrl bindings for microchip sama7d65 SoC.
--- .../devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt | 1 + 1 file changed, 1 insertion(+)
Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt +1 -0
@@ -6,6 +6,7 @@ configure it. Required properties: - compatible: "atmel,sama5d2-pinctrl" + "microchip,sama7d65-pinctrl" "microchip,sama7g5-pinctrl" - reg: base address and length of the PIO controller. - interrupts: interrupt outputs from the controller, one for each bank.
Signature · 1 line
2.43.0
Re: [PATCH v3 05/13] dt-bindings: pinctrl: at91-pio4: add microchip,sama7d65-pinctrl
Quoted 10 lines · On Fri, 06 Dec 2024 12:59:50 -0700, [email protected] wrote:
From: Dharma Balasubiramani <[email protected]>
Add pinctrl bindings for microchip sama7d65 SoC.
Signed-off-by Dharma Balasubiramani <[email protected]>Signed-off-by Ryan Wanner <[email protected]>--- .../devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt | 1 + 1 file changed, 1 insertion(+)
PATCH v3 6/13 dt-bindings: clocks: atmel,at91sam9x5-sckc: add sama7d65
In reply to [email protected]From: Dharma Balasubiramani <[email protected]>
Add bindings for SAMA7D65's slow clock controller.
--- .../devicetree/bindings/clock/atmel,at91sam9x5-sckc.yaml | 1 + 1 file changed, 1 insertion(+)
Documentation/devicetree/bindings/clock/atmel,at91sam9x5-sckc.yaml +1 -0
@@ -20,6 +20,7 @@ properties: - items: - enum: - microchip,sam9x7-sckc + - microchip,sama7d65-sckc - microchip,sama7g5-sckc - const: microchip,sam9x60-sckc
Signature · 1 line
2.43.0
Re: [PATCH v3 06/13] dt-bindings: clocks: atmel,at91sam9x5-sckc: add sama7d65
Quoted 7 lines · On 06.12.2024 21:59, [email protected] wrote:
From: Dharma Balasubiramani <[email protected]>
Add bindings for SAMA7D65's slow clock controller.
Signed-off-by Dharma Balasubiramani <[email protected]>Signed-off-by Ryan Wanner <[email protected]>Acked-by Conor Dooley <[email protected]>
PATCH v3 7/13 dt-bindings: clock: Add SAMA7D65 PMC compatible string
In reply to [email protected]From: Dharma Balasubiramani <[email protected]>
Add the microchip,sama7d65-pmc compatible string to the existing binding, since the SAMA7D65 PMC shares the same properties and clock requirements as the SAMA7G5.
Export MCK3 and MCK5 to be accessed and referenced in DT to assign to the clocks property for sama7d65 SoC.
--- .../devicetree/bindings/clock/atmel,at91rm9200-pmc.yaml | 2 ++ include/dt-bindings/clock/at91.h | 4 ++++ 2 files changed, 6 insertions(+)
Documentation/devicetree/bindings/clock/atmel,at91rm9200-pmc.yaml +2 -0
@@ -43,6 +43,7 @@ properties: - atmel,sama5d4-pmc - microchip,sam9x60-pmc - microchip,sam9x7-pmc + - microchip,sama7d65-pmc - microchip,sama7g5-pmc - const: syscon
@@ -90,6 +91,7 @@ allOf: enum: - microchip,sam9x60-pmc - microchip,sam9x7-pmc + - microchip,sama7d65-pmc - microchip,sama7g5-pmc then: properties:
include/dt-bindings/clock/at91.h +4 -0
@@ -42,6 +42,10 @@#define PMC_PLLADIV2 (PMC_MAIN + 11)#define PMC_LVDSPLL (PMC_MAIN + 12) +/* SAMA7D65 */ +#define PMC_MCK3 (PMC_MAIN + 13) +#define PMC_MCK5 (PMC_MAIN + 14) +#ifndef AT91_PMC_MOSCS #define AT91_PMC_MOSCS 0/* MOSCS Flag */ #define AT91_PMC_LOCKA 1/* PLLA Lock */
Signature · 1 line
2.43.0
Re: [PATCH v3 07/13] dt-bindings: clock: Add SAMA7D65 PMC compatible string
Quoted 41 lines · On 06.12.2024 21:59, [email protected] wrote:
From: Dharma Balasubiramani <[email protected]>
Add the
microchip,sama7d65-pmccompatible string to the existing binding, since the SAMA7D65 PMC shares the same properties and clock requirements as the SAMA7G5.Export MCK3 and MCK5 to be accessed and referenced in DT to assign to the clocks property for sama7d65 SoC.
Signed-off-by Dharma Balasubiramani <[email protected]>Signed-off-by Ryan Wanner <[email protected]>--- .../devicetree/bindings/clock/atmel,at91rm9200-pmc.yaml | 2 ++ include/dt-bindings/clock/at91.h | 4 ++++ 2 files changed, 6 insertions(+)Documentation/devicetree/bindings/clock/atmel,at91rm9200-pmc.yaml +2
-0@@ -43,6 +43,7 @@ properties: - atmel,sama5d4-pmc - microchip,sam9x60-pmc - microchip,sam9x7-pmc + - microchip,sama7d65-pmc - microchip,sama7g5-pmc - const: syscon@@ -90,6 +91,7 @@ allOf: enum: - microchip,sam9x60-pmc - microchip,sam9x7-pmc + - microchip,sama7d65-pmc - microchip,sama7g5-pmc then: properties:include/dt-bindings/clock/at91.h +0
-0
include/dt-bindings/clock/at91.h line 47
Quoted 6 lines
include/dt-bindings/clock/at91.h +3
-0@@ -42,6 +42,10 @@#define PMC_PLLADIV2 (PMC_MAIN + 11)#define PMC_LVDSPLL (PMC_MAIN + 12) +/* SAMA7D65 */ +#define PMC_MCK3 (PMC_MAIN + 13) +#define PMC_MCK5 (PMC_MAIN + 14)
Spaces here --------^ instead of tabs . I'll adjust it while applying.
Quoted 4 lines
include/dt-bindings/clock/at91.h +1
-0+#ifndef AT91_PMC_MOSCS #define AT91_PMC_MOSCS 0/* MOSCS Flag */ #define AT91_PMC_LOCKA 1/* PLLA Lock */
Rob Herring
maintainerRe: [PATCH v3 07/13] dt-bindings: clock: Add SAMA7D65 PMC compatible string
In reply to [email protected]Quoted 11 lines · On Fri, Dec 06, 2024 at 12:59:52PM -0700, [email protected] wrote:
From: Dharma Balasubiramani <[email protected]>
Add the
microchip,sama7d65-pmccompatible string to the existing binding, since the SAMA7D65 PMC shares the same properties and clock requirements as the SAMA7G5.Export MCK3 and MCK5 to be accessed and referenced in DT to assign to the clocks property for sama7d65 SoC.
Signed-off-by Dharma Balasubiramani <[email protected]>Signed-off-by Ryan Wanner <[email protected]>
Missing Conor's ack.
Re: [PATCH v3 07/13] dt-bindings: clock: Add SAMA7D65 PMC compatible string
Quoted 9 lines · Rob Herring
EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
Quoted 6 lines · On Fri, Dec 06, 2024 at 12:59:52PM -0700, [email protected] wrote:
From: Dharma Balasubiramani <[email protected]>
Add the
microchip,sama7d65-pmccompatible string to the existing binding, since the SAMA7D65 PMC shares the same properties and clock requirements as the SAMA7G5.
Quoted 7 lines
Quoted 5 lines
Export MCK3 and MCK5 to be accessed and referenced in DT to assign to the clocks property for sama7d65 SoC.
Signed-off-by Dharma Balasubiramani <[email protected]>Signed-off-by Ryan Wanner <[email protected]>Missing Conor's ack.
I removed the ack because I have changed the original patch that was acked. Should the ack not have been removed even though the original patch as been changed?
Re: [PATCH v3 07/13] dt-bindings: clock: Add SAMA7D65 PMC compatible string
Quoted 13 lines · Ryan Wanner
Quoted 12 lines · Rob Herring
EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
Quoted 9 lines · On Fri, Dec 06, 2024 at 12:59:52PM -0700, [email protected] wrote:
From: Dharma Balasubiramani <[email protected]>
Add the
microchip,sama7d65-pmccompatible string to the existing binding, since the SAMA7D65 PMC shares the same properties and clock requirements as the SAMA7G5.Export MCK3 and MCK5 to be accessed and referenced in DT to assign to the clocks property for sama7d65 SoC.
Quoted 7 lines
Quoted 4 lines
Quoted 2 lines
Signed-off-by Dharma Balasubiramani <[email protected]>Signed-off-by Ryan Wanner <[email protected]>Missing Conor's ack.
I removed the ack because I have changed the original patch that was acked. Should the ack not have been removed even though the original patch as been changed?
Nothing in changelog says about changes to this patch. Nothing also mentions dropping acks.
Please read:
https://elixir.bootlin.com/linux/v6.5-rc3/source/Documentation/process/submitting-patches.rst#L577
If a tag was not added on purpose, please state why and what changed.
Best regards,
Krzysztof
Re: [PATCH v3 07/13] dt-bindings: clock: Add SAMA7D65 PMC compatible string
In reply to [email protected]Quoted 6 lines · On Fri, Dec 06, 2024 at 12:59:52PM -0700, [email protected] wrote:
From: Dharma Balasubiramani <[email protected]>
Add the
microchip,sama7d65-pmccompatible string to the existing binding, since the SAMA7D65 PMC shares the same properties and clock requirements as the SAMA7G5.
Quoted 6 lines
Export MCK3 and MCK5 to be accessed and referenced in DT to assign to the clocks property for sama7d65 SoC.
Signed-off-by Dharma Balasubiramani <[email protected]>Signed-off-by Ryan Wanner <[email protected]>---
Best regards,
Krzysztof
PATCH v3 8/13 clk: at91: sama7d65: add sama7d65 pmc driver
In reply to [email protected]From: Ryan Wanner <[email protected]>
Add clock support for SAMA7D65 SoC.
Increase maximum number of valid master clocks. The PMC for the SAMA7D65 requires 9 master clocks.
Increase maximum amount of PLLs to 9 to support SAMA7D65 SoC PLL requirements.
--- drivers/clk/at91/Makefile | 1 + drivers/clk/at91/clk-master.c | 2 +- drivers/clk/at91/clk-sam9x60-pll.c | 2 +- drivers/clk/at91/pmc.c | 1 + drivers/clk/at91/sama7d65.c | 1373 ++++++++++++++++++++++++++++ 5 files changed, 1377 insertions(+), 2 deletions(-) create mode 100644 drivers/clk/at91/sama7d65.c
drivers/clk/at91/Makefile +1 -0
@@ -25,3 +25,4 @@ obj-$(CONFIG_SOC_SAMA5D3) += sama5d3.o dt-compat.o obj-$(CONFIG_SOC_SAMA5D4) += sama5d4.o dt-compat.o obj-$(CONFIG_SOC_SAMA5D2) += sama5d2.o dt-compat.o obj-$(CONFIG_SOC_SAMA7G5) += sama7g5.o +obj-$(CONFIG_SOC_SAMA7D65) += sama7d65.o
drivers/clk/at91/clk-master.c +1 -1
@@ -20,7 +20,7 @@#define PMC_MCR_CSS_SHIFT (16) -#define MASTER_MAX_ID 4 +#define MASTER_MAX_ID 9#define to_clk_master (hw) container_of(hw, struct clk_master, hw)
drivers/clk/at91/clk-sam9x60-pll.c +1 -1
@@ -23,7 +23,7 @@#define UPLL_DIV 2#define PLL_MUL_MAX (FIELD_GET(PMC_PLL_CTRL1_MUL_MSK, UINT_MAX) + 1) -#define PLL_MAX_ID 7 +#define PLL_MAX_ID 9struct sam9x60_pll_core {struct regmap *regmap;
drivers/clk/at91/pmc.c +1 -0
@@ -151,6 +151,7 @@ static struct syscore_ops pmc_syscore_ops = {static const struct of_device_id pmc_dt_ids[] = { { .compatible ="atmel,sama5d2-pmc" }, { .compatible ="microchip,sama7g5-pmc" , }, + { .compatible ="microchip,sama7d65-pmc" , }, {/* sentinel */ } };
drivers/clk/at91/sama7d65.c new file +1373 -0
1,373 lines not on this page · raw message
Signature · 1 line
2.43.0
Re: [PATCH v3 08/13] clk: at91: sama7d65: add sama7d65 pmc driver
Quoted 9 lines · On 06.12.2024 21:59, [email protected] wrote:
From: Ryan Wanner <[email protected]>
Add clock support for SAMA7D65 SoC.
Increase maximum number of valid master clocks. The PMC for the SAMA7D65 requires 9 master clocks.
Increase maximum amount of PLLs to 9 to support SAMA7D65 SoC PLL requirements.
I personally prefered the other variant where these were introduced as individual preparatory patches.
Quoted 2 lines
Signed-off-by Ryan Wanner <[email protected]>
Quoted 1,435 lines
--- drivers/clk/at91/Makefile | 1 + drivers/clk/at91/clk-master.c | 2 +- drivers/clk/at91/clk-sam9x60-pll.c | 2 +- drivers/clk/at91/pmc.c | 1 + drivers/clk/at91/sama7d65.c | 1373 ++++++++++++++++++++++++++++ 5 files changed, 1377 insertions(+), 2 deletions(-) create mode 100644 drivers/clk/at91/sama7d65.cdrivers/clk/at91/Makefile +1
-0@@ -25,3 +25,4 @@ obj-$(CONFIG_SOC_SAMA5D3) += sama5d3.o dt-compat.o obj-$(CONFIG_SOC_SAMA5D4) += sama5d4.o dt-compat.o obj-$(CONFIG_SOC_SAMA5D2) += sama5d2.o dt-compat.o obj-$(CONFIG_SOC_SAMA7G5) += sama7g5.o +obj-$(CONFIG_SOC_SAMA7D65) += sama7d65.odrivers/clk/at91/clk-master.c +1
-1@@ -20,7 +20,7 @@#define PMC_MCR_CSS_SHIFT (16) -#define MASTER_MAX_ID 4 +#define MASTER_MAX_ID 9#define to_clk_master (hw) container_of(hw, struct clk_master, hw)drivers/clk/at91/clk-sam9x60-pll.c +1
-1@@ -23,7 +23,7 @@#define UPLL_DIV 2#define PLL_MUL_MAX (FIELD_GET(PMC_PLL_CTRL1_MUL_MSK, UINT_MAX) + 1) -#define PLL_MAX_ID 7 +#define PLL_MAX_ID 9struct sam9x60_pll_core {struct regmap *regmap;drivers/clk/at91/pmc.c +1
-0@@ -151,6 +151,7 @@ static struct syscore_ops pmc_syscore_ops = {static const struct of_device_id pmc_dt_ids[] = { { .compatible ="atmel,sama5d2-pmc" }, { .compatible ="microchip,sama7g5-pmc" , }, + { .compatible ="microchip,sama7d65-pmc" , }, {/* sentinel */ } };drivers/clk/at91/sama7d65.c new file +1373
-0@@ -0,0 +1,1373 @@ +// SPDX-License-Identifier: GPL-2.0 +/* +* SAMA7D65 PMC code. +* +* Copyright (C) 2024 Microchip Technology Inc. and its subsidiaries +* +* Author: Ryan Wanner <[email protected]> +*/ +#include <linux/clk.h> +#include <linux/clk-provider.h> +#include <linux/mfd/syscon.h> +#include <linux/slab.h> + +#include <dt-bindings/clock/at91.h> + +#include "pmc.h" + +static DEFINE_SPINLOCK (pmc_pll_lock); +static DEFINE_SPINLOCK (pmc_mck0_lock); +static DEFINE_SPINLOCK (pmc_mckX_lock); + +#define PMC_INDEX_MAX 25 + +/* +* PLL clocks identifiers +* @PLL_ID_CPU: CPU PLL identifier +* @PLL_ID_SYS: System PLL identifier +* @PLL_ID_DDR: DDR PLL identifier +* @PLL_ID_GPU: Graphics subsystem PLL identifier +* @PLL_ID_BAUD: Baud PLL identifier +* @PLL_ID_AUDIO: Audio PLL identifier +* @PLL_ID_ETH: Ethernet PLL identifier +* @PLL_ID_LVDS: LVDS PLL identifier +* @PLL_ID_USB: USB PLL identifier +*/ +enum pll_ids { +PLL_ID_CPU , +PLL_ID_SYS , +PLL_ID_DDR , +PLL_ID_GPU , +PLL_ID_BAUD , +PLL_ID_AUDIO , +PLL_ID_ETH , +PLL_ID_LVDS , +PLL_ID_USB , +PLL_ID_MAX +}; + +/* +* PLL component identifier +* @PLL_COMPID_FRAC: Fractional PLL component identifier +* @PLL_COMPID_DIV0: 1st PLL divider component identifier +* @PLL_COMPID_DIV1: 2nd PLL divider component identifier +*/ +enum pll_component_id { +PLL_COMPID_FRAC , +PLL_COMPID_DIV0 , +PLL_COMPID_DIV1 , +PLL_COMPID_MAX +}; + +/* +* PLL type identifiers +* @PLL_TYPE_FRAC: fractional PLL identifier +* @PLL_TYPE_DIV: divider PLL identifier +*/ +enum pll_type { +PLL_TYPE_FRAC , +PLL_TYPE_DIV , +}; + +/* Layout for fractional PLLs. */ +static const struct clk_pll_layout pll_layout_frac = { + .mul_mask =GENMASK (31 ,24 ), + .frac_mask =GENMASK (21 ,0 ), + .mul_shift =24 , + .frac_shift =0 , +}; + +/* Layout for DIVPMC dividers. */ +static const struct clk_pll_layout pll_layout_divpmc = { + .div_mask =GENMASK (7 ,0 ), + .endiv_mask =BIT (29 ), + .div_shift =0 , + .endiv_shift =29 , +}; + +/* Layout for DIVIO dividers. */ +static const struct clk_pll_layout pll_layout_divio = { + .div_mask =GENMASK (19 ,12 ), + .endiv_mask =BIT (30 ), + .div_shift =12 , + .endiv_shift =30 , +}; + +/* +* CPU PLL output range. +* Notice: The upper limit has been setup to 1000000002 due to hardware +* block which cannot output exactly 1GHz. +*/ +static const struct clk_range cpu_pll_outputs[] = { + { .min =2343750 , .max =1000000002 }, +}; + +/* PLL output range. */ +static const struct clk_range pll_outputs[] = { + { .min =2343750 , .max =1200000000 }, +}; + +/* +* Min: fCOREPLLCK = 600 MHz, PMC_PLL_CTRL0.DIVPMC = 255 +* Max: fCOREPLLCK = 800 MHz, PMC_PLL_CTRL0.DIVPMC = 0 +*/ +static const struct clk_range lvdspll_outputs[] = { + { .min =16406250 , .max =800000000 }, +}; + +static const struct clk_range upll_outputs[] = { + { .min =480000000 , .max =480000000 }, +}; + +/* Fractional PLL core output range. */ +static const struct clk_range core_outputs[] = { + { .min =600000000 , .max =1200000000 }, +}; + +static const struct clk_range lvdspll_core_outputs[] = { + { .min =600000000 , .max =1200000000 }, +}; + +static const struct clk_range upll_core_outputs[] = { + { .min =600000000 , .max =1200000000 }, +}; + +/* CPU PLL characteristics. */ +static const struct clk_pll_characteristics cpu_pll_characteristics = { + .input = { .min =12000000 , .max =50000000 }, + .num_output =ARRAY_SIZE (cpu_pll_outputs), + .output = cpu_pll_outputs, + .core_output = core_outputs, +}; + +/* PLL characteristics. */ +static const struct clk_pll_characteristics pll_characteristics = { + .input = { .min =12000000 , .max =50000000 }, + .num_output =ARRAY_SIZE (pll_outputs), + .output = pll_outputs, + .core_output = core_outputs, +}; + +static const struct clk_pll_characteristics lvdspll_characteristics = { + .input = { .min =12000000 , .max =50000000 }, + .num_output =ARRAY_SIZE (lvdspll_outputs), + .output = lvdspll_outputs, + .core_output = lvdspll_core_outputs, +}; + +static const struct clk_pll_characteristics upll_characteristics = { + .input = { .min =20000000 , .max =50000000 }, + .num_output =ARRAY_SIZE (upll_outputs), + .output = upll_outputs, + .core_output = upll_core_outputs, + .upll = true, +}; + +/* +* SAMA7D65 PLL possible parents +* @SAMA7D65_PLL_PARENT_MAINCK: MAINCK is PLL a parent +* @SAMA7D65_PLL_PARENT_MAIN_XTAL: MAIN XTAL is a PLL parent +* @SAMA7D65_PLL_PARENT_FRACCK: Frac PLL is a PLL parent (for PLL dividers) +*/ +enum sama7d65_pll_parent { +SAMA7D65_PLL_PARENT_MAINCK , +SAMA7D65_PLL_PARENT_MAIN_XTAL , +SAMA7D65_PLL_PARENT_FRACCK , +}; + +/* +* PLL clocks description +* @n: clock name +* @l: clock layout +* @c: clock characteristics +* @hw: pointer to clk_hw +* @t: clock type +* @f: clock flags +* @p: clock parent +* @eid: export index in sama7d65->chws[] array +* @safe_div: intermediate divider need to be set on PRE_RATE_CHANGE +* notification +*/ +static struct sama7d65_pll { +const char *n; +const struct clk_pll_layout *l; +const struct clk_pll_characteristics *c; +struct clk_hw *hw; +unsigned long f; +enum sama7d65_pll_parent p; +u8 t; +u8 eid; +u8 safe_div; +} sama7d65_plls[][PLL_COMPID_MAX ] = { + [PLL_ID_CPU ] = { + [PLL_COMPID_FRAC ] = { + .n ="cpupll_fracck" , + .p =SAMA7D65_PLL_PARENT_MAINCK , + .l = &pll_layout_frac, + .c = &cpu_pll_characteristics, + .t =PLL_TYPE_FRAC , +/* +* This feeds cpupll_divpmcck which feeds CPU. It should +* not be disabled. +*/ + .f =CLK_IS_CRITICAL , + }, + + [PLL_COMPID_DIV0 ] = { + .n ="cpupll_divpmcck" , + .p =SAMA7D65_PLL_PARENT_FRACCK , + .l = &pll_layout_divpmc, + .c = &cpu_pll_characteristics, + .t =PLL_TYPE_DIV , +/* This feeds CPU. It should not be disabled. */ + .f =CLK_IS_CRITICAL |CLK_SET_RATE_PARENT , + .eid =PMC_CPUPLL , +/* +* Safe div=15 should be safe even for switching b/w 1GHz and +* 90MHz (frac pll might go up to 1.2GHz). +*/ + .safe_div =15 , + }, + }, + + [PLL_ID_SYS ] = { + [PLL_COMPID_FRAC ] = { + .n ="syspll_fracck" , + .p =SAMA7D65_PLL_PARENT_MAINCK , + .l = &pll_layout_frac, + .c = &pll_characteristics, + .t =PLL_TYPE_FRAC , +/* +* This feeds syspll_divpmcck which may feed critical parts +* of the systems like timers. Therefore it should not be +* disabled. +*/ + .f =CLK_IS_CRITICAL |CLK_SET_RATE_GATE , + }, + + [PLL_COMPID_DIV0 ] = { + .n ="syspll_divpmcck" , + .p =SAMA7D65_PLL_PARENT_FRACCK , + .l = &pll_layout_divpmc, + .c = &pll_characteristics, + .t =PLL_TYPE_DIV , +/* +* This may feed critical parts of the systems like timers. +* Therefore it should not be disabled. +*/ + .f =CLK_IS_CRITICAL |CLK_SET_RATE_GATE , + .eid =PMC_SYSPLL , + }, + }, + + [PLL_ID_DDR ] = { + [PLL_COMPID_FRAC ] = { + .n ="ddrpll_fracck" , + .p =SAMA7D65_PLL_PARENT_MAINCK , + .l = &pll_layout_frac, + .c = &pll_characteristics, + .t =PLL_TYPE_FRAC , +/* +* This feeds ddrpll_divpmcck which feeds DDR. It should not +* be disabled. +*/ + .f =CLK_IS_CRITICAL |CLK_SET_RATE_GATE , + }, + + [PLL_COMPID_DIV0 ] = { + .n ="ddrpll_divpmcck" , + .p =SAMA7D65_PLL_PARENT_FRACCK , + .l = &pll_layout_divpmc, + .c = &pll_characteristics, + .t =PLL_TYPE_DIV , +/* This feeds DDR. It should not be disabled. */ + .f =CLK_IS_CRITICAL |CLK_SET_RATE_GATE , + }, + }, + + [PLL_ID_GPU ] = { + [PLL_COMPID_FRAC ] = { + .n ="gpupll_fracck" , + .p =SAMA7D65_PLL_PARENT_MAINCK , + .l = &pll_layout_frac, + .c = &pll_characteristics, + .t =PLL_TYPE_FRAC , + .f =CLK_SET_RATE_GATE , + }, + + [PLL_COMPID_DIV0 ] = { + .n ="gpupll_divpmcck" , + .p =SAMA7D65_PLL_PARENT_FRACCK , + .l = &pll_layout_divpmc, + .c = &pll_characteristics, + .t =PLL_TYPE_DIV , + .f =CLK_SET_RATE_GATE |CLK_SET_PARENT_GATE | +CLK_SET_RATE_PARENT , + }, + }, + + [PLL_ID_BAUD ] = { + [PLL_COMPID_FRAC ] = { + .n ="baudpll_fracck" , + .p =SAMA7D65_PLL_PARENT_MAINCK , + .l = &pll_layout_frac, + .c = &pll_characteristics, + .t =PLL_TYPE_FRAC , + .f =CLK_SET_RATE_GATE , + }, + + [PLL_COMPID_DIV0 ] = { + .n ="baudpll_divpmcck" , + .p =SAMA7D65_PLL_PARENT_FRACCK , + .l = &pll_layout_divpmc, + .c = &pll_characteristics, + .t =PLL_TYPE_DIV , + .f =CLK_SET_RATE_GATE |CLK_SET_PARENT_GATE | +CLK_SET_RATE_PARENT , + .eid =PMC_BAUDPLL , + }, + }, + + [PLL_ID_AUDIO ] = { + [PLL_COMPID_FRAC ] = { + .n ="audiopll_fracck" , + .p =SAMA7D65_PLL_PARENT_MAIN_XTAL , + .l = &pll_layout_frac, + .c = &pll_characteristics, + .t =PLL_TYPE_FRAC , + .f =CLK_SET_RATE_GATE , + }, + + [PLL_COMPID_DIV0 ] = { + .n ="audiopll_divpmcck" , + .p =SAMA7D65_PLL_PARENT_FRACCK , + .l = &pll_layout_divpmc, + .c = &pll_characteristics, + .t =PLL_TYPE_DIV , + .f =CLK_SET_RATE_GATE |CLK_SET_PARENT_GATE | +CLK_SET_RATE_PARENT , + .eid =PMC_AUDIOPMCPLL , + }, + + [PLL_COMPID_DIV1 ] = { + .n ="audiopll_diviock" , + .p =SAMA7D65_PLL_PARENT_FRACCK , + .l = &pll_layout_divio, + .c = &pll_characteristics, + .t =PLL_TYPE_DIV , + .f =CLK_SET_RATE_GATE |CLK_SET_PARENT_GATE | +CLK_SET_RATE_PARENT , + .eid =PMC_AUDIOIOPLL , + }, + }, + + [PLL_ID_ETH ] = { + [PLL_COMPID_FRAC ] = { + .n ="ethpll_fracck" , + .p =SAMA7D65_PLL_PARENT_MAIN_XTAL , + .l = &pll_layout_frac, + .c = &pll_characteristics, + .t =PLL_TYPE_FRAC , + .f =CLK_SET_RATE_GATE , + }, + + [PLL_COMPID_DIV0 ] = { + .n ="ethpll_divpmcck" , + .p =SAMA7D65_PLL_PARENT_FRACCK , + .l = &pll_layout_divpmc, + .c = &pll_characteristics, + .t =PLL_TYPE_DIV , + .f =CLK_SET_RATE_GATE |CLK_SET_PARENT_GATE | +CLK_SET_RATE_PARENT , + .eid =PMC_ETHPLL , + }, + }, + + [PLL_ID_LVDS ] = { + [PLL_COMPID_FRAC ] = { + .n ="lvdspll_fracck" , + .p =SAMA7D65_PLL_PARENT_MAIN_XTAL , + .l = &pll_layout_frac, + .c = &lvdspll_characteristics, + .t =PLL_TYPE_FRAC , + .f =CLK_SET_RATE_GATE , + }, + + [PLL_COMPID_DIV0 ] = { + .n ="lvdspll_divpmcck" , + .p =SAMA7D65_PLL_PARENT_FRACCK , + .l = &pll_layout_divpmc, + .c = &lvdspll_characteristics, + .t =PLL_TYPE_DIV , + .f =CLK_SET_RATE_GATE |CLK_SET_PARENT_GATE | +CLK_SET_RATE_PARENT , + .eid =PMC_LVDSPLL , + }, + }, + + [PLL_ID_USB ] = { + [PLL_COMPID_FRAC ] = { + .n ="usbpll_fracck" , + .p =SAMA7D65_PLL_PARENT_MAIN_XTAL , + .l = &pll_layout_frac, + .c = &upll_characteristics, + .t =PLL_TYPE_FRAC , + .f =CLK_SET_RATE_GATE , + }, + + [PLL_COMPID_DIV0 ] = { + .n ="usbpll_divpmcck" , + .p =SAMA7D65_PLL_PARENT_FRACCK , + .l = &pll_layout_divpmc, + .c = &upll_characteristics, + .t =PLL_TYPE_DIV , + .f =CLK_SET_RATE_GATE |CLK_SET_PARENT_GATE | +CLK_SET_RATE_PARENT , + .eid =PMC_UTMI , + }, + }, +}; + +/* Used to create an array entry identifying a PLL by its components. */ +#define PLL_IDS_TO_ARR_ENTRY (_id, _comp) { PLL_ID_##_id, PLL_COMPID_##_comp} + +/* +* Master clock (MCK[0..9]) description +* @n: clock name +* @ep_chg_chg_id: index in parents array that specifies the changeable +* @ep: extra parents names array (entry formed by PLL components +* identifiers (see enum pll_component_id)) +* @hw: pointer to clk_hw +* parent +* @ep_count: extra parents count +* @ep_mux_table: mux table for extra parents +* @id: clock id +* @eid: export index in sama7d65->chws[] array +* @c: true if clock is critical and cannot be disabled +*/ +static struct { +const char *n; +struct { +int pll_id; +int pll_compid; + } ep[4 ]; +struct clk_hw *hw; +int ep_chg_id; +u8 ep_count; +u8 ep_mux_table[4 ]; +u8 id; +u8 eid; +u8 c; +} sama7d65_mckx[] = { + { .n ="mck0" , },/* Dummy entry for MCK0 to store hw in probe. */ + { .n ="mck1" , + .id =1 , + .ep = {PLL_IDS_TO_ARR_ENTRY (SYS ,DIV0 ), }, + .ep_mux_table = {5 , }, + .ep_count =1 , + .ep_chg_id =INT_MIN , + .eid =PMC_MCK1 , + .c =1 , }, + + { .n ="mck2" , + .id =2 , + .ep = {PLL_IDS_TO_ARR_ENTRY (SYS ,DIV0 ),PLL_IDS_TO_ARR_ENTRY (DDR ,DIV0 ), }, + .ep_mux_table = {5 ,6 , }, + .ep_count =2 , + .ep_chg_id =INT_MIN , + .c =1 , }, + + { .n ="mck3" , + .id =3 , + .ep = {PLL_IDS_TO_ARR_ENTRY (SYS ,DIV0 ),PLL_IDS_TO_ARR_ENTRY (DDR ,DIV0 ), }, + .ep_mux_table = {5 ,6 , }, + .ep_count =2 , + .ep_chg_id =INT_MIN , + .eid =PMC_MCK3 , + .c =1 , }, + + { .n ="mck4" , + .id =4 , + .ep = {PLL_IDS_TO_ARR_ENTRY (SYS ,DIV0 ), }, + .ep_mux_table = {5 , }, + .ep_count =1 , + .ep_chg_id =INT_MIN , + .c =1 , }, + + { .n ="mck5" , + .id =5 , + .ep = {PLL_IDS_TO_ARR_ENTRY (SYS ,DIV0 ), }, + .ep_mux_table = {5 , }, + .ep_count =1 , + .ep_chg_id =INT_MIN , + .eid =PMC_MCK5 , + .c =1 , }, + + { .n ="mck6" , + .id =6 , + .ep = {PLL_IDS_TO_ARR_ENTRY (SYS ,DIV0 ), }, + .ep_mux_table = {5 , }, + .ep_chg_id =INT_MIN , + .ep_count =1 , + .c =1 , }, + + { .n ="mck7" , + .id =7 , + .ep = {PLL_IDS_TO_ARR_ENTRY (SYS ,DIV0 ), }, + .ep_mux_table = {5 , }, + .ep_chg_id =INT_MIN , + .ep_count =1 , }, + + { .n ="mck8" , + .id =8 , + .ep = {PLL_IDS_TO_ARR_ENTRY (SYS ,DIV0 ), }, + .ep_mux_table = {5 , }, + .ep_chg_id =INT_MIN , + .ep_count =1 , }, + + { .n ="mck9" , + .id =9 , + .ep = {PLL_IDS_TO_ARR_ENTRY (SYS ,DIV0 ), }, + .ep_mux_table = {5 , }, + .ep_chg_id =INT_MIN , + .ep_count =1 , }, +}; + +/* +* System clock description +* @n: clock name +* @p: clock parent name +* @id: clock id +*/ +static const struct { +const char *n; +const char *p; +u8 id; +} sama7d65_systemck[] = { + { .n ="uhpck" , .p ="usbck" , .id =6 }, + { .n ="pck0" , .p ="prog0" , .id =8 , }, + { .n ="pck1" , .p ="prog1" , .id =9 , }, + { .n ="pck2" , .p ="prog2" , .id =10 , }, + { .n ="pck3" , .p ="prog3" , .id =11 , }, + { .n ="pck4" , .p ="prog4" , .id =12 , }, + { .n ="pck5" , .p ="prog5" , .id =13 , }, + { .n ="pck6" , .p ="prog6" , .id =14 , }, + { .n ="pck7" , .p ="prog7" , .id =15 , }, +}; + +/* Mux table for programmable clocks. */ +static u32 sama7d65_prog_mux_table[] = {0 ,1 ,2 ,5 ,7 ,8 ,9 ,10 ,12 }; + +/* +* Peripheral clock parent hw identifier (used to index in sama7d65_mckx[]) +* @PCK_PARENT_HW_MCK0: pck parent hw identifier is MCK0 +* @PCK_PARENT_HW_MCK1: pck parent hw identifier is MCK1 +* @PCK_PARENT_HW_MCK2: pck parent hw identifier is MCK2 +* @PCK_PARENT_HW_MCK3: pck parent hw identifier is MCK3 +* @PCK_PARENT_HW_MCK4: pck parent hw identifier is MCK4 +* @PCK_PARENT_HW_MCK5: pck parent hw identifier is MCK5 +* @PCK_PARENT_HW_MCK6: pck parent hw identifier is MCK6 +* @PCK_PARENT_HW_MCK7: pck parent hw identifier is MCK7 +* @PCK_PARENT_HW_MCK8: pck parent hw identifier is MCK8 +* @PCK_PARENT_HW_MCK9: pck parent hw identifier is MCK9 +* @PCK_PARENT_HW_MAX: max identifier +*/ +enum sama7d65_pck_parent_hw_id { +PCK_PARENT_HW_MCK0 , +PCK_PARENT_HW_MCK1 , +PCK_PARENT_HW_MCK2 , +PCK_PARENT_HW_MCK3 , +PCK_PARENT_HW_MCK4 , +PCK_PARENT_HW_MCK5 , +PCK_PARENT_HW_MCK6 , +PCK_PARENT_HW_MCK7 , +PCK_PARENT_HW_MCK8 , +PCK_PARENT_HW_MCK9 , +PCK_PARENT_HW_MAX +}; + +/* +* Peripheral clock description +* @n: clock name +* @p: clock parent hw id +* @r: clock range values +* @id: clock id +* @chgp: index in parent array of the changeable parent +*/ +static struct { +const char *n; +enum sama7d65_pck_parent_hw_id p; +struct clk_range r; +u8 chgp; +u8 id; +} sama7d65_periphck[] = { + { .n ="pioA_clk" , .p =PCK_PARENT_HW_MCK0 , .id =10 , }, + { .n ="securam_clk" , .p =PCK_PARENT_HW_MCK0 , .id =17 , }, + { .n ="sfr_clk" , .p =PCK_PARENT_HW_MCK7 , .id =18 , }, + { .n ="hsmc_clk" , .p =PCK_PARENT_HW_MCK5 , .id =20 , }, + { .n ="xdmac0_clk" , .p =PCK_PARENT_HW_MCK6 , .id =21 , }, + { .n ="xdmac1_clk" , .p =PCK_PARENT_HW_MCK6 , .id =22 , }, + { .n ="xdmac2_clk" , .p =PCK_PARENT_HW_MCK1 , .id =23 , }, + { .n ="acc_clk" , .p =PCK_PARENT_HW_MCK7 , .id =24 , }, + { .n ="aes_clk" , .p =PCK_PARENT_HW_MCK6 , .id =26 , }, + { .n ="tzaesbasc_clk" , .p =PCK_PARENT_HW_MCK8 , .id =27 , }, + { .n ="asrc_clk" , .p =PCK_PARENT_HW_MCK9 , .id =29 , .r = { .max =200000000 , }, }, + { .n ="cpkcc_clk" , .p =PCK_PARENT_HW_MCK0 , .id =30 , }, + { .n ="eic_clk" , .p =PCK_PARENT_HW_MCK7 , .id =33 , }, + { .n ="flex0_clk" , .p =PCK_PARENT_HW_MCK7 , .id =34 , }, + { .n ="flex1_clk" , .p =PCK_PARENT_HW_MCK7 , .id =35 , }, + { .n ="flex2_clk" , .p =PCK_PARENT_HW_MCK7 , .id =36 , }, + { .n ="flex3_clk" , .p =PCK_PARENT_HW_MCK7 , .id =37 , }, + { .n ="flex4_clk" , .p =PCK_PARENT_HW_MCK8 , .id =38 , }, + { .n ="flex5_clk" , .p =PCK_PARENT_HW_MCK8 , .id =39 , }, + { .n ="flex6_clk" , .p =PCK_PARENT_HW_MCK8 , .id =40 , }, + { .n ="flex7_clk" , .p =PCK_PARENT_HW_MCK8 , .id =41 , }, + { .n ="flex8_clk" , .p =PCK_PARENT_HW_MCK9 , .id =42 , }, + { .n ="flex9_clk" , .p =PCK_PARENT_HW_MCK9 , .id =43 , }, + { .n ="flex10_clk" , .p =PCK_PARENT_HW_MCK9 , .id =44 , }, + { .n ="gmac0_clk" , .p =PCK_PARENT_HW_MCK6 , .id =46 , }, + { .n ="gmac1_clk" , .p =PCK_PARENT_HW_MCK6 , .id =47 , }, + { .n ="gmac0_tsu_clk" , .p =PCK_PARENT_HW_MCK1 , .id =49 , }, + { .n ="gmac1_tsu_clk" , .p =PCK_PARENT_HW_MCK1 , .id =50 , }, + { .n ="icm_clk" , .p =PCK_PARENT_HW_MCK5 , .id =53 , }, + { .n ="i2smcc0_clk" , .p =PCK_PARENT_HW_MCK9 , .id =54 , .r = { .max =200000000 , }, }, + { .n ="i2smcc1_clk" , .p =PCK_PARENT_HW_MCK9 , .id =55 , .r = { .max =200000000 , }, }, + { .n ="lcd_clk" , .p =PCK_PARENT_HW_MCK3 , .id =56 , }, + { .n ="matrix_clk" , .p =PCK_PARENT_HW_MCK5 , .id =57 , }, + { .n ="mcan0_clk" , .p =PCK_PARENT_HW_MCK5 , .id =58 , .r = { .max =200000000 , }, }, + { .n ="mcan1_clk" , .p =PCK_PARENT_HW_MCK5 , .id =59 , .r = { .max =200000000 , }, }, + { .n ="mcan2_clk" , .p =PCK_PARENT_HW_MCK5 , .id =60 , .r = { .max =200000000 , }, }, + { .n ="mcan3_clk" , .p =PCK_PARENT_HW_MCK5 , .id =61 , .r = { .max =200000000 , }, }, + { .n ="mcan4_clk" , .p =PCK_PARENT_HW_MCK5 , .id =62 , .r = { .max =200000000 , }, }, + { .n ="pdmc0_clk" , .p =PCK_PARENT_HW_MCK9 , .id =64 , .r = { .max =200000000 , }, }, + { .n ="pdmc1_clk" , .p =PCK_PARENT_HW_MCK9 , .id =65 , .r = { .max =200000000 , }, }, + { .n ="pit64b0_clk" , .p =PCK_PARENT_HW_MCK7 , .id =66 , }, + { .n ="pit64b1_clk" , .p =PCK_PARENT_HW_MCK7 , .id =67 , }, + { .n ="pit64b2_clk" , .p =PCK_PARENT_HW_MCK7 , .id =68 , }, + { .n ="pit64b3_clk" , .p =PCK_PARENT_HW_MCK8 , .id =69 , }, + { .n ="pit64b4_clk" , .p =PCK_PARENT_HW_MCK8 , .id =70 , }, + { .n ="pit64b5_clk" , .p =PCK_PARENT_HW_MCK8 , .id =71 , }, + { .n ="pwm_clk" , .p =PCK_PARENT_HW_MCK7 , .id =72 , }, + { .n ="qspi0_clk" , .p =PCK_PARENT_HW_MCK5 , .id =73 , }, + { .n ="qspi1_clk" , .p =PCK_PARENT_HW_MCK5 , .id =74 , }, + { .n ="sdmmc0_clk" , .p =PCK_PARENT_HW_MCK1 , .id =75 , }, + { .n ="sdmmc1_clk" , .p =PCK_PARENT_HW_MCK1 , .id =76 , }, + { .n ="sdmmc2_clk" , .p =PCK_PARENT_HW_MCK1 , .id =77 , }, + { .n ="sha_clk" , .p =PCK_PARENT_HW_MCK6 , .id =78 , }, + { .n ="spdifrx_clk" , .p =PCK_PARENT_HW_MCK9 , .id =79 , .r = { .max =200000000 , }, }, + { .n ="spdiftx_clk" , .p =PCK_PARENT_HW_MCK9 , .id =80 , .r = { .max =200000000 , }, }, + { .n ="ssc0_clk" , .p =PCK_PARENT_HW_MCK7 , .id =81 , .r = { .max =200000000 , }, }, + { .n ="ssc1_clk" , .p =PCK_PARENT_HW_MCK8 , .id =82 , .r = { .max =200000000 , }, }, + { .n ="tcb0_ch0_clk" , .p =PCK_PARENT_HW_MCK8 , .id =83 , .r = { .max =200000000 , }, }, + { .n ="tcb0_ch1_clk" , .p =PCK_PARENT_HW_MCK8 , .id =84 , .r = { .max =200000000 , }, }, + { .n ="tcb0_ch2_clk" , .p =PCK_PARENT_HW_MCK8 , .id =85 , .r = { .max =200000000 , }, }, + { .n ="tcb1_ch0_clk" , .p =PCK_PARENT_HW_MCK5 , .id =86 , .r = { .max =200000000 , }, }, + { .n ="tcb1_ch1_clk" , .p =PCK_PARENT_HW_MCK5 , .id =87 , .r = { .max =200000000 , }, }, + { .n ="tcb1_ch2_clk" , .p =PCK_PARENT_HW_MCK5 , .id =88 , .r = { .max =200000000 , }, }, + { .n ="tcpca_clk" , .p =PCK_PARENT_HW_MCK5 , .id =89 , }, + { .n ="tcpcb_clk" , .p =PCK_PARENT_HW_MCK5 , .id =90 , }, + { .n ="tdes_clk" , .p =PCK_PARENT_HW_MCK6 , .id =91 , }, + { .n ="trng_clk" , .p =PCK_PARENT_HW_MCK6 , .id =92 , }, + { .n ="udphsa_clk" , .p =PCK_PARENT_HW_MCK5 , .id =99 , }, + { .n ="udphsb_clk" , .p =PCK_PARENT_HW_MCK5 , .id =100 , }, + { .n ="uhphs_clk" , .p =PCK_PARENT_HW_MCK5 , .id =101 , }, + { .n ="dsi_clk" , .p =PCK_PARENT_HW_MCK3 , .id =103 , }, + { .n ="lvdsc_clk" , .p =PCK_PARENT_HW_MCK3 , .id =104 , }, +}; + +/* +* Generic clock description +* @n: clock name +* @pp: PLL parents (entry formed by PLL components identifiers +* (see enum pll_component_id)) +* @pp_mux_table: PLL parents mux table +* @r: clock output range +* @pp_chg_id: id in parent array of changeable PLL parent +* @pp_count: PLL parents count +* @id: clock id +*/ +static const struct { +const char *n; +struct { +int pll_id; +int pll_compid; + } pp[8 ]; +const char pp_mux_table[8 ]; +struct clk_range r; +int pp_chg_id; +u8 pp_count; +u8 id; +} sama7d65_gck[] = { + { .n ="adc_gclk" , + .id =25 , + .r = { .max =100000000 , }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ),PLL_IDS_TO_ARR_ENTRY (AUDIO ,DIV0 ), }, + .pp_mux_table = {8 ,9 , }, + .pp_count =2 , + .pp_chg_id =INT_MIN , }, + + { .n ="asrc_gclk" , + .id =29 , + .r = { .max =200000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (AUDIO ,DIV0 ), }, + .pp_mux_table = {9 , }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="flex0_gclk" , + .id =34 , + .r = { .max =34000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ), }, + .pp_mux_table = {8 , }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="flex1_gclk" , + .id =35 , + .r = { .max =34000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ), }, + .pp_mux_table = {8 , }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="flex2_gclk" , + .id =36 , + .r = { .max =34000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ), }, + .pp_mux_table = {8 , }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="flex3_gclk" , + .id =37 , + .r = { .max =34000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ), }, + .pp_mux_table = {8 , }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="flex4_gclk" , + .id =38 , + .r = { .max =34000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ), }, + .pp_mux_table = {8 , }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="flex5_gclk" , + .id =39 , + .r = { .max =34000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ), }, + .pp_mux_table = {8 , }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="flex6_gclk" , + .id =40 , + .r = { .max =34000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ), }, + .pp_mux_table = {8 , }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="flex7_gclk" , + .id =41 , + .r = { .max =34000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ), }, + .pp_mux_table = {8 , }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="flex8_gclk" , + .id =42 , + .r = { .max =34000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ), }, + .pp_mux_table = {8 , }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="flex9_gclk" , + .id =43 , + .r = { .max =34000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ), }, + .pp_mux_table = {8 , }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="flex10_gclk" , + .id =44 , + .r = { .max =34000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ), }, + .pp_mux_table = {8 , }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="gmac0_gclk" , + .id =46 , + .r = { .max =125000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (ETH ,DIV0 ), }, + .pp_mux_table = {10 , }, + .pp_count =1 , + .pp_chg_id =4 , }, + + { .n ="gmac1_gclk" , + .id =47 , + .r = { .max =125000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (ETH ,DIV0 ), }, + .pp_mux_table = {10 , }, + .pp_count =1 , + .pp_chg_id =4 , }, + + { .n ="gmac0_tsu_gclk" , + .id =49 , + .r = { .max =400000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (ETH ,DIV0 ), }, + .pp_mux_table = {10 , }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="gmac1_tsu_gclk" , + .id =50 , + .r = { .max =400000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (ETH ,DIV0 ), }, + .pp_mux_table = {10 , }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="i2smcc0_gclk" , + .id =54 , + .r = { .max =100000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (AUDIO ,DIV0 ), }, + .pp_mux_table = {9 , }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="i2smcc1_gclk" , + .id =55 , + .r = { .max =100000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (AUDIO ,DIV0 ), }, + .pp_mux_table = {9 , }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="lcdc_gclk" , + .id =56 , + .r = { .max =90000000 }, + .pp_count =0 , + .pp_chg_id =INT_MIN , + }, + + { .n ="mcan0_gclk" , + .id =58 , + .r = { .max =80000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (USB ,DIV0 ), }, + .pp_mux_table = {12 }, + .pp_count =1 , + .pp_chg_id =4 , }, + + { .n ="mcan1_gclk" , + .id =59 , + .r = { .max =80000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (USB ,DIV0 ), }, + .pp_mux_table = {12 }, + .pp_count =1 , + .pp_chg_id =4 , }, + + { .n ="mcan2_gclk" , + .id =60 , + .r = { .max =80000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (USB ,DIV0 ), }, + .pp_mux_table = {12 }, + .pp_count =1 , + .pp_chg_id =4 , }, + + { .n ="mcan3_gclk" , + .id =61 , + .r = { .max =80000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (USB ,DIV0 ), }, + .pp_mux_table = {12 }, + .pp_count =1 , + .pp_chg_id =4 , }, + + { .n ="mcan4_gclk" , + .id =62 , + .r = { .max =80000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (USB ,DIV0 ), }, + .pp_mux_table = {12 }, + .pp_count =1 , + .pp_chg_id =4 , }, + + { .n ="pdmc0_gclk" , + .id =64 , + .r = { .max =80000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (AUDIO ,DIV0 ), }, + .pp_mux_table = {9 }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="pdmc1_gclk" , + .id =65 , + .r = { .max =80000000 , }, + .pp = {PLL_IDS_TO_ARR_ENTRY (AUDIO ,DIV0 ), }, + .pp_mux_table = {9 , }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="pit64b0_gclk" , + .id =66 , + .r = { .max =34000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ),PLL_IDS_TO_ARR_ENTRY (AUDIO ,DIV0 ), +PLL_IDS_TO_ARR_ENTRY (ETH ,DIV0 ), }, + .pp_mux_table = {8 ,9 ,10 , }, + .pp_count =3 , + .pp_chg_id =INT_MIN , }, + + { .n ="pit64b1_gclk" , + .id =67 , + .r = { .max =34000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ),PLL_IDS_TO_ARR_ENTRY (AUDIO ,DIV0 ), +PLL_IDS_TO_ARR_ENTRY (ETH ,DIV0 ), }, + .pp_mux_table = {8 ,9 ,10 , }, + .pp_count =3 , + .pp_chg_id =INT_MIN , }, + + { .n ="pit64b2_gclk" , + .id =68 , + .r = { .max =34000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ),PLL_IDS_TO_ARR_ENTRY (AUDIO ,DIV0 ), +PLL_IDS_TO_ARR_ENTRY (ETH ,DIV0 ), }, + .pp_mux_table = {8 ,9 ,10 , }, + .pp_count =3 , + .pp_chg_id =INT_MIN , }, + + { .n ="pit64b3_gclk" , + .id =69 , + .r = { .max =34000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ),PLL_IDS_TO_ARR_ENTRY (AUDIO ,DIV0 ), +PLL_IDS_TO_ARR_ENTRY (ETH ,DIV0 ), }, + .pp_mux_table = {8 ,9 ,10 , }, + .pp_count =3 , + .pp_chg_id =INT_MIN , }, + + { .n ="pit64b4_gclk" , + .id =70 , + .r = { .max =34000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ),PLL_IDS_TO_ARR_ENTRY (AUDIO ,DIV0 ), +PLL_IDS_TO_ARR_ENTRY (ETH ,DIV0 ), }, + .pp_mux_table = {8 ,9 ,10 , }, + .pp_count =3 , + .pp_chg_id =INT_MIN , }, + + { .n ="pit64b5_gclk" , + .id =71 , + .r = { .max =34000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ),PLL_IDS_TO_ARR_ENTRY (AUDIO ,DIV0 ), +PLL_IDS_TO_ARR_ENTRY (ETH ,DIV0 ), }, + .pp_mux_table = {8 ,9 ,10 , }, + .pp_count =3 , + .pp_chg_id =INT_MIN , }, + + { .n ="qspi0_gclk" , + .id =73 , + .r = { .max =400000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (SYS ,DIV0 ),PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ), }, + .pp_mux_table = {5 ,8 , }, + .pp_count =2 , + .pp_chg_id =INT_MIN , }, + + { .n ="qspi1_gclk" , + .id =74 , + .r = { .max =266000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (SYS ,DIV0 ),PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ), }, + .pp_mux_table = {5 ,8 , }, + .pp_count =2 , + .pp_chg_id =INT_MIN , }, + + { .n ="sdmmc0_gclk" , + .id =75 , + .r = { .max =208000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ),PLL_IDS_TO_ARR_ENTRY (ETH ,DIV0 ), }, + .pp_mux_table = {8 ,10 , }, + .pp_count =2 , + .pp_chg_id =4 , }, + + { .n ="sdmmc1_gclk" , + .id =76 , + .r = { .max =208000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ),PLL_IDS_TO_ARR_ENTRY (ETH ,DIV0 ), }, + .pp_mux_table = {8 ,10 , }, + .pp_count =2 , + .pp_chg_id =4 , }, + + { .n ="sdmmc2_gclk" , + .id =77 , + .r = { .max =208000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ),PLL_IDS_TO_ARR_ENTRY (ETH ,DIV0 ), }, + .pp_mux_table = {8 ,10 }, + .pp_count =2 , + .pp_chg_id =4 , }, + + { .n ="spdifrx_gclk" , + .id =79 , + .r = { .max =150000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (AUDIO ,DIV0 ), }, + .pp_mux_table = {9 , }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="spdiftx_gclk" , + .id =80 , + .r = { .max =25000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (AUDIO ,DIV0 ), }, + .pp_mux_table = {9 , }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="tcb0_ch0_gclk" , + .id =83 , + .r = { .max =34000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ),PLL_IDS_TO_ARR_ENTRY (AUDIO ,DIV0 ), +PLL_IDS_TO_ARR_ENTRY (ETH ,DIV0 ), }, + .pp_mux_table = {8 ,9 ,10 , }, + .pp_count =3 , + .pp_chg_id =INT_MIN , }, + + { .n ="tcb1_ch0_gclk" , + .id =86 , + .r = { .max =67000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ),PLL_IDS_TO_ARR_ENTRY (AUDIO ,DIV0 ), +PLL_IDS_TO_ARR_ENTRY (ETH ,DIV0 ), }, + .pp_mux_table = {8 ,9 ,10 , }, + .pp_count =3 , + .pp_chg_id =INT_MIN , }, + + { .n ="DSI_gclk" , + .id =103 , + .r = {.max =27000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (SYS ,DIV0 ), }, + .pp_mux_table = {5 }, + .pp_count =1 , + .pp_chg_id =INT_MIN , }, + + { .n ="I3CC_gclk" , + .id =105 , + .r = {.max =125000000 }, + .pp = {PLL_IDS_TO_ARR_ENTRY (BAUD ,DIV0 ),PLL_IDS_TO_ARR_ENTRY (AUDIO ,DIV0 ), +PLL_IDS_TO_ARR_ENTRY (ETH ,DIV0 ), }, + .pp_mux_table = {8 ,9 ,10 , }, + .pp_count =3 , + .pp_chg_id =INT_MIN , }, +}; + +/* MCK0 characteristics. */ +static const struct clk_master_characteristics mck0_characteristics = { + .output = { .min =32768 , .max =200000000 }, + .divisors = {1 ,2 ,4 ,3 ,5 }, + .have_div3_pres =1 , +}; + +/* MCK0 layout. */ +static const struct clk_master_layout mck0_layout = { + .mask =0x773 , + .pres_shift =4 , + .offset =0x28 , +}; + +/* Programmable clock layout. */ +static const struct clk_programmable_layout programmable_layout = { + .pres_mask =0xff , + .pres_shift =8 , + .css_mask =0x1f , + .have_slck_mck =0 , + .is_pres_direct =1 , +}; + +/* Peripheral clock layout. */ +static const struct clk_pcr_layout sama7d65_pcr_layout = { + .offset =0x88 , + .cmd =BIT (31 ), + .gckcss_mask =GENMASK (12 ,8 ), + .pid_mask =GENMASK (6 ,0 ), +}; + +static void __init sama7d65_pmc_setup (struct device_node *np) +{ +const char *main_xtal_name ="main_xtal" ; +struct pmc_data *sama7d65_pmc; +const char *parent_names[11 ]; +void **alloc_mem =NULL ; +int alloc_mem_size =0 ; +struct regmap *regmap; +struct clk_hw *hw, *main_rc_hw, *main_osc_hw, *main_xtal_hw; +struct clk_hw *td_slck_hw, *md_slck_hw; +static struct clk_parent_data parent_data; +struct clk_hw *parent_hws[10 ]; +bool bypass; +int i, j; + + td_slck_hw =__clk_get_hw (of_clk_get_by_name (np,"td_slck" )); + md_slck_hw =__clk_get_hw (of_clk_get_by_name (np,"md_slck" )); + main_xtal_hw =__clk_get_hw (of_clk_get_by_name (np, main_xtal_name)); + +if (!td_slck_hw || !md_slck_hw || !main_xtal_hw) +return ; + + regmap =device_node_to_regmap (np); +if (IS_ERR (regmap)) +return ; + + sama7d65_pmc =pmc_data_allocate (PMC_INDEX_MAX , +nck (sama7d65_systemck), +nck (sama7d65_periphck), +nck (sama7d65_gck),8 ); +if (!sama7d65_pmc) +return ; + + alloc_mem =kmalloc (sizeof (void *) * + (ARRAY_SIZE (sama7d65_mckx) +ARRAY_SIZE (sama7d65_gck)), +GFP_KERNEL ); +if (!alloc_mem) + goto err_free; + + main_rc_hw =at91_clk_register_main_rc_osc (regmap,"main_rc_osc" ,12000000 , +50000000 ); +if (IS_ERR (main_rc_hw)) + goto err_free; + + bypass =of_property_read_bool (np,"atmel,osc-bypass" ); + + parent_data.name = main_xtal_name; + parent_data.fw_name = main_xtal_name; + main_osc_hw =at91_clk_register_main_osc (regmap,"main_osc" ,NULL , + &parent_data, bypass); +if (IS_ERR (main_osc_hw)) + goto err_free; + + parent_hws[0 ] = main_rc_hw; + parent_hws[1 ] = main_osc_hw; + hw =at91_clk_register_sam9x5_main (regmap,"mainck" ,NULL , parent_hws,2 ); +if (IS_ERR (hw)) + goto err_free; + + sama7d65_pmc->chws[PMC_MAIN ] = hw; + +for (i =0 ; i <PLL_ID_MAX ; i++) { +for (j =0 ; j <PLL_COMPID_MAX ; j++) { +struct clk_hw *parent_hw; + +if (!sama7d65_plls[i][j].n) +continue ; + +switch (sama7d65_plls[i][j].t) { +case PLL_TYPE_FRAC : +switch (sama7d65_plls[i][j].p) { +case SAMA7D65_PLL_PARENT_MAINCK : + parent_hw = sama7d65_pmc->chws[PMC_MAIN ]; +break ; +case SAMA7D65_PLL_PARENT_MAIN_XTAL : + parent_hw = main_xtal_hw; +break ; +default : +/* Should not happen. */ + parent_hw =NULL ; +break ; + } + + hw =sam9x60_clk_register_frac_pll (regmap, + &pmc_pll_lock, sama7d65_plls[i][j].n, +NULL , parent_hw, i, + sama7d65_plls[i][j].c, + sama7d65_plls[i][j].l, + sama7d65_plls[i][j].f); +break ; + +case PLL_TYPE_DIV : + hw =sam9x60_clk_register_div_pll (regmap, + &pmc_pll_lock, sama7d65_plls[i][j].n, +NULL , sama7d65_plls[i][0 ].hw, i, + sama7d65_plls[i][j].c, + sama7d65_plls[i][j].l, + sama7d65_plls[i][j].f, + sama7d65_plls[i][j].safe_div); +break ; + +default : +continue ; + } + +if (IS_ERR (hw)) + goto err_free; + + sama7d65_plls[i][j].hw = hw; +if (sama7d65_plls[i][j].eid) + sama7d65_pmc->chws[sama7d65_plls[i][j].eid] = hw; + } + } + + hw =at91_clk_register_master_div (regmap,"mck0" ,NULL , + sama7d65_plls[PLL_ID_CPU ][1 ].hw, + &mck0_layout, &mck0_characteristics, + &pmc_mck0_lock,CLK_GET_RATE_NOCACHE ,5 ); +if (IS_ERR (hw)) + goto err_free; + + sama7d65_pmc->chws[PMC_MCK ] = hw; + sama7d65_mckx[PCK_PARENT_HW_MCK0 ].hw = hw; + + parent_hws[0 ] = md_slck_hw; + parent_hws[1 ] = td_slck_hw; + parent_hws[2 ] = sama7d65_pmc->chws[PMC_MAIN ]; +for (i =PCK_PARENT_HW_MCK1 ; i <ARRAY_SIZE (sama7d65_mckx); i++) { +u8 num_parents =3 + sama7d65_mckx[i].ep_count; +struct clk_hw *tmp_parent_hws[8 ]; +u32 *mux_table; + + mux_table =kmalloc_array (num_parents,sizeof (*mux_table), +GFP_KERNEL ); +if (!mux_table) + goto err_free; + +PMC_INIT_TABLE (mux_table,3 ); +PMC_FILL_TABLE (&mux_table[3 ], sama7d65_mckx[i].ep_mux_table, + sama7d65_mckx[i].ep_count); +for (j =0 ; j < sama7d65_mckx[i].ep_count; j++) { +u8 pll_id = sama7d65_mckx[i].ep[j].pll_id; +u8 pll_compid = sama7d65_mckx[i].ep[j].pll_compid; + + tmp_parent_hws[j] = sama7d65_plls[pll_id][pll_compid].hw; + } +PMC_FILL_TABLE (&parent_hws[3 ], tmp_parent_hws, + sama7d65_mckx[i].ep_count); + + hw =at91_clk_sama7g5_register_master (regmap, sama7d65_mckx[i].n, + num_parents,NULL , parent_hws, + mux_table, &pmc_mckX_lock, + sama7d65_mckx[i].id, + sama7d65_mckx[i].c, + sama7d65_mckx[i].ep_chg_id); + alloc_mem[alloc_mem_size++] = mux_table; + +if (IS_ERR (hw)) + goto err_free; + + sama7d65_mckx[i].hw = hw; +if (sama7d65_mckx[i].eid) + sama7d65_pmc->chws[sama7d65_mckx[i].eid] = hw; + } + + parent_names[0 ] ="syspll_divpmcck" ; + parent_names[1 ] ="usbpll_divpmcck" ; + parent_names[2 ] ="main_osc" ; + hw =sam9x60_clk_register_usb (regmap,"usbck" , parent_names,3 ); +if (IS_ERR (hw)) + goto err_free; + + parent_hws[0 ] = md_slck_hw; + parent_hws[1 ] = td_slck_hw; + parent_hws[2 ] = sama7d65_pmc->chws[PMC_MAIN ]; + parent_hws[3 ] = sama7d65_plls[PLL_ID_SYS ][PLL_COMPID_DIV0 ].hw; + parent_hws[4 ] = sama7d65_plls[PLL_ID_DDR ][PLL_COMPID_DIV0 ].hw; + parent_hws[5 ] = sama7d65_plls[PLL_ID_GPU ][PLL_COMPID_DIV0 ].hw; + parent_hws[6 ] = sama7d65_plls[PLL_ID_BAUD ][PLL_COMPID_DIV0 ].hw; + parent_hws[7 ] = sama7d65_plls[PLL_ID_AUDIO ][PLL_COMPID_DIV0 ].hw; + parent_hws[8 ] = sama7d65_plls[PLL_ID_ETH ][PLL_COMPID_DIV0 ].hw; + +for (i =0 ; i <8 ; i++) { +char name[6 ]; + +snprintf (name,sizeof (name),"prog%d" , i); + + hw =at91_clk_register_programmable (regmap, name,NULL , parent_hws, +9 , i, + &programmable_layout, + sama7d65_prog_mux_table); +if (IS_ERR (hw)) + goto err_free; + + sama7d65_pmc->pchws[i] = hw; + } + +for (i =0 ; i <ARRAY_SIZE (sama7d65_systemck); i++) { + hw =at91_clk_register_system (regmap, sama7d65_systemck[i].n, + sama7d65_systemck[i].p,NULL , + sama7d65_systemck[i].id,0 ); +if (IS_ERR (hw)) + goto err_free; + + sama7d65_pmc->shws[sama7d65_systemck[i].id] = hw; + } + +for (i =0 ; i <ARRAY_SIZE (sama7d65_periphck); i++) { + hw =at91_clk_register_sam9x5_peripheral (regmap, &pmc_pcr_lock, + &sama7d65_pcr_layout, + sama7d65_periphck[i].n, +NULL , + sama7d65_mckx[sama7d65_periphck[i].p].hw, + sama7d65_periphck[i].id, + &sama7d65_periphck[i].r, + sama7d65_periphck[i].chgp ?0 : +INT_MIN ,0 ); +if (IS_ERR (hw)) + goto err_free; + + sama7d65_pmc->phws[sama7d65_periphck[i].id] = hw; + } + + parent_hws[0 ] = md_slck_hw; + parent_hws[1 ] = td_slck_hw; + parent_hws[2 ] = sama7d65_pmc->chws[PMC_MAIN ]; + parent_hws[3 ] = sama7d65_pmc->chws[PMC_MCK1 ]; +for (i =0 ; i <ARRAY_SIZE (sama7d65_gck); i++) { +u8 num_parents =4 + sama7d65_gck[i].pp_count; +struct clk_hw *tmp_parent_hws[8 ]; +u32 *mux_table; + + mux_table =kmalloc_array (num_parents,sizeof (*mux_table), +GFP_KERNEL ); +if (!mux_table) + goto err_free; + +PMC_INIT_TABLE (mux_table,4 ); +PMC_FILL_TABLE (&mux_table[4 ], sama7d65_gck[i].pp_mux_table, + sama7d65_gck[i].pp_count); +for (j =0 ; j < sama7d65_gck[i].pp_count; j++) { +u8 pll_id = sama7d65_gck[i].pp[j].pll_id; +u8 pll_compid = sama7d65_gck[i].pp[j].pll_compid; + + tmp_parent_hws[j] = sama7d65_plls[pll_id][pll_compid].hw; + } +PMC_FILL_TABLE (&parent_hws[4 ], tmp_parent_hws, + sama7d65_gck[i].pp_count); + + hw =at91_clk_register_generated (regmap, &pmc_pcr_lock, + &sama7d65_pcr_layout, + sama7d65_gck[i].n,NULL , + parent_hws, mux_table, + num_parents, + sama7d65_gck[i].id, + &sama7d65_gck[i].r, + sama7d65_gck[i].pp_chg_id); +if (IS_ERR (hw)) + goto err_free; + + sama7d65_pmc->ghws[sama7d65_gck[i].id] = hw; + alloc_mem[alloc_mem_size++] = mux_table; + } + +of_clk_add_hw_provider (np, of_clk_hw_pmc_get, sama7d65_pmc); +kfree (alloc_mem); + +return ; + +err_free: +if (alloc_mem) { +for (i =0 ; i < alloc_mem_size; i++) +kfree (alloc_mem[i]); +kfree (alloc_mem); + } + +kfree (sama7d65_pmc); +} + +/* Some clks are used for a clocksource */ +CLK_OF_DECLARE (sama7d65_pmc,"microchip,sama7d65-pmc" , sama7d65_pmc_setup);
Re: [PATCH v3 08/13] clk: at91: sama7d65: add sama7d65 pmc driver
In reply to [email protected]Le 06/12/2024 à 20:59, [email protected] a écrit :
Quoted 11 lines
From: Ryan Wanner <[email protected]>
Add clock support for SAMA7D65 SoC.
Increase maximum number of valid master clocks. The PMC for the SAMA7D65 requires 9 master clocks.
Increase maximum amount of PLLs to 9 to support SAMA7D65 SoC PLL requirements.
Signed-off-by Ryan Wanner <[email protected]>
...
Quoted 21 lines
drivers/clk/at91/sama7d65.c new file +21
-0+for (i =0 ; i <ARRAY_SIZE (sama7d65_gck); i++) { +u8 num_parents =4 + sama7d65_gck[i].pp_count; +struct clk_hw *tmp_parent_hws[8 ]; +u32 *mux_table; + + mux_table =kmalloc_array (num_parents,sizeof (*mux_table), +GFP_KERNEL ); +if (!mux_table) + goto err_free; + +PMC_INIT_TABLE (mux_table,4 ); +PMC_FILL_TABLE (&mux_table[4 ], sama7d65_gck[i].pp_mux_table, + sama7d65_gck[i].pp_count); +for (j =0 ; j < sama7d65_gck[i].pp_count; j++) { +u8 pll_id = sama7d65_gck[i].pp[j].pll_id; +u8 pll_compid = sama7d65_gck[i].pp[j].pll_compid; + + tmp_parent_hws[j] = sama7d65_plls[pll_id][pll_compid].hw; + } +PMC_FILL_TABLE (&parent_hws[4 ], tmp_parent_hws, + sama7d65_gck[i].pp_count);
drivers/clk/at91/sama7d65.c line 1350
Quoted 10 lines
drivers/clk/at91/sama7d65.c new file +10
-0+ + hw =at91_clk_register_generated (regmap, &pmc_pcr_lock, + &sama7d65_pcr_layout, + sama7d65_gck[i].n,NULL , + parent_hws, mux_table, + num_parents, + sama7d65_gck[i].id, + &sama7d65_gck[i].r, + sama7d65_gck[i].pp_chg_id); +if (IS_ERR (hw))
If we fail here, mux_table is not freed, because it is not stored yet in alloc_mem.
Quoted 13 lines
drivers/clk/at91/sama7d65.c new file +13
-0+ goto err_free; + + sama7d65_pmc->ghws[sama7d65_gck[i].id] = hw; + alloc_mem[alloc_mem_size++] = mux_table; + } + +of_clk_add_hw_provider (np, of_clk_hw_pmc_get, sama7d65_pmc); +kfree (alloc_mem); + +return ; + +err_free: +if (alloc_mem) {
drivers/clk/at91/sama7d65.c line 1373
Quoted 10 lines
drivers/clk/at91/sama7d65.c new file +10
-0+for (i =0 ; i < alloc_mem_size; i++) +kfree (alloc_mem[i]); +kfree (alloc_mem); + } + +kfree (sama7d65_pmc); +} + +/* Some clks are used for a clocksource */ +CLK_OF_DECLARE (sama7d65_pmc,"microchip,sama7d65-pmc" , sama7d65_pmc_setup);
CJ
Claudiu Beznea
maintainerRe: [PATCH v3 08/13] clk: at91: sama7d65: add sama7d65 pmc driver
Quoted 41 lines · Christophe JAILLET
Le 06/12/2024 à 20:59, [email protected] a écrit :
Quoted 11 lines
From: Ryan Wanner <[email protected]>
Add clock support for SAMA7D65 SoC.
Increase maximum number of valid master clocks. The PMC for the SAMA7D65 requires 9 master clocks.
Increase maximum amount of PLLs to 9 to support SAMA7D65 SoC PLL requirements.
Signed-off-by Ryan Wanner <[email protected]>...
Quoted 26 lines
+ for (i = 0; i <
ARRAY_SIZE(sama7d65_gck); i++) { + u8num_parents= 4 + sama7d65_gck[i].pp_count; + structclk_hw*tmp_parent_hws[8];
+ u32*mux_table;drivers/clk/at91/sama7d65.c new file +22
-0+ + mux_table = kmalloc_array(num_parents, sizeof(*mux_table), + GFP_KERNEL); + if (!mux_table) + goto err_free; + + PMC_INIT_TABLE(mux_table, 4); + PMC_FILL_TABLE(&mux_table[4], sama7d65_gck[i].pp_mux_table, + sama7d65_gck[i].pp_count); + for (j = 0; j < sama7d65_gck[i].pp_count; j++) { + u8 pll_id = sama7d65_gck[i].pp[j].pll_id; + u8 pll_compid = sama7d65_gck[i].pp[j].pll_compid; + + tmp_parent_hws[j] = sama7d65_plls[pll_id][pll_compid].hw; + } + PMC_FILL_TABLE(&parent_hws[4], tmp_parent_hws, + sama7d65_gck[i].pp_count); + + hw = at91_clk_register_generated(regmap, &pmc_pcr_lock, + &sama7d65_pcr_layout, + sama7d65_gck[i].n, NULL, + parent_hws, mux_table,
Quoted 8 lines
Quoted 5 lines
+
num_parents,
+ sama7d65_gck[i].id, + &sama7d65_gck[i].r, + sama7d65_gck[i].pp_chg_id); + if (IS_ERR(hw))If we fail here,
mux_tableis not freed, because it is not stored yet inalloc_mem.
You're right! I missed that.
PATCH v3 9/13 ARM: dts: microchip: add sama7d65 SoC DT
In reply to [email protected]From: Ryan Wanner <[email protected]>
Add Device Tree for sama7d65 SoC.
--- arch/arm/boot/dts/microchip/sama7d65.dtsi | 145 ++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 arch/arm/boot/dts/microchip/sama7d65.dtsi
arch/arm/boot/dts/microchip/sama7d65.dtsi new file +145 -0
@@ -0,0 +1,145 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * sama7d65.dtsi - Device Tree Include file for SAMA7D65 SoC + * + * Copyright (C) 2024 Microchip Technology, Inc. and its subsidiaries + * + * Author: Ryan Wanner <[email protected]> + * + */ + +#include <dt-bindings/clock/at91.h> +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/interrupt-controller/arm-gic.h> +#include <dt-bindings/interrupt-controller/irq.h> +#include <dt-bindings/mfd/at91-usart.h> + +/ { + model = "Microchip SAMA7D65 family SoC"; + compatible = "microchip,sama7d65"; + #address-cells = <1>; + #size-cells = <1>; + interrupt-parent = <&gic>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu0: cpu@0 { + compatible = "arm,cortex-a7"; + reg = <0x0>; + device_type = "cpu"; + clocks = <&pmc PMC_TYPE_CORE PMC_CPUPLL>; + clock-names = "cpu"; + }; + }; + + clocks { + main_xtal: clock-mainxtal { + compatible = "fixed-clock"; + #clock-cells = <0>; + }; + + slow_xtal: clock-slowxtal { + compatible = "fixed-clock"; + #clock-cells = <0>; + }; + + }; + + soc { + compatible = "simple-bus"; + ranges; + #address-cells = <1>; + #size-cells = <1>; + + pioa: pinctrl@e0014000 { + compatible = "microchip,sama7d65-pinctrl"; + reg = <0xe0014000 0x800>; + interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&pmc PMC_TYPE_PERIPHERAL 10>; + interrupt-controller; + #interrupt-cells = <2>; + gpio-controller; + #gpio-cells = <2>; + }; + + pmc: clock-controller@e0018000 { + compatible = "microchip,sama7d65-pmc", "syscon"; + reg = <0xe0018000 0x200>; + interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>; + #clock-cells = <2>; + clocks = <&clk32k 1>, <&clk32k 0>, <&main_xtal>; + clock-names = "td_slck", "md_slck", "main_xtal"; + }; + + clk32k: clock-controller@e001d500 { + compatible = "microchip,sama7d65-sckc", "microchip,sam9x60-sckc"; + reg = <0xe001d500 0x4>; + clocks = <&slow_xtal>; + #clock-cells = <1>; + }; + + sdmmc1: mmc@e1208000 { + compatible = "microchip,sama7d65-sdhci", "microchip,sam9x60-sdhci"; + reg = <0xe1208000 0x400>; + interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&pmc PMC_TYPE_PERIPHERAL 76>, <&pmc PMC_TYPE_GCK 76>; + clock-names = "hclock", "multclk"; + assigned-clocks = <&pmc PMC_TYPE_GCK 76>; + assigned-clock-rates = <200000000>; + assigned-clock-parents = <&pmc PMC_TYPE_CORE PMC_MCK1>; + status = "disabled"; + }; + + pit64b0: timer@e1800000 { + compatible = "microchip,sama7d65-pit64b", "microchip,sam9x60-pit64b"; + reg = <0xe1800000 0x100>; + interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&pmc PMC_TYPE_PERIPHERAL 66>, <&pmc PMC_TYPE_GCK 66>; + clock-names = "pclk", "gclk"; + }; + + pit64b1: timer@e1804000 { + compatible = "microchip,sama7d65-pit64b", "microchip,sam9x60-pit64b"; + reg = <0xe1804000 0x100>; + interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&pmc PMC_TYPE_PERIPHERAL 67>, <&pmc PMC_TYPE_GCK 67>; + clock-names = "pclk", "gclk"; + }; + + flx6: flexcom@e2020000 { + compatible = "microchip,sama7d65-flexcom", "atmel,sama5d2-flexcom"; + reg = <0xe2020000 0x200>; + ranges = <0x0 0xe2020000 0x800>; + #address-cells = <1>; + #size-cells = <1>; + clocks = <&pmc PMC_TYPE_PERIPHERAL 40>; + status = "disabled"; + + uart6: serial@200 { + compatible = "microchip,sama7d65-usart", "atmel,at91sam9260-usart"; + reg = <0x200 0x200>; + atmel,usart-mode = <AT91_USART_MODE_SERIAL>; + interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&pmc PMC_TYPE_PERIPHERAL 40>; + clock-names = "usart"; + atmel,fifo-size = <16>; + status = "disabled"; + }; + }; + + gic: interrupt-controller@e8c11000 { + compatible = "arm,cortex-a7-gic"; + reg = <0xe8c11000 0x1000>, + <0xe8c12000 0x2000>; + #interrupt-cells = <3>; + #address-cells = <0>; + interrupt-controller; + }; + }; +};
Signature · 1 line
2.43.0
Claudiu Beznea
maintainerRe: [PATCH v3 09/13] ARM: dts: microchip: add sama7d65 SoC DT
Quoted 139 lines · On 06.12.2024 21:59, [email protected] wrote:
From: Ryan Wanner <[email protected]>
Add Device Tree for sama7d65 SoC.
Co-developed-by Dharma Balasubiramani <[email protected]>Signed-off-by Dharma Balasubiramani <[email protected]>Co-developed-by Romain Sioen <[email protected]>Signed-off-by Romain Sioen <[email protected]>Co-developed-by Varshini Rajendran <[email protected]>Signed-off-by Varshini Rajendran <[email protected]>Signed-off-by Ryan Wanner <[email protected]>--- arch/arm/boot/dts/microchip/sama7d65.dtsi | 145 ++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 arch/arm/boot/dts/microchip/sama7d65.dtsiarch/arm/boot/dts/microchip/sama7d65.dtsi new file +117
-0@@ -0,0 +1,145 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * sama7d65.dtsi - Device Tree Include file for SAMA7D65 SoC + * + * Copyright (C) 2024 Microchip Technology, Inc. and its subsidiaries + * + * Author: Ryan Wanner <[email protected]> + * + */ + +#include <dt-bindings/clock/at91.h> +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/interrupt-controller/arm-gic.h> +#include <dt-bindings/interrupt-controller/irq.h> +#include <dt-bindings/mfd/at91-usart.h> + +/ { + model = "Microchip SAMA7D65 family SoC"; + compatible = "microchip,sama7d65"; + #address-cells = <1>; + #size-cells = <1>; + interrupt-parent = <&gic>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu0: cpu@0 { + compatible = "arm,cortex-a7"; + reg = <0x0>; + device_type = "cpu"; + clocks = <&pmc PMC_TYPE_CORE PMC_CPUPLL>; + clock-names = "cpu"; + }; + }; + + clocks { + main_xtal: clock-mainxtal { + compatible = "fixed-clock"; + #clock-cells = <0>; + }; + + slow_xtal: clock-slowxtal { + compatible = "fixed-clock"; + #clock-cells = <0>; + }; + + }; + + soc { + compatible = "simple-bus"; + ranges; + #address-cells = <1>; + #size-cells = <1>; + + pioa: pinctrl@e0014000 { + compatible = "microchip,sama7d65-pinctrl"; + reg = <0xe0014000 0x800>; + interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&pmc PMC_TYPE_PERIPHERAL 10>; + interrupt-controller; + #interrupt-cells = <2>; + gpio-controller; + #gpio-cells = <2>; + }; + + pmc: clock-controller@e0018000 { + compatible = "microchip,sama7d65-pmc", "syscon"; + reg = <0xe0018000 0x200>; + interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>; + #clock-cells = <2>; + clocks = <&clk32k 1>, <&clk32k 0>, <&main_xtal>; + clock-names = "td_slck", "md_slck", "main_xtal"; + }; + + clk32k: clock-controller@e001d500 { + compatible = "microchip,sama7d65-sckc", "microchip,sam9x60-sckc"; + reg = <0xe001d500 0x4>; + clocks = <&slow_xtal>; + #clock-cells = <1>; + }; + + sdmmc1: mmc@e1208000 { + compatible = "microchip,sama7d65-sdhci", "microchip,sam9x60-sdhci"; + reg = <0xe1208000 0x400>; + interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&pmc PMC_TYPE_PERIPHERAL 76>, <&pmc PMC_TYPE_GCK 76>; + clock-names = "hclock", "multclk"; + assigned-clocks = <&pmc PMC_TYPE_GCK 76>; + assigned-clock-rates = <200000000>; + assigned-clock-parents = <&pmc PMC_TYPE_CORE PMC_MCK1>; + status = "disabled"; + }; + + pit64b0: timer@e1800000 { + compatible = "microchip,sama7d65-pit64b", "microchip,sam9x60-pit64b"; + reg = <0xe1800000 0x100>; + interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&pmc PMC_TYPE_PERIPHERAL 66>, <&pmc PMC_TYPE_GCK 66>; + clock-names = "pclk", "gclk"; + }; + + pit64b1: timer@e1804000 { + compatible = "microchip,sama7d65-pit64b", "microchip,sam9x60-pit64b"; + reg = <0xe1804000 0x100>; + interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&pmc PMC_TYPE_PERIPHERAL 67>, <&pmc PMC_TYPE_GCK 67>; + clock-names = "pclk", "gclk"; + }; + + flx6: flexcom@e2020000 { + compatible = "microchip,sama7d65-flexcom", "atmel,sama5d2-flexcom"; + reg = <0xe2020000 0x200>;
arch/arm/boot/dts/microchip/sama7d65.dtsi line 127
Quoted 10 lines
arch/arm/boot/dts/microchip/sama7d65.dtsi new file +10
-0+ ranges = <0x0 0xe2020000 0x800>; + #address-cells = <1>; + #size-cells = <1>; + clocks = <&pmc PMC_TYPE_PERIPHERAL 40>; + status = "disabled"; + + uart6: serial@200 { + compatible = "microchip,sama7d65-usart", "atmel,at91sam9260-usart"; + reg = <0x200 0x200>; + atmel,usart-mode = <AT91_USART_MODE_SERIAL>;
Vendor specific props would be at the end, before states, according to [1]. I'll adjust it while applying.
[1]
Quoted 18 lines
arch/arm/boot/dts/microchip/sama7d65.dtsi new file +18
-0+ interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&pmc PMC_TYPE_PERIPHERAL 40>; + clock-names = "usart"; + atmel,fifo-size = <16>; + status = "disabled"; + }; + }; + + gic: interrupt-controller@e8c11000 { + compatible = "arm,cortex-a7-gic"; + reg = <0xe8c11000 0x1000>, + <0xe8c12000 0x2000>; + #interrupt-cells = <3>; + #address-cells = <0>; + interrupt-controller; + }; + }; +};
Re: [PATCH v3 09/13] ARM: dts: microchip: add sama7d65 SoC DT
Quoted 156 lines · Claudiu Beznea
Quoted 139 lines · On 06.12.2024 21:59, [email protected] wrote:
From: Ryan Wanner <[email protected]>
Add Device Tree for sama7d65 SoC.
Co-developed-by Dharma Balasubiramani <[email protected]>Signed-off-by Dharma Balasubiramani <[email protected]>Co-developed-by Romain Sioen <[email protected]>Signed-off-by Romain Sioen <[email protected]>Co-developed-by Varshini Rajendran <[email protected]>Signed-off-by Varshini Rajendran <[email protected]>Signed-off-by Ryan Wanner <[email protected]>--- arch/arm/boot/dts/microchip/sama7d65.dtsi | 145 ++++++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 arch/arm/boot/dts/microchip/sama7d65.dtsiarch/arm/boot/dts/microchip/sama7d65.dtsi new file +117
-0@@ -0,0 +1,145 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * sama7d65.dtsi - Device Tree Include file for SAMA7D65 SoC + * + * Copyright (C) 2024 Microchip Technology, Inc. and its subsidiaries + * + * Author: Ryan Wanner <[email protected]> + * + */ + +#include <dt-bindings/clock/at91.h> +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/interrupt-controller/arm-gic.h> +#include <dt-bindings/interrupt-controller/irq.h> +#include <dt-bindings/mfd/at91-usart.h> + +/ { + model = "Microchip SAMA7D65 family SoC"; + compatible = "microchip,sama7d65"; + #address-cells = <1>; + #size-cells = <1>; + interrupt-parent = <&gic>; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu0: cpu@0 { + compatible = "arm,cortex-a7"; + reg = <0x0>; + device_type = "cpu"; + clocks = <&pmc PMC_TYPE_CORE PMC_CPUPLL>; + clock-names = "cpu"; + }; + }; + + clocks { + main_xtal: clock-mainxtal { + compatible = "fixed-clock"; + #clock-cells = <0>; + }; + + slow_xtal: clock-slowxtal { + compatible = "fixed-clock"; + #clock-cells = <0>; + }; + + }; + + soc { + compatible = "simple-bus"; + ranges; + #address-cells = <1>; + #size-cells = <1>; + + pioa: pinctrl@e0014000 { + compatible = "microchip,sama7d65-pinctrl"; + reg = <0xe0014000 0x800>; + interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>, + <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&pmc PMC_TYPE_PERIPHERAL 10>; + interrupt-controller; + #interrupt-cells = <2>; + gpio-controller; + #gpio-cells = <2>; + }; + + pmc: clock-controller@e0018000 { + compatible = "microchip,sama7d65-pmc", "syscon"; + reg = <0xe0018000 0x200>; + interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>; + #clock-cells = <2>; + clocks = <&clk32k 1>, <&clk32k 0>, <&main_xtal>; + clock-names = "td_slck", "md_slck", "main_xtal"; + }; + + clk32k: clock-controller@e001d500 { + compatible = "microchip,sama7d65-sckc", "microchip,sam9x60-sckc"; + reg = <0xe001d500 0x4>; + clocks = <&slow_xtal>; + #clock-cells = <1>; + }; + + sdmmc1: mmc@e1208000 { + compatible = "microchip,sama7d65-sdhci", "microchip,sam9x60-sdhci"; + reg = <0xe1208000 0x400>; + interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&pmc PMC_TYPE_PERIPHERAL 76>, <&pmc PMC_TYPE_GCK 76>; + clock-names = "hclock", "multclk"; + assigned-clocks = <&pmc PMC_TYPE_GCK 76>; + assigned-clock-rates = <200000000>; + assigned-clock-parents = <&pmc PMC_TYPE_CORE PMC_MCK1>; + status = "disabled"; + }; + + pit64b0: timer@e1800000 { + compatible = "microchip,sama7d65-pit64b", "microchip,sam9x60-pit64b"; + reg = <0xe1800000 0x100>; + interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&pmc PMC_TYPE_PERIPHERAL 66>, <&pmc PMC_TYPE_GCK 66>; + clock-names = "pclk", "gclk"; + }; + + pit64b1: timer@e1804000 { + compatible = "microchip,sama7d65-pit64b", "microchip,sam9x60-pit64b"; + reg = <0xe1804000 0x100>; + interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&pmc PMC_TYPE_PERIPHERAL 67>, <&pmc PMC_TYPE_GCK 67>; + clock-names = "pclk", "gclk"; + }; + + flx6: flexcom@e2020000 { + compatible = "microchip,sama7d65-flexcom", "atmel,sama5d2-flexcom"; + reg = <0xe2020000 0x200>;arch/arm/boot/dts/microchip/sama7d65.dtsi line 127
Quoted 10 lines
arch/arm/boot/dts/microchip/sama7d65.dtsi new file +10
-0+ ranges = <0x0 0xe2020000 0x800>; + #address-cells = <1>; + #size-cells = <1>; + clocks = <&pmc PMC_TYPE_PERIPHERAL 40>; + status = "disabled"; + + uart6: serial@200 { + compatible = "microchip,sama7d65-usart", "atmel,at91sam9260-usart"; + reg = <0x200 0x200>; + atmel,usart-mode = <AT91_USART_MODE_SERIAL>;Vendor specific props would be at the end, before states, according to [1]. I'll adjust it while applying.
Quoted 1 line
[1]
This is the link, sorry:
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/Documentation/devicetree/bindings/dts-coding-style.rst#n122
Other than that:
PATCH v3 10/13 ARM: dts: at91: Add sama7d65 pinmux
In reply to [email protected]From: Ryan Wanner <[email protected]>
Add sama7d65 pin descriptions.
--- .../arm/boot/dts/microchip/sama7d65-pinfunc.h | 947 ++++++++++++++++++ 1 file changed, 947 insertions(+) create mode 100644 arch/arm/boot/dts/microchip/sama7d65-pinfunc.h
arch/arm/boot/dts/microchip/sama7d65-pinfunc.h new file +947 -0
@@ -0,0 +1,947 @@ +/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */ +#define PINMUX_PIN (no, func, ioset) \ +(((no) & 0xffff) | (((func) & 0xf) << 16) | (((ioset) & 0xff) << 20)) + +#define PIN_PA0 0 +#define PIN_PA0__GPIO PINMUX_PIN(PIN_PA0, 0, 0) +#define PIN_PA0__SDMMC0_CK PINMUX_PIN(PIN_PA0, 1, 1) +#define PIN_PA0__FLEXCOM3_IO0 PINMUX_PIN(PIN_PA0, 2, 1) +#define PIN_PA0__NWER0 PINMUX_PIN(PIN_PA0, 3, 1) + +#define PIN_PA1 1 +#define PIN_PA1__GPIO PINMUX_PIN(PIN_PA1, 0, 0) +#define PIN_PA1__SDMMC0_CMD PINMUX_PIN(PIN_PA1, 1, 1) +#define PIN_PA1__FLEXCOM3_IO1 PINMUX_PIN(PIN_PA1, 2, 1) +#define PIN_PA1__A21 PINMUX_PIN(PIN_PA1, 3, 1) + +#define PIN_PA2 2 +#define PIN_PA2__GPIO PINMUX_PIN(PIN_PA2, 0, 0) +#define PIN_PA2__SDMMC0_RSTN PINMUX_PIN(PIN_PA2, 1, 1) +#define PIN_PA2__FLEXCOM3_IO2 PINMUX_PIN(PIN_PA2, 2, 1) +#define PIN_PA2__A22 PINMUX_PIN(PIN_PA2, 3, 1) + +#define PIN_PA3 3 +#define PIN_PA3__GPIO PINMUX_PIN(PIN_PA3, 0, 0) +#define PIN_PA3__SDMMC0_DAT0 PINMUX_PIN(PIN_PA3, 1, 1) +#define PIN_PA3__FLEXCOM3_IO3 PINMUX_PIN(PIN_PA3, 2, 1) +#define PIN_PA3__D0 PINMUX_PIN(PIN_PA3, 3, 1) + +#define PIN_PA4 4 +#define PIN_PA4__GPIO PINMUX_PIN(PIN_PA4, 0, 0) +#define PIN_PA4__SDMMC0_DAT1 PINMUX_PIN(PIN_PA4, 1, 1) +#define PIN_PA4__FLEXCOM3_IO4 PINMUX_PIN(PIN_PA4, 2, 1) +#define PIN_PA4__D1 PINMUX_PIN(PIN_PA4, 3, 1) + +#define PIN_PA5 5 +#define PIN_PA5__GPIO PINMUX_PIN(PIN_PA5, 0, 0) +#define PIN_PA5__SDMMC0_DAT4 PINMUX_PIN(PIN_PA5, 1, 1) +#define PIN_PA5__FLEXCOM2_IO0 PINMUX_PIN(PIN_PA5, 2, 3) +#define PIN_PA5__D4 PINMUX_PIN(PIN_PA5, 3, 1) +#define PIN_PA5__TCLK4 PINMUX_PIN(PIN_PA5, 6, 3) + +#define PIN_PA6 6 +#define PIN_PA6__GPIO PINMUX_PIN(PIN_PA6, 0, 0) +#define PIN_PA6__SDMMC0_DAT5 PINMUX_PIN(PIN_PA6, 1, 1) +#define PIN_PA6__FLEXCOM2_IO1 PINMUX_PIN(PIN_PA6, 2, 3) +#define PIN_PA6__D5 PINMUX_PIN(PIN_PA6, 3, 1) +#define PIN_PA6__TIOB4 PINMUX_PIN(PIN_PA6, 6, 3) + +#define PIN_PA7 7 +#define PIN_PA7__GPIO PINMUX_PIN(PIN_PA7, 0, 0) +#define PIN_PA7__SDMMC0_DAT6 PINMUX_PIN(PIN_PA7, 1, 1) +#define PIN_PA7__FLEXCOM2_IO2 PINMUX_PIN(PIN_PA7, 2, 3) +#define PIN_PA7__D6 PINMUX_PIN(PIN_PA7, 3, 1) +#define PIN_PA7__TIOA4 PINMUX_PIN(PIN_PA7, 6, 3) + +#define PIN_PA8 8 +#define PIN_PA8__GPIO PINMUX_PIN(PIN_PA8, 0, 0) +#define PIN_PA8__SDMMC0_DAT7 PINMUX_PIN(PIN_PA8, 1, 1) +#define PIN_PA8__FLEXCOM2_IO3 PINMUX_PIN(PIN_PA8, 2, 3) +#define PIN_PA8__D7 PINMUX_PIN(PIN_PA8, 3, 1) +#define PIN_PA8__TIOA5 PINMUX_PIN(PIN_PA8, 6, 3) + +#define PIN_PA9 9 +#define PIN_PA9__GPIO PINMUX_PIN(PIN_PA9, 0, 0) +#define PIN_PA9__SDMMC0_DAT2 PINMUX_PIN(PIN_PA9, 1, 1) +#define PIN_PA9__FLEXCOM0_IO2 PINMUX_PIN(PIN_PA9, 2, 1) +#define PIN_PA9__D2 PINMUX_PIN(PIN_PA9, 3, 1) +#define PIN_PA9__TIOB5 PINMUX_PIN(PIN_PA9, 6, 3) + +#define PIN_PA10 10 +#define PIN_PA10__GPIO PINMUX_PIN(PIN_PA10, 0, 0) +#define PIN_PA10__SDMMC0_DAT3 PINMUX_PIN(PIN_PA10, 1, 1) +#define PIN_PA10__FLEXCOM0_IO3 PINMUX_PIN(PIN_PA10, 2, 1) +#define PIN_PA10__D3 PINMUX_PIN(PIN_PA10, 3, 1) +#define PIN_PA10__TCLK5 PINMUX_PIN(PIN_PA10, 6, 3) + +#define PIN_PA11 11 +#define PIN_PA11__GPIO PINMUX_PIN(PIN_PA11, 0, 0) +#define PIN_PA11__SDMMC0_DS PINMUX_PIN(PIN_PA11, 1, 1) +#define PIN_PA11__FLEXCOM0_IO4 PINMUX_PIN(PIN_PA11, 2, 1) +#define PIN_PA11__NANDRDY PINMUX_PIN(PIN_PA11, 3, 1) +#define PIN_PA11__TIOB3 PINMUX_PIN(PIN_PA11, 6, 3) + +#define PIN_PA12 12 +#define PIN_PA12__GPIO PINMUX_PIN(PIN_PA12, 0, 0) +#define PIN_PA12__FLEXCOM0_IO0 PINMUX_PIN(PIN_PA12, 2, 1) +#define PIN_PA12__NRD PINMUX_PIN(PIN_PA12, 3, 1) +#define PIN_PA12__PCK0 PINMUX_PIN(PIN_PA12, 4, 1) +#define PIN_PA12__EXT_IRQ0 PINMUX_PIN(PIN_PA12, 5, 1) +#define PIN_PA12__TIOA3 PINMUX_PIN(PIN_PA12, 6, 3) + +#define PIN_PA13 13 +#define PIN_PA13__GPIO PINMUX_PIN(PIN_PA13, 0, 0) +#define PIN_PA13__FLEXCOM0_IO1 PINMUX_PIN(PIN_PA13, 2, 1) +#define PIN_PA13__NCS0 PINMUX_PIN(PIN_PA13, 3, 1) +#define PIN_PA13__PCK1 PINMUX_PIN(PIN_PA13, 4, 1) +#define PIN_PA13__TCLK3 PINMUX_PIN(PIN_PA13, 6, 3) + +#define PIN_PA14 14 +#define PIN_PA14__GPIO PINMUX_PIN(PIN_PA14, 0, 0) +#define PIN_PA14__FLEXCOM4_IO4 PINMUX_PIN(PIN_PA14, 1, 1) +#define PIN_PA14__SDMMC0_WP PINMUX_PIN(PIN_PA14, 2, 1) +#define PIN_PA14__FLEXCOM3_IO0 PINMUX_PIN(PIN_PA14, 3, 4) + +#define PIN_PA15 15 +#define PIN_PA15__GPIO PINMUX_PIN(PIN_PA15, 0, 0) +#define PIN_PA15__FLEXCOM4_IO3 PINMUX_PIN(PIN_PA15, 1, 1) +#define PIN_PA15__SDMMC0_1V8SEL PINMUX_PIN(PIN_PA15, 2, 1) +#define PIN_PA15__FLEXCOM3_IO1 PINMUX_PIN(PIN_PA15, 3, 4) + +#define PIN_PA16 16 +#define PIN_PA16__GPIO PINMUX_PIN(PIN_PA16, 0, 0) +#define PIN_PA16__FLEXCOM4_IO2 PINMUX_PIN(PIN_PA16, 1, 1) +#define PIN_PA16__SDMMCo_CD PINMUX_PIN(PIN_PA16, 2, 1) +#define PIN_PA16__PCK2 PINMUX_PIN(PIN_PA16, 4, 1) +#define PIN_PA16__EXT_IRQ1 PINMUX_PIN(PIN_PA16, 5, 1) + +#define PIN_PA17 17 +#define PIN_PA17__GPIO PINMUX_PIN(PIN_PA17, 0, 0) +#define PIN_PA17__FLEXCOM4_IO1 PINMUX_PIN(PIN_PA17, 1, 1) + +#define PIN_PA18 18 +#define PIN_PA18__GPIO PINMUX_PIN(PIN_PA18, 0, 0) +#define PIN_PA18__FLEXCOM4_IO0 PINMUX_PIN(PIN_PA18, 1, 1) + +#define PIN_PA19 19 +#define PIN_PA19__GPIO PINMUX_PIN(PIN_PA19, 0, 0) +#define PIN_PA19__TK0 PINMUX_PIN(PIN_PA19, 1, 1) +#define PIN_PA19__FLEXCOM4_IO5 PINMUX_PIN(PIN_PA19, 3, 1) +#define PIN_PA19__PWML0 PINMUX_PIN(PIN_PA19, 4, 3) + +#define PIN_PA20 20 +#define PIN_PA20__GPIO PINMUX_PIN(PIN_PA20, 0, 0) +#define PIN_PA20__TD0 PINMUX_PIN(PIN_PA20, 1, 1) +#define PIN_PA20__FLEXCOM3_IO4 PINMUX_PIN(PIN_PA20, 2, 2) +#define PIN_PA20__FLEXCOM4_IO6 PINMUX_PIN(PIN_PA20, 3, 1) +#define PIN_PA20__PWMH0 PINMUX_PIN(PIN_PA20, 4, 3) + +#define PIN_PA21 21 +#define PIN_PA21__GPIO PINMUX_PIN(PIN_PA21, 0, 0) +#define PIN_PA21__TF0 PINMUX_PIN(PIN_PA21, 1, 1) +#define PIN_PA21__FLEXCOM3_IO3 PINMUX_PIN(PIN_PA21, 2, 2) +#define PIN_PA21__PWML1 PINMUX_PIN(PIN_PA21, 4, 3) + +#define PIN_PA22 22 +#define PIN_PA22__GPIO PINMUX_PIN(PIN_PA22, 0, 0) +#define PIN_PA22__RD0 PINMUX_PIN(PIN_PA22, 1, 1) +#define PIN_PA22__FLEXCOM3_IO2 PINMUX_PIN(PIN_PA22, 2, 2) +#define PIN_PA22__PDMC0_DS1 PINMUX_PIN(PIN_PA22, 3, 1) +#define PIN_PA22__PWMH1 PINMUX_PIN(PIN_PA22, 4, 3) + +#define PIN_PA23 23 +#define PIN_PA23__GPIO PINMUX_PIN(PIN_PA23, 0, 0) +#define PIN_PA23__RK0 PINMUX_PIN(PIN_PA23, 1, 1) +#define PIN_PA23__FLEXCOM3_IO1 PINMUX_PIN(PIN_PA23, 2, 2) +#define PIN_PA23__PDMC0_CLK PINMUX_PIN(PIN_PA23, 3, 1) +#define PIN_PA23__PWML2 PINMUX_PIN(PIN_PA23, 4, 3) + +#define PIN_PA24 24 +#define PIN_PA24__GPIO PINMUX_PIN(PIN_PA24, 0, 0) +#define PIN_PA24__RF0 PINMUX_PIN(PIN_PA24, 1, 1) +#define PIN_PA24__FLEXCOM3_IO0 PINMUX_PIN(PIN_PA24, 2, 2) +#define PIN_PA24__PDMC0_DS0 PINMUX_PIN(PIN_PA24, 3, 1) +#define PIN_PA24__PWMH2 PINMUX_PIN(PIN_PA24, 4, 3) + +#define PIN_PA25 25 +#define PIN_PA25__GPIO PINMUX_PIN(PIN_PA25, 0, 0) +#define PIN_PA25__G0_TXCTL PINMUX_PIN(PIN_PA25, 1, 1) +#define PIN_PA25__FLEXCOM6_IO2 PINMUX_PIN(PIN_PA25, 2, 1) + +#define PIN_PA26 26 +#define PIN_PA26__GPIO PINMUX_PIN(PIN_PA26, 0, 0) +#define PIN_PA26__G0_TX0 PINMUX_PIN(PIN_PA26, 1, 1) +#define PIN_PA26__FLEXCOM6_IO3 PINMUX_PIN(PIN_PA26, 2, 1) + +#define PIN_PA27 27 +#define PIN_PA27__GPIO PINMUX_PIN(PIN_PA27, 0, 0) +#define PIN_PA27__G0_TX1 PINMUX_PIN(PIN_PA27, 1, 1) +#define PIN_PA27__FLEXCOM6_IO4 PINMUX_PIN(PIN_PA27, 2, 1) + +#define PIN_PA28 28 +#define PIN_PA28__GPIO PINMUX_PIN(PIN_PA28, 0, 0) +#define PIN_PA28__G0_RXCTL PINMUX_PIN(PIN_PA28, 1, 1) +#define PIN_PA28__FLEXCOM6_IO0 PINMUX_PIN(PIN_PA28, 2, 1) + +#define PIN_PA29 29 +#define PIN_PA29__GPIO PINMUX_PIN(PIN_PA29, 0, 0) +#define PIN_PA29__G0_RX0 PINMUX_PIN(PIN_PA29, 1, 1) +#define PIN_PA29__FLEXCOM6_IO1 PINMUX_PIN(PIN_PA29, 2, 1) + +#define PIN_PA30 30 +#define PIN_PA30__GPIO PINMUX_PIN(PIN_PA30, 0, 0) +#define PIN_PA30__G0_RX1 PINMUX_PIN(PIN_PA30, 1, 1) +#define PIN_PA30__FLEXCOM8_IO0 PINMUX_PIN(PIN_PA30, 2, 1) + +#define PIN_PA31 31 +#define PIN_PA31__GPIO PINMUX_PIN(PIN_PA31, 0, 0) +#define PIN_PA31__G0_MDC PINMUX_PIN(PIN_PA31, 1, 1) +#define PIN_PA31__FLEXCOM8_IO1 PINMUX_PIN(PIN_PA31, 2, 1) + +#define PIN_PB0 32 +#define PIN_PB0__GPIO PINMUX_PIN(PIN_PB0, 0, 0) +#define PIN_PB0__G0_MDIO PINMUX_PIN(PIN_PB0, 1, 1) +#define PIN_PB0__FLEXCOM8_IO3 PINMUX_PIN(PIN_PB0, 2, 2) + +#define PIN_PB1 33 +#define PIN_PB1__GPIO PINMUX_PIN(PIN_PB1, 0, 0) +#define PIN_PB1__G0_REFCK PINMUX_PIN(PIN_PB1, 1, 2) +#define PIN_PB1__FLEXCOM8_IO2 PINMUX_PIN(PIN_PB1, 2, 1) + +#define PIN_PB2 34 +#define PIN_PB2__GPIO PINMUX_PIN(PIN_PB2, 0, 0) +#define PIN_PB2__G0_RX2 PINMUX_PIN(PIN_PB2, 1, 1) +#define PIN_PB2__FLEXCOM8_IO4 PINMUX_PIN(PIN_PB2, 2, 1) +#define PIN_PB2__G0_RXER PINMUX_PIN(PIN_PB2, 3, 2) +#define PIN_PB2__RK0 PINMUX_PIN(PIN_PB2, 4, 2) + +#define PIN_PB3 35 +#define PIN_PB3__GPIO PINMUX_PIN(PIN_PB3, 0, 0) +#define PIN_PB3__G0_RXCK PINMUX_PIN(PIN_PB3, 1, 1) +#define PIN_PB3__FLEXCOM10_IO2 PINMUX_PIN(PIN_PB3, 2, 2) +#define PIN_PB3__TK0 PINMUX_PIN(PIN_PB3, 4, 2) + +#define PIN_PB4 36 +#define PIN_PB4__GPIO PINMUX_PIN(PIN_PB4, 0, 0) +#define PIN_PB4__G0_TX2 PINMUX_PIN(PIN_PB4, 1, 1) +#define PIN_PB4__FLEXCOM10_IO3 PINMUX_PIN(PIN_PB4, 2, 2) +#define PIN_PB4__TF0 PINMUX_PIN(PIN_PB4, 4, 2) + +#define PIN_PB5 37 +#define PIN_PB5__GPIO PINMUX_PIN(PIN_PB5, 0, 0) +#define PIN_PB5__G0_TX3 PINMUX_PIN(PIN_PB5, 1, 1) +#define PIN_PB5__FLEXCOM10_IO4 PINMUX_PIN(PIN_PB5, 2, 1) +#define PIN_PB5__TD0 PINMUX_PIN(PIN_PB5, 4, 2) + +#define PIN_PB6 38 +#define PIN_PB6__GPIO PINMUX_PIN(PIN_PB6, 0, 0) +#define PIN_PB6__G0_RX3 PINMUX_PIN(PIN_PB6, 1, 1) +#define PIN_PB6__FLEXCOM10_IO0 PINMUX_PIN(PIN_PB6, 2, 2) +#define PIN_PB6__RD0 PINMUX_PIN(PIN_PB6, 4, 2) + +#define PIN_PB7 39 +#define PIN_PB7__GPIO PINMUX_PIN(PIN_PB7, 0, 0) +#define PIN_PB7__G0_TSUCOMP PINMUX_PIN(PIN_PB7, 1, 1) +#define PIN_PB7__FLEXCOM10_IO1 PINMUX_PIN(PIN_PB7, 2, 2) +#define PIN_PB7__ADTRG PINMUX_PIN(PIN_PB7, 3, 1) +#define PIN_PB7__RF0 PINMUX_PIN(PIN_PB7, 4, 2) + +#define PIN_PB8 40 +#define PIN_PB8__GPIO PINMUX_PIN(PIN_PB8, 0, 0) +#define PIN_PB8__QSPI0_IO3 PINMUX_PIN(PIN_PB8, 1, 1) +#define PIN_PB8__PCK3 PINMUX_PIN(PIN_PB8, 2, 1) +#define PIN_PB8__FLEXCOM2_IO1 PINMUX_PIN(PIN_PB8, 4, 2) + +#define PIN_PB9 41 +#define PIN_PB9__GPIO PINMUX_PIN(PIN_PB9, 0, 0) +#define PIN_PB9__QSPI0_IO2 PINMUX_PIN(PIN_PB9, 1, 1) +#define PIN_PB9__FLEXCOM2_IO0 PINMUX_PIN(PIN_PB9, 4, 2) +#define PIN_PB9__PWMEXTRG0 PINMUX_PIN(PIN_PB9, 5, 1) + +#define PIN_PB10 42 +#define PIN_PB10__GPIO PINMUX_PIN(PIN_PB10, 0, 0) +#define PIN_PB10__QSPI0_IO1 PINMUX_PIN(PIN_PB10, 1, 1) +#define PIN_PB10__FLEXCOM2_IO4 PINMUX_PIN(PIN_PB10, 4, 2) +#define PIN_PB10__PWMEXTRG1 PINMUX_PIN(PIN_PB10, 5, 1) + +#define PIN_PB11 43 +#define PIN_PB11__GPIO PINMUX_PIN(PIN_PB11, 0, 0) +#define PIN_PB11__QSPI0_IO0 PINMUX_PIN(PIN_PB11, 1, 1) +#define PIN_PB11__FLEXCOM2_IO5 PINMUX_PIN(PIN_PB11, 4, 2) +#define PIN_PB11__PWML3 PINMUX_PIN(PIN_PB11, 5, 1) +#define PIN_PB11__TIOB3 PINMUX_PIN(PIN_PB11, 6, 2) + +#define PIN_PB12 44 +#define PIN_PB12__GPIO PINMUX_PIN(PIN_PB12, 0, 0) +#define PIN_PB12__QSPI0_CS PINMUX_PIN(PIN_PB12, 1, 1) +#define PIN_PB12__FLEXCOM2_IO3 PINMUX_PIN(PIN_PB12, 4, 2) +#define PIN_PB12__PWMFI1 PINMUX_PIN(PIN_PB12, 6, 1) +#define PIN_PB12__TIOA3 PINMUX_PIN(PIN_PB12, 6, 2) + +#define PIN_PB13 45 +#define PIN_PB13__GPIO PINMUX_PIN(PIN_PB13, 0, 0) +#define PIN_PB13__QSPI0_SCK PINMUX_PIN(PIN_PB13, 1, 1) +#define PIN_PB13__FLEXCOM2_IO2 PINMUX_PIN(PIN_PB13, 4, 2) +#define PIN_PB13__PWMFI0 PINMUX_PIN(PIN_PB13, 5, 1) +#define PIN_PB13__TCLK3 PINMUX_PIN(PIN_PB13, 6, 2) + +#define PIN_PB14 46 +#define PIN_PB14__GPIO PINMUX_PIN(PIN_PB14, 0, 0) +#define PIN_PB14__QSPI0_SCKN PINMUX_PIN(PIN_PB14, 1, 1) +#define PIN_PB14__QSPI1_SCK PINMUX_PIN(PIN_PB14, 2, 1) +#define PIN_PB14__I2SMCC0_CK PINMUX_PIN(PIN_PB14, 3, 3) +#define PIN_PB14__FLEXCOM10_IO5 PINMUX_PIN(PIN_PB14, 4, 1) +#define PIN_PB14__PWMH3 PINMUX_PIN(PIN_PB14, 5, 1) +#define PIN_PB14__FLEXCOM2_IO1 PINMUX_PIN(PIN_PB14, 7, 4) + +#define PIN_PB15 47 +#define PIN_PB15__GPIO PINMUX_PIN(PIN_PB15, 0, 0) +#define PIN_PB15__QSPI0_IO4 PINMUX_PIN(PIN_PB15, 1, 1) +#define PIN_PB15__QSPI1_IO0 PINMUX_PIN(PIN_PB15, 2, 1) +#define PIN_PB15__I2SMCC0_WS PINMUX_PIN(PIN_PB15, 3, 3) +#define PIN_PB15__FLEXCOM10_IO6 PINMUX_PIN(PIN_PB15, 4, 1) +#define PIN_PB15__PWML0 PINMUX_PIN(PIN_PB15, 5, 1) +#define PIN_PB15__TCLK4 PINMUX_PIN(PIN_PB15, 6, 2) +#define PIN_PB15__FLEXCOM2_IO0 PINMUX_PIN(PIN_PB15, 7, 4) + +#define PIN_PB16 48 +#define PIN_PB16__GPIO PINMUX_PIN(PIN_PB16, 0, 0) +#define PIN_PB16__QSPI0_IO5 PINMUX_PIN(PIN_PB16, 1, 1) +#define PIN_PB16__QSPI1_IO1 PINMUX_PIN(PIN_PB16, 2, 1) +#define PIN_PB16__I2SMCC0_DIN0 PINMUX_PIN(PIN_PB16, 3, 3) +#define PIN_PB16__FLEXCOM10_IO4 PINMUX_PIN(PIN_PB16, 4, 1) +#define PIN_PB16__PWMH0 PINMUX_PIN(PIN_PB16, 5, 1) +#define PIN_PB16__TIOB4 PINMUX_PIN(PIN_PB16, 6, 2) + +#define PIN_PB17 49 +#define PIN_PB17__GPIO PINMUX_PIN(PIN_PB17, 0, 0) +#define PIN_PB17__QSPI0_IO6 PINMUX_PIN(PIN_PB17, 1, 1) +#define PIN_PB17__QSPI1_IO2 PINMUX_PIN(PIN_PB17, 2, 1) +#define PIN_PB17__I2SMCC0_DOUT0 PINMUX_PIN(PIN_PB17, 3, 3) +#define PIN_PB17__FLEXCOM10_IO3 PINMUX_PIN(PIN_PB17, 4, 1) +#define PIN_PB17__PWML1 PINMUX_PIN(PIN_PB17, 5, 1) +#define PIN_PB17__TIOA4 PINMUX_PIN(PIN_PB17, 6, 2) + +#define PIN_PB18 50 +#define PIN_PB18__GPIO PINMUX_PIN(PIN_PB18, 0, 0) +#define PIN_PB18__QSPI0_IO7 PINMUX_PIN(PIN_PB18, 1, 1) +#define PIN_PB18__QSPI1_IO3 PINMUX_PIN(PIN_PB18, 2, 1) +#define PIN_PB18__I2SMCC0_MCK PINMUX_PIN(PIN_PB18, 3, 3) +#define PIN_PB18__FLEXCOM10_IO2 PINMUX_PIN(PIN_PB18, 4, 1) +#define PIN_PB18__PWMH1 PINMUX_PIN(PIN_PB18, 5, 1) +#define PIN_PB18__TIOA5 PINMUX_PIN(PIN_PB18, 6, 2) + +#define PIN_PB19 51 +#define PIN_PB19__GPIO PINMUX_PIN(PIN_PB19, 0, 0) +#define PIN_PB19__QSPI0_DQS PINMUX_PIN(PIN_PB19, 1, 1) +#define PIN_PB19__EXT_IRQ1 PINMUX_PIN(PIN_PB19, 2, 2) +#define PIN_PB19__PCK4 PINMUX_PIN(PIN_PB19, 3, 1) +#define PIN_PB19__FLEXCOM10_IO1 PINMUX_PIN(PIN_PB19, 4, 1) +#define PIN_PB19__PWML2 PINMUX_PIN(PIN_PB19, 5, 1) +#define PIN_PB19__TIOB5 PINMUX_PIN(PIN_PB19, 6, 2) + +#define PIN_PB20 52 +#define PIN_PB20__GPIO PINMUX_PIN(PIN_PB20, 0, 0) +#define PIN_PB20__QSPI0_INT PINMUX_PIN(PIN_PB20, 1, 1) +#define PIN_PB20__QSPI1_CS PINMUX_PIN(PIN_PB20, 2, 1) +#define PIN_PB20__FLEXCOM10_IO0 PINMUX_PIN(PIN_PB20, 4, 1) +#define PIN_PB20__PWMH2 PINMUX_PIN(PIN_PB20, 5, 1) +#define PIN_PB20__TCLK5 PINMUX_PIN(PIN_PB20, 6, 2) + +#define PIN_PB21 53 +#define PIN_PB21__GPIO PINMUX_PIN(PIN_PB21, 0, 0) +#define PIN_PB21__SDMMC1_RSTN PINMUX_PIN(PIN_PB21, 1, 1) +#define PIN_PB21__FLEXCOM6_IO4 PINMUX_PIN(PIN_PB21, 2, 2) +#define PIN_PB21__TIOB2 PINMUX_PIN(PIN_PB21, 3, 2) +#define PIN_PB21__ADTRG PINMUX_PIN(PIN_PB21, 4, 2) +#define PIN_PB21__EXT_IRQ0 PINMUX_PIN(PIN_PB21, 5, 2) + +#define PIN_PB22 54 +#define PIN_PB22__GPIO PINMUX_PIN(PIN_PB22, 0, 0) +#define PIN_PB22__SDMMC1_CMD PINMUX_PIN(PIN_PB22, 1, 1) +#define PIN_PB22__FLEXCOM6_IO3 PINMUX_PIN(PIN_PB22, 2, 2) +#define PIN_PB22__TCLK2 PINMUX_PIN(PIN_PB22, 3, 2) + +#define PIN_PB23 55 +#define PIN_PB23__GPIO PINMUX_PIN(PIN_PB23, 0, 0) +#define PIN_PB23__SDMMC1_CK PINMUX_PIN(PIN_PB23, 1, 1) +#define PIN_PB23__FLEXCOM6_IO2 PINMUX_PIN(PIN_PB23, 2, 2) +#define PIN_PB23__TIOA2 PINMUX_PIN(PIN_PB23, 3, 2) + +#define PIN_PB24 56 +#define PIN_PB24__GPIO PINMUX_PIN(PIN_PB24, 0, 0) +#define PIN_PB24__SDMMC1_DAT0 PINMUX_PIN(PIN_PB24, 1, 1) +#define PIN_PB24__FLEXCOM6_IO0 PINMUX_PIN(PIN_PB24, 2, 2) + +#define PIN_PB25 57 +#define PIN_PB25__GPIO PINMUX_PIN(PIN_PB25, 0, 0) +#define PIN_PB25__SDMMC1_DAT1 PINMUX_PIN(PIN_PB25, 1, 1) +#define PIN_PB25__FLEXCOM6_IO1 PINMUX_PIN(PIN_PB25, 2, 2) +#define PIN_PB25__TIOB2 PINMUX_PIN(PIN_PB25, 3, 1) + +#define PIN_PB26 58 +#define PIN_PB26__GPIO PINMUX_PIN(PIN_PB26, 0, 0) +#define PIN_PB26__SDMMC1_DAT2 PINMUX_PIN(PIN_PB26, 1, 1) +#define PIN_PB26__FLEXCOM8_IO0 PINMUX_PIN(PIN_PB26, 2, 3) +#define PIN_PB26__TCLK2 PINMUX_PIN(PIN_PB26, 3, 1) + +#define PIN_PB27 59 +#define PIN_PB27__GPIO PINMUX_PIN(PIN_PB27, 0, 0) +#define PIN_PB27__SDMMC1_DAT3 PINMUX_PIN(PIN_PB27, 1, 1) +#define PIN_PB27__FLEXCOM8_IO1 PINMUX_PIN(PIN_PB27, 2, 3) +#define PIN_PB27__TIOA2 PINMUX_PIN(PIN_PB27, 3, 1) + +#define PIN_PB28 60 +#define PIN_PB28__GPIO PINMUX_PIN(PIN_PB28, 0, 0) +#define PIN_PB28__SDMMC1_WP PINMUX_PIN(PIN_PB28, 1, 1) +#define PIN_PB28__FLEXCOM1_IO0 PINMUX_PIN(PIN_PB28, 3, 3) +#define PIN_PB28__D15 PINMUX_PIN(PIN_PB28, 5, 1) + +#define PIN_PB29 61 +#define PIN_PB29__GPIO PINMUX_PIN(PIN_PB29, 0, 0) +#define PIN_PB29__SDMMC1_CD PINMUX_PIN(PIN_PB29, 1, 1) +#define PIN_PB29__I2SMCC0_MCK PINMUX_PIN(PIN_PB29, 2, 1) +#define PIN_PB29__FLEXCOM1_IO1 PINMUX_PIN(PIN_PB29, 3, 3) +#define PIN_PB29__D14 PINMUX_PIN(PIN_PB29, 5, 2) + +#define PIN_PB30 62 +#define PIN_PB30__GPIO PINMUX_PIN(PIN_PB30, 0, 0) +#define PIN_PB30__SDMMC1_1V8SEL PINMUX_PIN(PIN_PB30, 1, 1) +#define PIN_PB30__I2SMCC1_MCK PINMUX_PIN(PIN_PB30, 2, 2) +#define PIN_PB30__FLEXCOM1_IO2 PINMUX_PIN(PIN_PB30, 3, 3) +#define PIN_PB30__TIOA1 PINMUX_PIN(PIN_PB30, 4, 1) +#define PIN_PB30__NCS1 PINMUX_PIN(PIN_PB30, 5, 1) + +#define PIN_PB31 63 +#define PIN_PB31__GPIO PINMUX_PIN(PIN_PB31, 0, 0) +#define PIN_PB31__PCK7 PINMUX_PIN(PIN_PB31, 1, 2) +#define PIN_PB31__I2SMCC1_DIN1 PINMUX_PIN(PIN_PB31, 2, 1) +#define PIN_PB31__FLEXCOM1_IO3 PINMUX_PIN(PIN_PB31, 3, 3) +#define PIN_PB31__TCLK1 PINMUX_PIN(PIN_PB31, 4, 1) +#define PIN_PB31__NWE PINMUX_PIN(PIN_PB31, 5, 2) + +#define PIN_PC0 64 +#define PIN_PC0__GPIO PINMUX_PIN(PIN_PC0, 0, 0) +#define PIN_PC0__PCK6 PINMUX_PIN(PIN_PC0, 1, 2) +#define PIN_PC0__I2SMCC1_DIN2 PINMUX_PIN(PIN_PC0, 2, 1) +#define PIN_PC0__FLEXCOM9_IO4 PINMUX_PIN(PIN_PC0, 3, 2) +#define PIN_PC0__TIOB1 PINMUX_PIN(PIN_PC0, 4, 1) +#define PIN_PC0__NWR1 PINMUX_PIN(PIN_PC0, 5, 1) + +#define PIN_PC1 65 +#define PIN_PC1__GPIO PINMUX_PIN(PIN_PC1, 0, 0) +#define PIN_PC1__PCK5 PINMUX_PIN(PIN_PC1, 1, 1) +#define PIN_PC1__FLEXCOM9_IO2 PINMUX_PIN(PIN_PC1, 3, 2) +#define PIN_PC1__SMCK PINMUX_PIN(PIN_PC1, 5, 1) + +#define PIN_PC2 66 +#define PIN_PC2__GPIO PINMUX_PIN(PIN_PC2, 0, 0) +#define PIN_PC2__EXT_IRQ0 PINMUX_PIN(PIN_PC2, 1, 3) +#define PIN_PC2__FLEXCOM9_IO3 PINMUX_PIN(PIN_PC2, 3, 2) +#define PIN_PC2__A11 PINMUX_PIN(PIN_PC2, 5, 1) + +#define PIN_PC3 67 +#define PIN_PC3__GPIO PINMUX_PIN(PIN_PC3, 0, 0) +#define PIN_PC3__SPDIF_RX PINMUX_PIN(PIN_PC3, 1, 2) +#define PIN_PC3__FLEXCOM9_IO0 PINMUX_PIN(PIN_PC3, 3, 2) +#define PIN_PC3__FLEXCOM0_IO4 PINMUX_PIN(PIN_PC3, 4, 2) +#define PIN_PC3__A10 PINMUX_PIN(PIN_PC3, 5, 1) + +#define PIN_PC4 68 +#define PIN_PC4__GPIO PINMUX_PIN(PIN_PC4, 0, 0) +#define PIN_PC4__SPDIF_TX PINMUX_PIN(PIN_PC4, 1, 2) +#define PIN_PC4__FLEXCOM9_IO1 PINMUX_PIN(PIN_PC4, 3, 2) +#define PIN_PC4__FLEXCOM0_IO3 PINMUX_PIN(PIN_PC4, 4, 2) +#define PIN_PC4__D0 PINMUX_PIN(PIN_PC4, 5, 2) + +#define PIN_PC5 69 +#define PIN_PC5__GPIO PINMUX_PIN(PIN_PC5, 0, 0) +#define PIN_PC5__I3CC_SDASPUE PINMUX_PIN(PIN_PC5, 1, 1) +#define PIN_PC5__I2SMCC1_DIN3 PINMUX_PIN(PIN_PC5, 2, 1) +#define PIN_PC5__FLEXCOM0_IO2 PINMUX_PIN(PIN_PC5, 4, 2) +#define PIN_PC5__D1 PINMUX_PIN(PIN_PC5, 5, 2) + +#define PIN_PC6 70 +#define PIN_PC6__GPIO PINMUX_PIN(PIN_PC6, 0, 0) +#define PIN_PC6__I3CC_SCL PINMUX_PIN(PIN_PC6, 1, 1) +#define PIN_PC6__FLEXCOM0_IO1 PINMUX_PIN(PIN_PC6, 4, 2) +#define PIN_PC6__D4 PINMUX_PIN(PIN_PC6, 5, 2) + +#define PIN_PC7 71 +#define PIN_PC7__GPIO PINMUX_PIN(PIN_PC7, 0, 0) +#define PIN_PC7__I3CC_SDA PINMUX_PIN(PIN_PC7, 1, 1) +#define PIN_PC7__FLEXCOM0_IO0 PINMUX_PIN(PIN_PC7, 4, 2) +#define PIN_PC7__D5 PINMUX_PIN(PIN_PC7, 5, 2) + +#define PIN_PC8 72 +#define PIN_PC8__GPIO PINMUX_PIN(PIN_PC8, 0, 0) +#define PIN_PC8__I2SMCC0_DIN1 PINMUX_PIN(PIN_PC8, 1, 1) +#define PIN_PC8__PDMC0_DS1 PINMUX_PIN(PIN_PC8, 2, 2) +#define PIN_PC8__I2SMCC1_DOUT1 PINMUX_PIN(PIN_PC8, 3, 1) +#define PIN_PC8__FLEXCOM9_IO0 PINMUX_PIN(PIN_PC8, 4, 1) +#define PIN_PC8__D6 PINMUX_PIN(PIN_PC8, 5, 2) + +#define PIN_PC9 73 +#define PIN_PC9__GPIO PINMUX_PIN(PIN_PC9, 0, 0) +#define PIN_PC9__I2SMCC0_DIN2 PINMUX_PIN(PIN_PC9, 1, 1) +#define PIN_PC9__PDMC0_CLK PINMUX_PIN(PIN_PC9, 2, 2) +#define PIN_PC9__I2SMCC1_DOUT2 PINMUX_PIN(PIN_PC9, 3, 1) +#define PIN_PC9__FLEXCOM9_IO1 PINMUX_PIN(PIN_PC9, 4, 1) +#define PIN_PC9__D7 PINMUX_PIN(PIN_PC9, 5, 2) + +#define PIN_PC10 74 +#define PIN_PC10__GPIO PINMUX_PIN(PIN_PC10, 0, 0) +#define PIN_PC10__I2SMCC0_DIN3 PINMUX_PIN(PIN_PC10, 1, 1) +#define PIN_PC10__PDMC0_DS0 PINMUX_PIN(PIN_PC10, 2, 2) +#define PIN_PC10__I2SMCC1_DOUT3 PINMUX_PIN(PIN_PC10, 3, 1) +#define PIN_PC10__FLEXCOM9_IO2 PINMUX_PIN(PIN_PC10, 4, 1) +#define PIN_PC10__D2 PINMUX_PIN(PIN_PC10, 5, 2) + +#define PIN_PC11 75 +#define PIN_PC11__GPIO PINMUX_PIN(PIN_PC11, 0, 0) +#define PIN_PC11__I2SMCC0_DOUT1 PINMUX_PIN(PIN_PC11, 1, 1) +#define PIN_PC11__PDMC1_DS0 PINMUX_PIN(PIN_PC11, 2, 1) +#define PIN_PC11__FLEXCOM9_IO3 PINMUX_PIN(PIN_PC11, 4, 1) +#define PIN_PC10__D3 PINMUX_PIN(PIN_PC10, 5, 2) + +#define PIN_PC12 76 +#define PIN_PC12__GPIO PINMUX_PIN(PIN_PC12, 0, 0) +#define PIN_PC12__I2SMCC0_DOUT2 PINMUX_PIN(PIN_PC12, 1, 1) +#define PIN_PC12__PDMC1_CLK PINMUX_PIN(PIN_PC12, 2, 1) +#define PIN_PC12__FLEXCOM9_IO4 PINMUX_PIN(PIN_PC12, 4, 1) +#define PIN_PC12__A9 PINMUX_PIN(PIN_PC12, 5, 1) + +#define PIN_PC13 77 +#define PIN_PC13__GPIO PINMUX_PIN(PIN_PC13, 0, 0) +#define PIN_PC13__I2SMCC0_DOUT3 PINMUX_PIN(PIN_PC13, 1, 1) +#define PIN_PC13__PDMC1_DS1 PINMUX_PIN(PIN_PC13, 2, 1) +#define PIN_PC13__A8 PINMUX_PIN(PIN_PC13, 5, 1) + +#define PIN_PC14 78 +#define PIN_PC14__GPIO PINMUX_PIN(PIN_PC14, 0, 0) +#define PIN_PC14__I2SMCC1_DIN0 PINMUX_PIN(PIN_PC14, 1, 1) +#define PIN_PC14__SPDIF_RX PINMUX_PIN(PIN_PC14, 2, 3) +#define PIN_PC14__FLEXCOM1_IO0 PINMUX_PIN(PIN_PC14, 3, 2) +#define PIN_PC14__A7 PINMUX_PIN(PIN_PC14, 5, 1) + +#define PIN_PC15 79 +#define PIN_PC15__GPIO PINMUX_PIN(PIN_PC15, 0, 0) +#define PIN_PC15__I2SMCC1_WS PINMUX_PIN(PIN_PC15, 1, 1) +#define PIN_PC15__PDMC1_DS1 PINMUX_PIN(PIN_PC15, 2, 2) +#define PIN_PC15__FLEXCOM1_IO1 PINMUX_PIN(PIN_PC15, 3, 2) +#define PIN_PC15__A6 PINMUX_PIN(PIN_PC15, 5, 1) + +#define PIN_PC16 80 +#define PIN_PC16__GPIO PINMUX_PIN(PIN_PC16, 0, 0) +#define PIN_PC16__I2SMCC1_CK PINMUX_PIN(PIN_PC16, 1, 1) +#define PIN_PC16__PDMC1_CLK PINMUX_PIN(PIN_PC16, 2, 2) +#define PIN_PC16__FLEXCOM1_IO2 PINMUX_PIN(PIN_PC16, 3, 2) +#define PIN_PC16__TIOA1 PINMUX_PIN(PIN_PC16, 4, 2) +#define PIN_PC16__A5 PINMUX_PIN(PIN_PC16, 5, 1) + +#define PIN_PC17 81 +#define PIN_PC17__GPIO PINMUX_PIN(PIN_PC17, 0, 0) +#define PIN_PC17__I2SMCC1_DOUT0 PINMUX_PIN(PIN_PC17, 1, 1) +#define PIN_PC17__PDMC1_DS0 PINMUX_PIN(PIN_PC17, 2, 2) +#define PIN_PC17__FLEXCOM1_IO3 PINMUX_PIN(PIN_PC17, 3, 2) +#define PIN_PC17__TCLK1 PINMUX_PIN(PIN_PC17, 4, 2) +#define PIN_PC17__A4 PINMUX_PIN(PIN_PC17, 5, 1) + +#define PIN_PC18 82 +#define PIN_PC18__GPIO PINMUX_PIN(PIN_PC18, 0, 0) +#define PIN_PC18__I2SMCC0_DIN0 PINMUX_PIN(PIN_PC18, 1, 1) +#define PIN_PC18__SPDIF_TX PINMUX_PIN(PIN_PC18, 2, 3) +#define PIN_PC18__FLEXCOM1_IO4 PINMUX_PIN(PIN_PC18, 3, 2) +#define PIN_PC18__TIOB1 PINMUX_PIN(PIN_PC18, 4, 2) +#define PIN_PC18__A3 PINMUX_PIN(PIN_PC18, 5, 1) + +#define PIN_PC19 83 +#define PIN_PC19__GPIO PINMUX_PIN(PIN_PC19, 0, 0) +#define PIN_PC19__I2SMCC0_WS PINMUX_PIN(PIN_PC19, 1, 1) +#define PIN_PC19__PCK6 PINMUX_PIN(PIN_PC19, 2, 1) +#define PIN_PC19__A2 PINMUX_PIN(PIN_PC19, 5, 1) + +#define PIN_PC20 84 +#define PIN_PC20__GPIO PINMUX_PIN(PIN_PC20, 0, 0) +#define PIN_PC20__I2SMCC0_DOUT0 PINMUX_PIN(PIN_PC20, 1, 1) +#define PIN_PC20__A1 PINMUX_PIN(PIN_PC20, 5, 1) + +#define PIN_PC21 85 +#define PIN_PC21__GPIO PINMUX_PIN(PIN_PC21, 0, 0) +#define PIN_PC21__I2SMCC0_CK PINMUX_PIN(PIN_PC21, 1, 1) +#define PIN_PC21__PCK7 PINMUX_PIN(PIN_PC21, 2, 1) +#define PIN_PC21__A0 PINMUX_PIN(PIN_PC21, 5, 1) + +#define PIN_PC22 86 +#define PIN_PC22__GPIO PINMUX_PIN(PIN_PC22, 0, 0) +#define PIN_PC22__NTRST PINMUX_PIN(PIN_PC22, 1, 1) +#define PIN_PC22__NWAIT PINMUX_PIN(PIN_PC22, 5, 1) + +#define PIN_PC23 87 +#define PIN_PC23__GPIO PINMUX_PIN(PIN_PC23, 0, 0) +#define PIN_PC23__TCK_SWCLK PINMUX_PIN(PIN_PC23, 1, 1) + +#define PIN_PC24 88 +#define PIN_PC24__GPIO PINMUX_PIN(PIN_PC24, 0, 0) +#define PIN_PC24__TMS_SWDIO PINMUX_PIN(PIN_PC24, 1, 1) + +#define PIN_PC25 89 +#define PIN_PC25__GPIO PINMUX_PIN(PIN_PC25, 0, 0) +#define PIN_PC25__TDI PINMUX_PIN(PIN_PC25, 1, 1) + +#define PIN_PC26 90 +#define PIN_PC26__GPIO PINMUX_PIN(PIN_PC26, 0, 0) +#define PIN_PC26__TDO PINMUX_PIN(PIN_PC26, 1, 1) +#define PIN_PC26__A15 PINMUX_PIN(PIN_PC26, 5, 1) + +#define PIN_PC27 91 +#define PIN_PC27__GPIO PINMUX_PIN(PIN_PC27, 0, 0) +#define PIN_PC27__SDMMC2_CMD PINMUX_PIN(PIN_PC27, 1, 1) +#define PIN_PC27__FLEXCOM8_IO0 PINMUX_PIN(PIN_PC27, 2, 2) +#define PIN_PC27__TD1 PINMUX_PIN(PIN_PC27, 4, 2) +#define PIN_PC27__D8 PINMUX_PIN(PIN_PC27, 5, 1) + +#define PIN_PC28 92 +#define PIN_PC28__GPIO PINMUX_PIN(PIN_PC28, 0, 0) +#define PIN_PC28__SDMMC2_CK PINMUX_PIN(PIN_PC28, 1, 1) +#define PIN_PC28__FLEXCOM8_IO1 PINMUX_PIN(PIN_PC28, 2, 2) +#define PIN_PC28__TF1 PINMUX_PIN(PIN_PC28, 4, 2) +#define PIN_PC28__D9 PINMUX_PIN(PIN_PC28, 5, 1) + +#define PIN_PC29 93 +#define PIN_PC29__GPIO PINMUX_PIN(PIN_PC29, 0, 0) +#define PIN_PC29__SDMMC2_DAT0 PINMUX_PIN(PIN_PC29, 1, 1) +#define PIN_PC29__FLEXCOM8_IO2 PINMUX_PIN(PIN_PC29, 2, 2) +#define PIN_PC29__TK1 PINMUX_PIN(PIN_PC29, 4, 2) +#define PIN_PC29__D10 PINMUX_PIN(PIN_PC29, 5, 1) +#define PIN_PC29__TCLK0 PINMUX_PIN(PIN_PC29, 6, 1) + +#define PIN_PC30 94 +#define PIN_PC30__GPIO PINMUX_PIN(PIN_PC30, 0, 0) +#define PIN_PC30__SDMMC2_DAT1 PINMUX_PIN(PIN_PC30, 1, 1) +#define PIN_PC30__FLEXCOM8_IO3 PINMUX_PIN(PIN_PC30, 2, 2) +#define PIN_PC30__RD1 PINMUX_PIN(PIN_PC30, 4, 2) +#define PIN_PC30__D11 PINMUX_PIN(PIN_PC30, 5, 1) +#define PIN_PC30__TIOA0 PINMUX_PIN(PIN_PC30, 6, 1) + +#define PIN_PC31 95 +#define PIN_PC31__GPIO PINMUX_PIN(PIN_PC31, 0, 0) +#define PIN_PC31__SDMMC2_DAT2 PINMUX_PIN(PIN_PC31, 1, 1) +#define PIN_PC31__FLEXCOM8_IO4 PINMUX_PIN(PIN_PC31, 2, 2) +#define PIN_PC31__PCK0 PINMUX_PIN(PIN_PC31, 3, 2) +#define PIN_PC31__RK1 PINMUX_PIN(PIN_PC31, 4, 2) +#define PIN_PC31__D12 PINMUX_PIN(PIN_PC31, 5, 1) +#define PIN_PC31__TIOB0 PINMUX_PIN(PIN_PC31, 6, 1) + +#define PIN_PD0 96 +#define PIN_PD0__GPIO PINMUX_PIN(PIN_PD0, 0, 0) +#define PIN_PD0__SDMMC2_DAT3 PINMUX_PIN(PIN_PD0, 1, 1) +#define PIN_PD0__PCK1 PINMUX_PIN(PIN_PD0, 3, 2) +#define PIN_PD0__RF1 PINMUX_PIN(PIN_PD0, 4, 2) +#define PIN_PD0__D13 PINMUX_PIN(PIN_PD0, 5, 1) + +#define PIN_PD1 97 +#define PIN_PD1__GPIO PINMUX_PIN(PIN_PD1, 0, 0) +#define PIN_PD1__SDMMC2_WP PINMUX_PIN(PIN_PD1, 1, 1) +#define PIN_PD1__FLEXCOM1_IO5 PINMUX_PIN(PIN_PD1, 2, 1) +#define PIN_PD1__LCDC_HSYNC PINMUX_PIN(PIN_PD1, 3, 2) +#define PIN_PD1__FLEXCOM3_IO0 PINMUX_PIN(PIN_PD1, 4, 3) + +#define PIN_PD2 98 +#define PIN_PD2__GPIO PINMUX_PIN(PIN_PD2, 0, 0) +#define PIN_PD2__SDMMC2_CD PINMUX_PIN(PIN_PD2, 1, 1) +#define PIN_PD2__FLEXCOM1_IO6 PINMUX_PIN(PIN_PD2, 2, 1) +#define PIN_PD2__LCDC_VSYNC PINMUX_PIN(PIN_PD2, 3, 2) +#define PIN_PD2__FLEXCOM3_IO1 PINMUX_PIN(PIN_PD2, 4, 3) + +#define PIN_PD3 99 +#define PIN_PD3__GPIO PINMUX_PIN(PIN_PD3, 0, 0) +#define PIN_PD3__SDMMC2_1V8SEL PINMUX_PIN(PIN_PD3, 1, 1) +#define PIN_PD3__FLEXCOM1_IO4 PINMUX_PIN(PIN_PD3, 2, 1) +#define PIN_PD3__TIOA0 PINMUX_PIN(PIN_PD3, 3, 2) +#define PIN_PD3__FLEXCOM3_IO2 PINMUX_PIN(PIN_PD3, 4, 3) +#define PIN_PD3__EXT_IRQ1 PINMUX_PIN(PIN_PD3, 5, 3) + +#define PIN_PD4 100 +#define PIN_PD4__GPIO PINMUX_PIN(PIN_PD4, 0, 0) +#define PIN_PD4__LCDC_HSYNC PINMUX_PIN(PIN_PD4, 1, 1) +#define PIN_PD4__FLEXCOM1_IO2 PINMUX_PIN(PIN_PD4, 2, 1) +#define PIN_PD4__TIOB0 PINMUX_PIN(PIN_PD4, 3, 2) +#define PIN_PD4__FLEXCOM7_IO1 PINMUX_PIN(PIN_PD4, 4, 3) + +#define PIN_PD5 101 +#define PIN_PD5__GPIO PINMUX_PIN(PIN_PD5, 0, 0) +#define PIN_PD5__LCDC_VSYNC PINMUX_PIN(PIN_PD5, 1, 1) +#define PIN_PD5__FLEXCOM1_IO3 PINMUX_PIN(PIN_PD5, 2, 1) +#define PIN_PD5__TCLK0 PINMUX_PIN(PIN_PD5, 3, 2) +#define PIN_PD5__FLEXCOM7_IO0 PINMUX_PIN(PIN_PD5, 4, 3) + +#define PIN_PD6 102 +#define PIN_PD6__GPIO PINMUX_PIN(PIN_PD6, 0, 0) +#define PIN_PD6__LCDC_PWM PINMUX_PIN(PIN_PD6, 1, 1) +#define PIN_PD6__FLEXCOM1_IO1 PINMUX_PIN(PIN_PD6, 2, 1) +#define PIN_PD6__FLEXCOM7_IO2 PINMUX_PIN(PIN_PD6, 4, 3) + +#define PIN_PD7 103 +#define PIN_PD7__GPIO PINMUX_PIN(PIN_PD7, 0, 0) +#define PIN_PD7__LCDC_DISP PINMUX_PIN(PIN_PD7, 1, 1) +#define PIN_PD7__FLEXCOM1_IO0 PINMUX_PIN(PIN_PD7, 2, 1) +#define PIN_PD7__FLEXCOM7_IO3 PINMUX_PIN(PIN_PD7, 4, 3) + +#define PIN_PD8 104 +#define PIN_PD8__GPIO PINMUX_PIN(PIN_PD8, 0, 0) +#define PIN_PD8__CANTX0 PINMUX_PIN(PIN_PD8, 1, 1) +#define PIN_PD8__FLEXCOM7_IO0 PINMUX_PIN(PIN_PD8, 2, 1) + +#define PIN_PD9 105 +#define PIN_PD9__GPIO PINMUX_PIN(PIN_PD9, 0, 0) +#define PIN_PD9__CANRX0 PINMUX_PIN(PIN_PD9, 1, 1) +#define PIN_PD9__FLEXCOM7_IO1 PINMUX_PIN(PIN_PD9, 2, 1) + +#define PIN_PD10 106 +#define PIN_PD10__GPIO PINMUX_PIN(PIN_PD10, 0, 0) +#define PIN_PD10__CANTX1 PINMUX_PIN(PIN_PD10, 1, 1) +#define PIN_PD10__FLEXCOM7_IO2 PINMUX_PIN(PIN_PD10, 2, 1) +#define PIN_PD10__TIOA1 PINMUX_PIN(PIN_PD10, 3, 3) + +#define PIN_PD11 107 +#define PIN_PD11__GPIO PINMUX_PIN(PIN_PD11, 0, 0) +#define PIN_PD11__CANRX1 PINMUX_PIN(PIN_PD11, 1, 1) +#define PIN_PD11__FLEXCOM7_IO3 PINMUX_PIN(PIN_PD11, 2, 1) +#define PIN_PD11__TCLK1 PINMUX_PIN(PIN_PD11, 3, 3) + +#define PIN_PD12 108 +#define PIN_PD12__GPIO PINMUX_PIN(PIN_PD12, 0, 0) +#define PIN_PD12__CANTX2 PINMUX_PIN(PIN_PD12, 1, 1) +#define PIN_PD12__FLEXCOM7_IO4 PINMUX_PIN(PIN_PD12, 2, 1) +#define PIN_PD12__TIOB1 PINMUX_PIN(PIN_PD12, 3, 3) +#define PIN_PD12__PCK2 PINMUX_PIN(PIN_PD12, 4, 2) +#define PIN_PD12__FLEXCOM3_IO3 PINMUX_PIN(PIN_PD12, 5, 3) + +#define PIN_PD13 109 +#define PIN_PD13__GPIO PINMUX_PIN(PIN_PD13, 0, 0) +#define PIN_PD13__CANRX2 PINMUX_PIN(PIN_PD13, 1, 1) +#define PIN_PD13__FLEXCOM5_IO4 PINMUX_PIN(PIN_PD13, 2, 1) +#define PIN_PD13__TIOA2 PINMUX_PIN(PIN_PD13, 3, 3) +#define PIN_PD13__PCK3 PINMUX_PIN(PIN_PD13, 4, 2) + +#define PIN_PD14 110 +#define PIN_PD14__GPIO PINMUX_PIN(PIN_PD14, 0, 0) +#define PIN_PD14__CANTX3 PINMUX_PIN(PIN_PD14, 1, 1) +#define PIN_PD14__FLEXCOM5_IO2 PINMUX_PIN(PIN_PD14, 2, 1) +#define PIN_PD14__TIOB2 PINMUX_PIN(PIN_PD14, 3, 3) + +#define PIN_PD15 111 +#define PIN_PD15__GPIO PINMUX_PIN(PIN_PD15, 0, 0) +#define PIN_PD15__CANRX3 PINMUX_PIN(PIN_PD15, 1, 1) +#define PIN_PD15__FLEXCOM5_IO3 PINMUX_PIN(PIN_PD15, 2, 1) +#define PIN_PD15__TCLK2 PINMUX_PIN(PIN_PD15, 3, 3) + +#define PIN_PD16 112 +#define PIN_PD16__GPIO PINMUX_PIN(PIN_PD16, 0, 0) +#define PIN_PD16__CANTX4 PINMUX_PIN(PIN_PD16, 1, 1) +#define PIN_PD16__FLEXCOM5_IO0 PINMUX_PIN(PIN_PD16, 2, 1) + +#define PIN_PD17 113 +#define PIN_PD17__GPIO PINMUX_PIN(PIN_PD17, 0, 0) +#define PIN_PD17__CANRX4 PINMUX_PIN(PIN_PD17, 1, 1) +#define PIN_PD17__FLEXCOM5_IO1 PINMUX_PIN(PIN_PD17, 2, 1) + +#define PIN_PD18 114 +#define PIN_PD18__GPIO PINMUX_PIN(PIN_PD18, 0, 0) +#define PIN_PD18__FLEXCOM6_IO0 PINMUX_PIN(PIN_PD18, 2, 4) +#define PIN_PD18__CANTX1 PINMUX_PIN(PIN_PD18, 3, 2) +#define PIN_PD18__PCK4 PINMUX_PIN(PIN_PD18, 4, 2) + +#define PIN_PD19 115 +#define PIN_PD19__GPIO PINMUX_PIN(PIN_PD19, 0, 0) +#define PIN_PD19__FLEXCOM6_IO1 PINMUX_PIN(PIN_PD19, 2, 4) +#define PIN_PD19__CANRX1 PINMUX_PIN(PIN_PD19, 3, 2) +#define PIN_PD19__PCK2 PINMUX_PIN(PIN_PD19, 4, 3) + +#define PIN_PD20 116 +#define PIN_PD20__GPIO PINMUX_PIN(PIN_PD20, 0, 0) +#define PIN_PD20__PFLEXCOM6_IO2 PINMUX_PIN(PIN_PD20, 2, 4) +#define PIN_PD20__I2SMCC1_MCK PINMUX_PIN(PIN_PD20, 3, 2) +#define PIN_PD20__PCK3 PINMUX_PIN(PIN_PD20, 4, 3) + +#define PIN_PD21 117 +#define PIN_PD21__GPIO PINMUX_PIN(PIN_PD21, 0, 0) +#define PIN_PD21__G1_TXCTL PINMUX_PIN(PIN_PD21, 1, 2) +#define PIN_PD21__FLEXCOM6_IO2 PINMUX_PIN(PIN_PD21, 2, 3) +#define PIN_PD21__TK1 PINMUX_PIN(PIN_PD21, 3, 1) + +#define PIN_PD22 118 +#define PIN_PD22__GPIO PINMUX_PIN(PIN_PD22, 0, 0) +#define PIN_PD22__G1_TX0 PINMUX_PIN(PIN_PD22, 1, 1) +#define PIN_PD22__FLEXCOM6_IO3 PINMUX_PIN(PIN_PD22, 2, 3) +#define PIN_PD22__TF1 PINMUX_PIN(PIN_PD22, 3, 1) + +#define PIN_PD23 119 +#define PIN_PD23__GPIO PINMUX_PIN(PIN_PD23, 0, 0) +#define PIN_PD23__G1_TX1 PINMUX_PIN(PIN_PD23, 1, 1) +#define PIN_PD23__FLEXCOM6_IO4 PINMUX_PIN(PIN_PD23, 2, 3) +#define PIN_PD23__TD1 PINMUX_PIN(PIN_PD23, 3, 1) + +#define PIN_PD24 120 +#define PIN_PD24__GPIO PINMUX_PIN(PIN_PD24, 0, 0) +#define PIN_PD24__G1_RXCTL PINMUX_PIN(PIN_PD24, 1, 1) +#define PIN_PD24__FLEXCOM6_IO0 PINMUX_PIN(PIN_PD24, 2, 3) +#define PIN_PD24__RD1 PINMUX_PIN(PIN_PD24, 3, 1) +#define PIN_PD24__PDMC0_DS1 PINMUX_PIN(PIN_PD24, 5, 3) + +#define PIN_PD25 121 +#define PIN_PD25__GPIO PINMUX_PIN(PIN_PD25, 0, 0) +#define PIN_PD25__G1_MDC PINMUX_PIN(PIN_PD25, 1, 1) +#define PIN_PD25__FLEXCOM6_IO1 PINMUX_PIN(PIN_PD25, 2, 3) +#define PIN_PD25__RK1 PINMUX_PIN(PIN_PD25, 3, 1) +#define PIN_PD25__PDMC0_CLK PINMUX_PIN(PIN_PD25, 5, 3) + +#define PIN_PD26 122 +#define PIN_PD26__GPIO PINMUX_PIN(PIN_PD26, 0, 0) +#define PIN_PD26__G1_MDIO PINMUX_PIN(PIN_PD26, 1, 1) +#define PIN_PD26__FLEXCOM7_IO4 PINMUX_PIN(PIN_PD26, 2, 2) +#define PIN_PD26__RF1 PINMUX_PIN(PIN_PD26, 3, 1) +#define PIN_PD26__I2SMCC1_DIN2 PINMUX_PIN(PIN_PD26, 4, 2) +#define PIN_PD26__PDMC0_DS0 PINMUX_PIN(PIN_PD26, 5, 3) + +#define PIN_PD27 123 +#define PIN_PD27__GPIO PINMUX_PIN(PIN_PD27, 0, 0) +#define PIN_PD27__G1_RX0 PINMUX_PIN(PIN_PD27, 1, 1) +#define PIN_PD27__FLEXCOM7_IO0 PINMUX_PIN(PIN_PD27, 2, 2) +#define PIN_PD27__SPDIF_RX PINMUX_PIN(PIN_PD27, 3, 1) +#define PIN_PD27__I2SMCC1_DIN3 PINMUX_PIN(PIN_PD27, 4, 2) + +#define PIN_PD28 124 +#define PIN_PD28__GPIO PINMUX_PIN(PIN_PD28, 0, 0) +#define PIN_PD28__G1_RX1 PINMUX_PIN(PIN_PD28, 1, 1) +#define PIN_PD28__FLEXCOM7_IO1 PINMUX_PIN(PIN_PD28, 2, 2) +#define PIN_PD28__SPDIF_TX PINMUX_PIN(PIN_PD28, 3, 1) +#define PIN_PD28__I2SMCC1_DIN1 PINMUX_PIN(PIN_PD28, 4, 2) + +#define PIN_PD29 125 +#define PIN_PD29__GPIO PINMUX_PIN(PIN_PD29, 0, 0) +#define PIN_PD29__G1_REFCK PINMUX_PIN(PIN_PD29, 1, 2) +#define PIN_PD29__FLEXCOM7_IO2 PINMUX_PIN(PIN_PD29, 2, 2) +#define PIN_PD29__I2SMCC1_DOUT3 PINMUX_PIN(PIN_PD29, 3, 2) + +#define PIN_PD30 126 +#define PIN_PD30__GPIO PINMUX_PIN(PIN_PD30, 0, 0) +#define PIN_PD30__G1_RX2 PINMUX_PIN(PIN_PD30, 1, 1) +#define PIN_PD30__FLEXCOM7_IO3 PINMUX_PIN(PIN_PD30, 2, 2) +#define PIN_PD30__I2SMCC1_DOUT1 PINMUX_PIN(PIN_PD30, 3, 2) +#define PIN_PD30__PDMC1_DS1 PINMUX_PIN(PIN_PD30, 4, 3) +#define PIN_PD30__G1_RXER PINMUX_PIN(PIN_PD30, 5, 2) + +#define PIN_PD31 127 +#define PIN_PD31__GPIO PINMUX_PIN(PIN_PD31, 0, 0) +#define PIN_PD31__G1_RX3 PINMUX_PIN(PIN_PD31, 1, 1) +#define PIN_PD31__FLEXCOM5_IO4 PINMUX_PIN(PIN_PD31, 2, 2) +#define PIN_PD31__I2SMCC1_DOUT2 PINMUX_PIN(PIN_PD31, 3, 3) +#define PIN_PD31__PDMC1_DS0 PINMUX_PIN(PIN_PD31, 4, 3) + +#define PIN_PE0 128 +#define PIN_PE0__GPIO PINMUX_PIN(PIN_PE0, 0, 0) +#define PIN_PE0__G1_TX2 PINMUX_PIN(PIN_PE0, 1, 1) +#define PIN_PE0__FLEXCOM5_IO2 PINMUX_PIN(PIN_PE0, 2, 2) +#define PIN_PE0__I2SMCC1_DIN0 PINMUX_PIN(PIN_PE0, 3, 2) +#define PIN_PE0__PDMC1_CLK PINMUX_PIN(PIN_PE0, 4, 3) + +#define PIN_PE1 129 +#define PIN_PE1__GPIO PINMUX_PIN(PIN_PE1, 0, 0) +#define PIN_PE1__G1_TX3 PINMUX_PIN(PIN_PE1, 1, 1) +#define PIN_PE1__FLEXCOM5_IO3 PINMUX_PIN(PIN_PE1, 2, 2) +#define PIN_PE1__I2SMCC1_WS PINMUX_PIN(PIN_PE1, 3, 2) +#define PIN_PE1__PDMC0_DS1 PINMUX_PIN(PIN_PE1, 4, 4) + +#define PIN_PE2 130 +#define PIN_PE2__GPIO PINMUX_PIN(PIN_PE2, 0, 0) +#define PIN_PE2__G1_RXCK PINMUX_PIN(PIN_PE2, 1, 1) +#define PIN_PE2__FLEXCOM5_IO1 PINMUX_PIN(PIN_PE2, 2, 2) +#define PIN_PE2__I2SMCC1_CK PINMUX_PIN(PIN_PE2, 3, 2) +#define PIN_PE2__PDMC0_CLK PINMUX_PIN(PIN_PE2, 4, 4) + +#define PIN_PE3 131 +#define PIN_PE3__GPIO PINMUX_PIN(PIN_PE3, 0, 0) +#define PIN_PE3__G1_TSUCOMP PINMUX_PIN(PIN_PE3, 1, 1) +#define PIN_PE3__FLEXCOM5_IO0 PINMUX_PIN(PIN_PE3, 2, 2) +#define PIN_PE3__I2SMCC1_DOUT0 PINMUX_PIN(PIN_PE3, 3, 2) +#define PIN_PE3__PDMC0_DS0 PINMUX_PIN(PIN_PE3, 4, 4) + +#define PIN_PE4 132 +#define PIN_PE4__GPIO PINMUX_PIN(PIN_PE4, 0, 0) +#define PIN_PE4__LCDC_DAT0 PINMUX_PIN(PIN_PE4, 1, 1) +#define PIN_PE4__FLEXCOM2_IO2 PINMUX_PIN(PIN_PE4, 2, 1) +#define PIN_PE4__PWML0 PINMUX_PIN(PIN_PE4, 3, 2) +#define PIN_PE4__TIOA3 PINMUX_PIN(PIN_PE4, 4, 1) +#define PIN_PE4__I2SMCC0_DIN1 PINMUX_PIN(PIN_PE4, 5, 2) + +#define PIN_PE5 133 +#define PIN_PE5__GPIO PINMUX_PIN(PIN_PE5, 0, 0) +#define PIN_PE5__LCDC_DAT1 PINMUX_PIN(PIN_PE5, 1, 1) +#define PIN_PE5__FLEXCOM2_IO3 PINMUX_PIN(PIN_PE5, 2, 1) +#define PIN_PE5__PWMH0 PINMUX_PIN(PIN_PE5, 3, 2) +#define PIN_PE5__TIOB3 PINMUX_PIN(PIN_PE5, 4, 1) +#define PIN_PE5__I2SMCC0_DIN2 PINMUX_PIN(PIN_PE5, 5, 2) + +#define PIN_PE6 134 +#define PIN_PE6__GPIO PINMUX_PIN(PIN_PE6, 0, 0) +#define PIN_PE6__LCDC_DAT2 PINMUX_PIN(PIN_PE6, 1, 1) +#define PIN_PE6__FLEXCOM2_IO4 PINMUX_PIN(PIN_PE6, 2, 1) +#define PIN_PE6__PWML1 PINMUX_PIN(PIN_PE6, 3, 2) +#define PIN_PE6__TCLK3 PINMUX_PIN(PIN_PE6, 4, 1) +#define PIN_PE6__I2SMCC0_DIN3 PINMUX_PIN(PIN_PE6, 5, 2) + +#define PIN_PE7 135 +#define PIN_PE7__GPIO PINMUX_PIN(PIN_PE7, 0, 0) +#define PIN_PE7__LCDC_DAT3 PINMUX_PIN(PIN_PE7, 1, 1) +#define PIN_PE7__FLEXCOM2_IO5 PINMUX_PIN(PIN_PE7, 2, 1) +#define PIN_PE7__PWMH1 PINMUX_PIN(PIN_PE7, 3, 2) +#define PIN_PE7__TIOA4 PINMUX_PIN(PIN_PE7, 4, 1) +#define PIN_PE7__I2SMCC0_DOUT1 PINMUX_PIN(PIN_PE7, 5, 2) + +#define PIN_PE8 136 +#define PIN_PE8__GPIO PINMUX_PIN(PIN_PE8, 0, 0) +#define PIN_PE8__LCDC_DAT4 PINMUX_PIN(PIN_PE8, 1, 1) +#define PIN_PE8__FLEXCOM2_IO0 PINMUX_PIN(PIN_PE8, 2, 1) +#define PIN_PE8__PWML2 PINMUX_PIN(PIN_PE8, 3, 2) +#define PIN_PE8__TIOB4 PINMUX_PIN(PIN_PE8, 4, 1) +#define PIN_PE8__I2SMCC0_CK PINMUX_PIN(PIN_PE8, 5, 2) + +#define PIN_PE9 137 +#define PIN_PE9__GPIO PINMUX_PIN(PIN_PE9, 0, 0) +#define PIN_PE9__LCDC_DAT5 PINMUX_PIN(PIN_PE9, 1, 1) +#define PIN_PE9__FLEXCOM2_IO1 PINMUX_PIN(PIN_PE9, 2, 1) +#define PIN_PE9__PWMH2 PINMUX_PIN(PIN_PE9, 3, 2) +#define PIN_PE9__TCLK4 PINMUX_PIN(PIN_PE9, 4, 1) +#define PIN_PE9__I2SMCC0_WS PINMUX_PIN(PIN_PE9, 5, 2) + +#define PIN_PE10 138 +#define PIN_PE10__GPIO PINMUX_PIN(PIN_PE10, 0, 0) +#define PIN_PE10__LCDC_DAT6 PINMUX_PIN(PIN_PE10, 1, 1) +#define PIN_PE10__FLEXCOM2_IO6 PINMUX_PIN(PIN_PE10, 2, 1) +#define PIN_PE10__PWML3 PINMUX_PIN(PIN_PE10, 3, 2) +#define PIN_PE10__TIOA5 PINMUX_PIN(PIN_PE10, 4, 1) +#define PIN_PE10__I2SMCC0_DOUT2 PINMUX_PIN(PIN_PE10, 5, 2) + +#define PIN_PE11 139 +#define PIN_PE11__GPIO PINMUX_PIN(PIN_PE11, 0, 0) +#define PIN_PE11__LCDC_DAT7 PINMUX_PIN(PIN_PE11, 1, 1) +#define PIN_PE11__PWMH3 PINMUX_PIN(PIN_PE11, 3, 2) +#define PIN_PE11__TIOB5 PINMUX_PIN(PIN_PE11, 4, 1) +#define PIN_PE11__I2SMCC0_DOUT3 PINMUX_PIN(PIN_PE11, 5, 2) + +#define PIN_PE12 140 +#define PIN_PE12__GPIO PINMUX_PIN(PIN_PE12, 0, 0) +#define PIN_PE12__LCDC_DEN PINMUX_PIN(PIN_PE12, 1, 1) +#define PIN_PE12__PCK3 PINMUX_PIN(PIN_PE12, 2, 4) +#define PIN_PE12__PWMEXTRG0 PINMUX_PIN(PIN_PE12, 3, 2) +#define PIN_PE12__TCLK5 PINMUX_PIN(PIN_PE12, 4, 1) +#define PIN_PE12__I2SMCC0_DIN0 PINMUX_PIN(PIN_PE12, 5, 2) + +#define PIN_PE13 141 +#define PIN_PE13__GPIO PINMUX_PIN(PIN_PE13, 0, 0) +#define PIN_PE13__LCDC_PCK PINMUX_PIN(PIN_PE13, 1, 1) +#define PIN_PE13__PCK4 PINMUX_PIN(PIN_PE13, 2, 3) +#define PIN_PE13__PWMEXTRG1 PINMUX_PIN(PIN_PE13, 3, 2) +#define PIN_PE13__I2SMCC0DOUT0 PINMUX_PIN(PIN_PE13, 5, 2)
Signature · 1 line
2.43.0
Re: [PATCH v3 10/13] ARM: dts: at91: Add sama7d65 pinmux
Quoted 5 lines · On 06.12.2024 21:59, [email protected] wrote:
From: Ryan Wanner <[email protected]>
Add sama7d65 pin descriptions.
Signed-off-by Ryan Wanner <[email protected]>
PATCH v3 11/13 ARM: dts: microchip: add support for sama7d65_curiosity board
In reply to [email protected]From: Romain Sioen <[email protected]>
Add device tree support for the SAMA7D65 Curiosity board. Update the Makefile to include the new device tree file.
uart6 is related to flexcom6, hence not sorted in alphabetical order.
--- arch/arm/boot/dts/microchip/Makefile | 3 + .../dts/microchip/at91-sama7d65_curiosity.dts | 89 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 arch/arm/boot/dts/microchip/at91-sama7d65_curiosity.dts
arch/arm/boot/dts/microchip/Makefile +3 -0
@@ -12,6 +12,7 @@ DTC_FLAGS_at91-sama5d2_xplained := -@ DTC_FLAGS_at91-sama5d3_eds := -@ DTC_FLAGS_at91-sama5d3_xplained := -@ DTC_FLAGS_at91-sama5d4_xplained := -@ +DTC_FLAGS_at91-sama7d65_curiosity := -@ DTC_FLAGS_at91-sama7g54_curiosity := -@ DTC_FLAGS_at91-sama7g5ek := -@ dtb-$(CONFIG_SOC_AT91RM9200) += \
@@ -90,6 +91,8 @@ dtb-$(CONFIG_SOC_SAM_V7) += \ at91-sama5d4_xplained.dtb \ at91-sama5d4ek.dtb \ at91-vinco.dtb +dtb-$(CONFIG_SOC_SAMA7D65) += \ + at91-sama7d65_curiosity.dtb dtb-$(CONFIG_SOC_SAMA7G5) += \ at91-sama7g54_curiosity.dtb \ at91-sama7g5ek.dtb
arch/arm/boot/dts/microchip/at91-sama7d65_curiosity.dts new file +89 -0
89 lines not on this page · raw message
Signature · 1 line
2.43.0
Claudiu Beznea
maintainerRe: [PATCH v3 11/13] ARM: dts: microchip: add support for sama7d65_curiosity board
Quoted 83 lines · On 06.12.2024 21:59, [email protected] wrote:
From: Romain Sioen <[email protected]>
Add device tree support for the SAMA7D65 Curiosity board. Update the
Makefileto include the new device tree file.uart6 is related to flexcom6, hence not sorted in alphabetical order.
Signed-off-by Romain Sioen <[email protected]>Signed-off-by Varshini Rajendran <[email protected]>Signed-off-by Ryan Wanner <[email protected]>--- arch/arm/boot/dts/microchip/Makefile | 3 + .../dts/microchip/at91-sama7d65_curiosity.dts | 89 +++++++++++++++++++ 2 files changed, 92 insertions(+) create mode 100644 arch/arm/boot/dts/microchip/at91-sama7d65_curiosity.dtsarch/arm/boot/dts/microchip/Makefile +3
-0@@ -12,6 +12,7 @@ DTC_FLAGS_at91-sama5d2_xplained := -@ DTC_FLAGS_at91-sama5d3_eds := -@ DTC_FLAGS_at91-sama5d3_xplained := -@ DTC_FLAGS_at91-sama5d4_xplained := -@ +DTC_FLAGS_at91-sama7d65_curiosity := -@ DTC_FLAGS_at91-sama7g54_curiosity := -@ DTC_FLAGS_at91-sama7g5ek := -@ dtb-$(CONFIG_SOC_AT91RM9200) += \@@ -90,6 +91,8 @@ dtb-$(CONFIG_SOC_SAM_V7) += \ at91-sama5d4_xplained.dtb \ at91-sama5d4ek.dtb \ at91-vinco.dtb +dtb-$(CONFIG_SOC_SAMA7D65) += \ + at91-sama7d65_curiosity.dtb dtb-$(CONFIG_SOC_SAMA7G5) += \ at91-sama7g54_curiosity.dtb \ at91-sama7g5ek.dtbarch/arm/boot/dts/microchip/at91-sama7d65_curiosity.dts new file +40
-0@@ -0,0 +1,89 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * at91-sama7d65_curiosity.dts - Device Tree file for SAMA7D65 Curiosity board + * + * Copyright (c) 2024 Microchip Technology Inc. and its subsidiaries + * + * Author: Romain Sioen <[email protected]> + * + */ +/dts-v1/; +#include "sama7d65-pinfunc.h" +#include "sama7d65.dtsi" +#include <dt-bindings/mfd/atmel-flexcom.h> +#include <dt-bindings/pinctrl/at91.h> + +/ { + model = "Microchip SAMA7D65 Curiosity"; + compatible = "microchip,sama7d65-curiosity", "microchip,sama7d65", + "microchip,sama7d6", "microchip,sama7"; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + aliases { + serial0 = &uart6; + }; + + memory@60000000 { + device_type = "memory"; + reg = <0x60000000 0x40000000>; + }; +}; + +&flx6 { + atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_USART>; + status = "okay"; +}; + +&uart6 {
arch/arm/boot/dts/microchip/at91-sama7d65_curiosity.dts line 50
Quoted 10 lines
arch/arm/boot/dts/microchip/at91-sama7d65_curiosity.dts new file +10
-0+ pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_uart6_default>; + status = "okay"; +}; + +&main_xtal { + clock-frequency = <24000000>; +}; + +&pioA {
Compilation fails for this:
Error: ../arch/arm/boot/dts/microchip/at91-sama7d65_curiosity.dts:50.1-6 Label or path pioA not found
FATAL ERROR: Syntax error parsing input tree
Thank you,
Claudiu
Quoted 39 lines
arch/arm/boot/dts/microchip/at91-sama7d65_curiosity.dts new file +39
-0+ pinctrl_sdmmc1_default: sdmmc1-default { + cmd-data { + pinmux = <PIN_PB22__SDMMC1_CMD>, + <PIN_PB24__SDMMC1_DAT0>, + <PIN_PB25__SDMMC1_DAT1>, + <PIN_PB26__SDMMC1_DAT2>, + <PIN_PB27__SDMMC1_DAT3>; + slew-rate = <0>; + bias-disable; + }; + + ck-cd-rstn-vddsel { + pinmux = <PIN_PB23__SDMMC1_CK>, + <PIN_PB21__SDMMC1_RSTN>, + <PIN_PB30__SDMMC1_1V8SEL>, + <PIN_PB29__SDMMC1_CD>, + <PIN_PB28__SDMMC1_WP>; + slew-rate = <0>; + bias-disable; + }; + }; + + pinctrl_uart6_default: uart6-default { + pinmux = <PIN_PD18__FLEXCOM6_IO0>, + <PIN_PD19__FLEXCOM6_IO1>; + bias-disable; + }; +}; + +&sdmmc1 { + bus-width = <4>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_sdmmc1_default>; + status = "okay"; +}; + +&slow_xtal { + clock-frequency = <32768>; +};
kernel test robot
build botRe: [PATCH v3 11/13] ARM: dts: microchip: add support for sama7d65_curiosity board
In reply to [email protected]kernel test robot noticed the following build errors:
Hi,
kernel test robot noticed the following build errors:
[auto build test ERROR on clk/clk-next]
[also build test ERROR on robh/for-next soc/for-next linus/master v6.13-rc1 next-20241206] [If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Ryan-Wanner-microchip-com/dt-bindings-ARM-at91-Document-Microchip-SAMA7D65-Curiosity/20241207-040527 base: https://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git clk-next patch link: https://lore.kernel.org/r/e47d8c8cdaec834ce080ef8c34b9976228223c8f.1733505542.git.Ryan.Wanner%40microchip.com patch subject: [PATCH v3 11/13] ARM: dts: microchip: add support for sama7d65_curiosity board config: arm-randconfig-051-20241207 (https://download.01.org/0day-ci/archive/20241209/[email protected]/config) compiler: arm-linux-gnueabi-gcc (GCC) 14.2.0 dtschema version: 2024.12.dev3+g93ee800 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241209/[email protected]/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/
All errors (new ones prefixed by >>):
>> Error: arch/arm/boot/dts/microchip/at91-sama7d65_curiosity.dts:50.1-6 Label or path pioA not found
FATAL ERROR: Syntax error parsing input tree
Signature · 2 lines
0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
PATCH v3 12/13 ARM: configs: at91: sama7: add new SoC config
In reply to [email protected]From: Ryan Wanner <[email protected]>
Add sama7d65 to the sama7_defconfig.
--- arch/arm/configs/multi_v7_defconfig | 1 + arch/arm/configs/sama7_defconfig | 1 + 2 files changed, 2 insertions(+)
arch/arm/configs/multi_v7_defconfig +1 -0
@@ -20,6 +20,7 @@ CONFIG_ARCH_AT91=y CONFIG_SOC_SAMA5D2=y CONFIG_SOC_SAMA5D3=y CONFIG_SOC_SAMA5D4=y +CONFIG_SOC_SAMA7D65=y CONFIG_SOC_SAMA7G5=y CONFIG_SOC_LAN966=y CONFIG_ARCH_BCM=y
arch/arm/configs/sama7_defconfig +1 -0
@@ -12,6 +12,7 @@ CONFIG_EXPERT=y # CONFIG_IO_URING is not set CONFIG_KALLSYMS_ALL=y CONFIG_ARCH_AT91=y +CONFIG_SOC_SAMA7D65=y CONFIG_SOC_SAMA7G5=y CONFIG_ATMEL_CLOCKSOURCE_TCB=y # CONFIG_CACHE_L2X0 is not set
Signature · 1 line
2.43.0
Re: [PATCH v3 12/13] ARM: configs: at91: sama7: add new SoC config
Quoted 6 lines · On 06.12.2024 21:59, [email protected] wrote:
From: Ryan Wanner <[email protected]>
Add sama7d65 to the
sama7_defconfig.Signed-off-by Ryan Wanner <[email protected]>Signed-off-by Varshini Rajendran <[email protected]>
PATCH v3 13/13 ARM: at91: add new SoC sama7d65
In reply to [email protected]From: Ryan Wanner <[email protected]>
Add new SoC from at91 family: sama7d65
--- arch/arm/mach-at91/Kconfig | 9 +++++++++ 1 file changed, 9 insertions(+)
arch/arm/mach-at91/Kconfig +9 -0
@@ -58,6 +58,15 @@ config SOC_SAMA5D4 help Select this if you are using one of Microchip's SAMA5D4 family SoC. +config SOC_SAMA7D65 + bool "SAMA7D65 family" + depends on ARCH_MULTI_V7 + select HAVE_AT91_GENERATED_CLK + select HAVE_AT91_SAM9X60_PLL + select SOC_SAMA7 + help + Select this if you are using one of Microchip's SAMA7D65 family SoC. + config SOC_SAMA7G5 bool "SAMA7G5 family" depends on ARCH_MULTI_V7
Signature · 1 line
2.43.0
Re: [PATCH v3 13/13] ARM: at91: add new SoC sama7d65
Quoted 16 lines · On 06.12.2024 21:59, [email protected] wrote:
From: Ryan Wanner <[email protected]>
Add new SoC from at91 family: sama7d65
Signed-off-by Ryan Wanner <[email protected]>--- arch/arm/mach-at91/Kconfig | 9 +++++++++ 1 file changed, 9 insertions(+)arch/arm/mach-at91/Kconfig +0
-0@@ -58,6 +58,15 @@ config SOC_SAMA5D4 help Select this if you are using one of Microchip's SAMA5D4 family SoC.
arch/arm/mach-at91/Kconfig config SOC_SAMA5D4 · line 69
Quoted 10 lines
arch/arm/mach-at91/Kconfig +9
-0+config SOC_SAMA7D65 + bool "SAMA7D65 family" + depends on ARCH_MULTI_V7 + select HAVE_AT91_GENERATED_CLK + select HAVE_AT91_SAM9X60_PLL + select SOC_SAMA7 + help + Select this if you are using one of Microchip's SAMA7D65 family SoC. +
Spaces ^
Other than this:
Quoted 3 lines
arch/arm/mach-at91/Kconfig +0
-0config SOC_SAMA7G5 bool "SAMA7G5 family" depends on ARCH_MULTI_V7