Loading Documentation/arm/Atmel/README 0 → 100644 +124 −0 Original line number Original line Diff line number Diff line ARM Atmel SoCs (aka AT91) ========================= Introduction ------------ This document gives useful information about the ARM Atmel SoCs that are currently supported in Linux Mainline (you know, the one on kernel.org). It is important to note that the Atmel | SMART ARM-based MPU product line is historically named "AT91" or "at91" throughout the Linux kernel development process even if this product prefix has completely disappeared from the official Atmel product name. Anyway, files, directories, git trees, git branches/tags and email subject always contain this "at91" sub-string. AT91 SoCs --------- Documentation and detailled datasheet for each product are available on the Atmel website: http://www.atmel.com. Flavors: * ARM 920 based SoC - at91rm9200 + Datasheet http://www.atmel.com/Images/doc1768.pdf * ARM 926 based SoCs - at91sam9260 + Datasheet http://www.atmel.com/Images/doc6221.pdf - at91sam9xe + Datasheet http://www.atmel.com/Images/Atmel-6254-32-bit-ARM926EJ-S-Embedded-Microprocessor-SAM9XE_Datasheet.pdf - at91sam9261 + Datasheet http://www.atmel.com/Images/doc6062.pdf - at91sam9263 + Datasheet http://www.atmel.com/Images/Atmel_6249_32-bit-ARM926EJ-S-Microcontroller_SAM9263_Datasheet.pdf - at91sam9rl + Datasheet http://www.atmel.com/Images/doc6289.pdf - at91sam9g20 + Datasheet http://www.atmel.com/Images/doc6384.pdf - at91sam9g45 family - at91sam9g45 - at91sam9g46 - at91sam9m10 - at91sam9m11 (device superset) + Datasheet http://www.atmel.com/Images/Atmel-6437-32-bit-ARM926-Embedded-Microprocessor-SAM9M11_Datasheet.pdf - at91sam9x5 family (aka "The 5 series") - at91sam9g15 - at91sam9g25 - at91sam9g35 - at91sam9x25 - at91sam9x35 + Datasheet (can be considered as covering the whole family) http://www.atmel.com/Images/Atmel_11055_32-bit-ARM926EJ-S-Microcontroller_SAM9X35_Datasheet.pdf - at91sam9n12 + Datasheet http://www.atmel.com/Images/Atmel_11063_32-bit-ARM926EJ-S-Microcontroller_SAM9N12CN11CN12_Datasheet.pdf * ARM Cortex-A5 based SoCs - sama5d3 family - sama5d31 - sama5d33 - sama5d34 - sama5d35 - sama5d36 (device superset) + Datasheet http://www.atmel.com/Images/Atmel-11121-32-bit-Cortex-A5-Microcontroller-SAMA5D3_Datasheet.pdf * ARM Cortex-A5 + NEON based SoCs - sama5d4 family - sama5d41 - sama5d42 - sama5d43 - sama5d44 (device superset) + Datasheet http://www.atmel.com/Images/Atmel-11238-32-bit-Cortex-A5-Microcontroller-SAMA5D4_Datasheet.pdf Linux kernel information ------------------------ Linux kernel mach directory: arch/arm/mach-at91 MAINTAINERS entry is: "ARM/ATMEL AT91RM9200 AND AT91SAM ARM ARCHITECTURES" Device Tree for AT91 SoCs and boards ------------------------------------ All AT91 SoCs are converted to Device Tree. Since Linux 3.19, these products must use this method to boot the Linux kernel. Work In Progress statement: Device Tree files and Device Tree bindings that apply to AT91 SoCs and boards are considered as "Unstable". To be completely clear, any at91 binding can change at any time. So, be sure to use a Device Tree Binary and a Kernel Image generated from the same source tree. Please refer to the Documentation/devicetree/bindings/ABI.txt file for a definition of a "Stable" binding/ABI. This statement will be removed by AT91 MAINTAINERS when appropriate. Naming conventions and best practice: - SoCs Device Tree Source Include files are named after the official name of the product (at91sam9g20.dtsi or sama5d33.dtsi for instance). - Device Tree Source Include files (.dtsi) are used to collect common nodes that can be shared across SoCs or boards (sama5d3.dtsi or at91sam9x5cm.dtsi for instance). When collecting nodes for a particular peripheral or topic, the identifier have to be placed at the end of the file name, separated with a "_" (at91sam9x5_can.dtsi or sama5d3_gmac.dtsi for example). - board Device Tree Source files (.dts) are prefixed by the string "at91-" so that they can be identified easily. Note that some files are historical exceptions to this rule (sama5d3[13456]ek.dts, usb_a9g20.dts or animeo_ip.dts for example). Documentation/devicetree/bindings/arm/atmel-at91.txt +17 −0 Original line number Original line Diff line number Diff line Loading @@ -24,6 +24,7 @@ compatible: must be one of: o "atmel,at91sam9g45" o "atmel,at91sam9g45" o "atmel,at91sam9n12" o "atmel,at91sam9n12" o "atmel,at91sam9rl" o "atmel,at91sam9rl" o "atmel,at91sam9xe" * "atmel,sama5" for SoCs using a Cortex-A5, shall be extended with the specific * "atmel,sama5" for SoCs using a Cortex-A5, shall be extended with the specific SoC family: SoC family: o "atmel,sama5d3" shall be extended with the specific SoC compatible: o "atmel,sama5d3" shall be extended with the specific SoC compatible: Loading Loading @@ -136,3 +137,19 @@ Example: compatible = "atmel,at91sam9260-rstc"; compatible = "atmel,at91sam9260-rstc"; reg = <0xfffffd00 0x10>; reg = <0xfffffd00 0x10>; }; }; Special Function Registers (SFR) Special Function Registers (SFR) manage specific aspects of the integrated memory, bridge implementations, processor and other functionality not controlled elsewhere. required properties: - compatible: Should be "atmel,<chip>-sfr", "syscon". <chip> can be "sama5d3" or "sama5d4". - reg: Should contain registers location and length sfr@f0038000 { compatible = "atmel,sama5d3-sfr", "syscon"; reg = <0xf0038000 0x60>; }; MAINTAINERS +1 −0 Original line number Original line Diff line number Diff line Loading @@ -877,6 +877,7 @@ F: arch/arm/boot/dts/at91*.dts F: arch/arm/boot/dts/at91*.dtsi F: arch/arm/boot/dts/at91*.dtsi F: arch/arm/boot/dts/sama*.dts F: arch/arm/boot/dts/sama*.dts F: arch/arm/boot/dts/sama*.dtsi F: arch/arm/boot/dts/sama*.dtsi F: arch/arm/include/debug/at91.S ARM/ATMEL AT91 Clock Support ARM/ATMEL AT91 Clock Support M: Boris Brezillon <boris.brezillon@free-electrons.com> M: Boris Brezillon <boris.brezillon@free-electrons.com> Loading arch/arm/Kconfig.debug +16 −5 Original line number Original line Diff line number Diff line Loading @@ -115,16 +115,22 @@ choice 0x80024000 | 0xf0024000 | UART9 0x80024000 | 0xf0024000 | UART9 config AT91_DEBUG_LL_DBGU0 config AT91_DEBUG_LL_DBGU0 bool "Kernel low-level debugging on rm9200, 9260/9g20, 9261/9g10 and 9rl" bool "Kernel low-level debugging on rm9200, 9260/9g20, 9261/9g10, 9rl, 9x5, 9n12" depends on HAVE_AT91_DBGU0 select DEBUG_AT91_UART depends on ARCH_AT91 depends on SOC_AT91RM9200 || SOC_AT91SAM9 config AT91_DEBUG_LL_DBGU1 config AT91_DEBUG_LL_DBGU1 bool "Kernel low-level debugging on 9263 and 9g45" bool "Kernel low-level debugging on 9263, 9g45 and sama5d3" depends on HAVE_AT91_DBGU1 select DEBUG_AT91_UART depends on ARCH_AT91 depends on SOC_AT91SAM9 || SOC_SAMA5 config AT91_DEBUG_LL_DBGU2 config AT91_DEBUG_LL_DBGU2 bool "Kernel low-level debugging on sama5d4" bool "Kernel low-level debugging on sama5d4" depends on HAVE_AT91_DBGU2 select DEBUG_AT91_UART depends on ARCH_AT91 depends on SOC_SAMA5 config DEBUG_BCM2835 config DEBUG_BCM2835 bool "Kernel low-level debugging on BCM2835 PL011 UART" bool "Kernel low-level debugging on BCM2835 PL011 UART" Loading Loading @@ -1109,6 +1115,10 @@ choice endchoice endchoice config DEBUG_AT91_UART bool depends on ARCH_AT91 config DEBUG_EXYNOS_UART config DEBUG_EXYNOS_UART bool bool Loading Loading @@ -1165,6 +1175,7 @@ config DEBUG_LL_INCLUDE string string default "debug/sa1100.S" if DEBUG_SA1100 default "debug/sa1100.S" if DEBUG_SA1100 default "debug/8250.S" if DEBUG_LL_UART_8250 || DEBUG_UART_8250 default "debug/8250.S" if DEBUG_LL_UART_8250 || DEBUG_UART_8250 default "debug/at91.S" if DEBUG_AT91_UART default "debug/asm9260.S" if DEBUG_ASM9260_UART default "debug/asm9260.S" if DEBUG_ASM9260_UART default "debug/clps711x.S" if DEBUG_CLPS711X_UART1 || DEBUG_CLPS711X_UART2 default "debug/clps711x.S" if DEBUG_CLPS711X_UART1 || DEBUG_CLPS711X_UART2 default "debug/meson.S" if DEBUG_MESON_UARTAO default "debug/meson.S" if DEBUG_MESON_UARTAO Loading arch/arm/boot/dts/at91rm9200.dtsi +12 −0 Original line number Original line Diff line number Diff line Loading @@ -66,6 +66,11 @@ }; }; }; }; sram: sram@00200000 { compatible = "mmio-sram"; reg = <0x00200000 0x4000>; }; ahb { ahb { compatible = "simple-bus"; compatible = "simple-bus"; #address-cells = <1>; #address-cells = <1>; Loading Loading @@ -356,6 +361,13 @@ interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>; interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>; }; }; rtc: rtc@fffffe00 { compatible = "atmel,at91rm9200-rtc"; reg = <0xfffffe00 0x40>; interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>; status = "disabled"; }; tcb0: timer@fffa0000 { tcb0: timer@fffa0000 { compatible = "atmel,at91rm9200-tcb"; compatible = "atmel,at91rm9200-tcb"; reg = <0xfffa0000 0x100>; reg = <0xfffa0000 0x100>; Loading Loading
Documentation/arm/Atmel/README 0 → 100644 +124 −0 Original line number Original line Diff line number Diff line ARM Atmel SoCs (aka AT91) ========================= Introduction ------------ This document gives useful information about the ARM Atmel SoCs that are currently supported in Linux Mainline (you know, the one on kernel.org). It is important to note that the Atmel | SMART ARM-based MPU product line is historically named "AT91" or "at91" throughout the Linux kernel development process even if this product prefix has completely disappeared from the official Atmel product name. Anyway, files, directories, git trees, git branches/tags and email subject always contain this "at91" sub-string. AT91 SoCs --------- Documentation and detailled datasheet for each product are available on the Atmel website: http://www.atmel.com. Flavors: * ARM 920 based SoC - at91rm9200 + Datasheet http://www.atmel.com/Images/doc1768.pdf * ARM 926 based SoCs - at91sam9260 + Datasheet http://www.atmel.com/Images/doc6221.pdf - at91sam9xe + Datasheet http://www.atmel.com/Images/Atmel-6254-32-bit-ARM926EJ-S-Embedded-Microprocessor-SAM9XE_Datasheet.pdf - at91sam9261 + Datasheet http://www.atmel.com/Images/doc6062.pdf - at91sam9263 + Datasheet http://www.atmel.com/Images/Atmel_6249_32-bit-ARM926EJ-S-Microcontroller_SAM9263_Datasheet.pdf - at91sam9rl + Datasheet http://www.atmel.com/Images/doc6289.pdf - at91sam9g20 + Datasheet http://www.atmel.com/Images/doc6384.pdf - at91sam9g45 family - at91sam9g45 - at91sam9g46 - at91sam9m10 - at91sam9m11 (device superset) + Datasheet http://www.atmel.com/Images/Atmel-6437-32-bit-ARM926-Embedded-Microprocessor-SAM9M11_Datasheet.pdf - at91sam9x5 family (aka "The 5 series") - at91sam9g15 - at91sam9g25 - at91sam9g35 - at91sam9x25 - at91sam9x35 + Datasheet (can be considered as covering the whole family) http://www.atmel.com/Images/Atmel_11055_32-bit-ARM926EJ-S-Microcontroller_SAM9X35_Datasheet.pdf - at91sam9n12 + Datasheet http://www.atmel.com/Images/Atmel_11063_32-bit-ARM926EJ-S-Microcontroller_SAM9N12CN11CN12_Datasheet.pdf * ARM Cortex-A5 based SoCs - sama5d3 family - sama5d31 - sama5d33 - sama5d34 - sama5d35 - sama5d36 (device superset) + Datasheet http://www.atmel.com/Images/Atmel-11121-32-bit-Cortex-A5-Microcontroller-SAMA5D3_Datasheet.pdf * ARM Cortex-A5 + NEON based SoCs - sama5d4 family - sama5d41 - sama5d42 - sama5d43 - sama5d44 (device superset) + Datasheet http://www.atmel.com/Images/Atmel-11238-32-bit-Cortex-A5-Microcontroller-SAMA5D4_Datasheet.pdf Linux kernel information ------------------------ Linux kernel mach directory: arch/arm/mach-at91 MAINTAINERS entry is: "ARM/ATMEL AT91RM9200 AND AT91SAM ARM ARCHITECTURES" Device Tree for AT91 SoCs and boards ------------------------------------ All AT91 SoCs are converted to Device Tree. Since Linux 3.19, these products must use this method to boot the Linux kernel. Work In Progress statement: Device Tree files and Device Tree bindings that apply to AT91 SoCs and boards are considered as "Unstable". To be completely clear, any at91 binding can change at any time. So, be sure to use a Device Tree Binary and a Kernel Image generated from the same source tree. Please refer to the Documentation/devicetree/bindings/ABI.txt file for a definition of a "Stable" binding/ABI. This statement will be removed by AT91 MAINTAINERS when appropriate. Naming conventions and best practice: - SoCs Device Tree Source Include files are named after the official name of the product (at91sam9g20.dtsi or sama5d33.dtsi for instance). - Device Tree Source Include files (.dtsi) are used to collect common nodes that can be shared across SoCs or boards (sama5d3.dtsi or at91sam9x5cm.dtsi for instance). When collecting nodes for a particular peripheral or topic, the identifier have to be placed at the end of the file name, separated with a "_" (at91sam9x5_can.dtsi or sama5d3_gmac.dtsi for example). - board Device Tree Source files (.dts) are prefixed by the string "at91-" so that they can be identified easily. Note that some files are historical exceptions to this rule (sama5d3[13456]ek.dts, usb_a9g20.dts or animeo_ip.dts for example).
Documentation/devicetree/bindings/arm/atmel-at91.txt +17 −0 Original line number Original line Diff line number Diff line Loading @@ -24,6 +24,7 @@ compatible: must be one of: o "atmel,at91sam9g45" o "atmel,at91sam9g45" o "atmel,at91sam9n12" o "atmel,at91sam9n12" o "atmel,at91sam9rl" o "atmel,at91sam9rl" o "atmel,at91sam9xe" * "atmel,sama5" for SoCs using a Cortex-A5, shall be extended with the specific * "atmel,sama5" for SoCs using a Cortex-A5, shall be extended with the specific SoC family: SoC family: o "atmel,sama5d3" shall be extended with the specific SoC compatible: o "atmel,sama5d3" shall be extended with the specific SoC compatible: Loading Loading @@ -136,3 +137,19 @@ Example: compatible = "atmel,at91sam9260-rstc"; compatible = "atmel,at91sam9260-rstc"; reg = <0xfffffd00 0x10>; reg = <0xfffffd00 0x10>; }; }; Special Function Registers (SFR) Special Function Registers (SFR) manage specific aspects of the integrated memory, bridge implementations, processor and other functionality not controlled elsewhere. required properties: - compatible: Should be "atmel,<chip>-sfr", "syscon". <chip> can be "sama5d3" or "sama5d4". - reg: Should contain registers location and length sfr@f0038000 { compatible = "atmel,sama5d3-sfr", "syscon"; reg = <0xf0038000 0x60>; };
MAINTAINERS +1 −0 Original line number Original line Diff line number Diff line Loading @@ -877,6 +877,7 @@ F: arch/arm/boot/dts/at91*.dts F: arch/arm/boot/dts/at91*.dtsi F: arch/arm/boot/dts/at91*.dtsi F: arch/arm/boot/dts/sama*.dts F: arch/arm/boot/dts/sama*.dts F: arch/arm/boot/dts/sama*.dtsi F: arch/arm/boot/dts/sama*.dtsi F: arch/arm/include/debug/at91.S ARM/ATMEL AT91 Clock Support ARM/ATMEL AT91 Clock Support M: Boris Brezillon <boris.brezillon@free-electrons.com> M: Boris Brezillon <boris.brezillon@free-electrons.com> Loading
arch/arm/Kconfig.debug +16 −5 Original line number Original line Diff line number Diff line Loading @@ -115,16 +115,22 @@ choice 0x80024000 | 0xf0024000 | UART9 0x80024000 | 0xf0024000 | UART9 config AT91_DEBUG_LL_DBGU0 config AT91_DEBUG_LL_DBGU0 bool "Kernel low-level debugging on rm9200, 9260/9g20, 9261/9g10 and 9rl" bool "Kernel low-level debugging on rm9200, 9260/9g20, 9261/9g10, 9rl, 9x5, 9n12" depends on HAVE_AT91_DBGU0 select DEBUG_AT91_UART depends on ARCH_AT91 depends on SOC_AT91RM9200 || SOC_AT91SAM9 config AT91_DEBUG_LL_DBGU1 config AT91_DEBUG_LL_DBGU1 bool "Kernel low-level debugging on 9263 and 9g45" bool "Kernel low-level debugging on 9263, 9g45 and sama5d3" depends on HAVE_AT91_DBGU1 select DEBUG_AT91_UART depends on ARCH_AT91 depends on SOC_AT91SAM9 || SOC_SAMA5 config AT91_DEBUG_LL_DBGU2 config AT91_DEBUG_LL_DBGU2 bool "Kernel low-level debugging on sama5d4" bool "Kernel low-level debugging on sama5d4" depends on HAVE_AT91_DBGU2 select DEBUG_AT91_UART depends on ARCH_AT91 depends on SOC_SAMA5 config DEBUG_BCM2835 config DEBUG_BCM2835 bool "Kernel low-level debugging on BCM2835 PL011 UART" bool "Kernel low-level debugging on BCM2835 PL011 UART" Loading Loading @@ -1109,6 +1115,10 @@ choice endchoice endchoice config DEBUG_AT91_UART bool depends on ARCH_AT91 config DEBUG_EXYNOS_UART config DEBUG_EXYNOS_UART bool bool Loading Loading @@ -1165,6 +1175,7 @@ config DEBUG_LL_INCLUDE string string default "debug/sa1100.S" if DEBUG_SA1100 default "debug/sa1100.S" if DEBUG_SA1100 default "debug/8250.S" if DEBUG_LL_UART_8250 || DEBUG_UART_8250 default "debug/8250.S" if DEBUG_LL_UART_8250 || DEBUG_UART_8250 default "debug/at91.S" if DEBUG_AT91_UART default "debug/asm9260.S" if DEBUG_ASM9260_UART default "debug/asm9260.S" if DEBUG_ASM9260_UART default "debug/clps711x.S" if DEBUG_CLPS711X_UART1 || DEBUG_CLPS711X_UART2 default "debug/clps711x.S" if DEBUG_CLPS711X_UART1 || DEBUG_CLPS711X_UART2 default "debug/meson.S" if DEBUG_MESON_UARTAO default "debug/meson.S" if DEBUG_MESON_UARTAO Loading
arch/arm/boot/dts/at91rm9200.dtsi +12 −0 Original line number Original line Diff line number Diff line Loading @@ -66,6 +66,11 @@ }; }; }; }; sram: sram@00200000 { compatible = "mmio-sram"; reg = <0x00200000 0x4000>; }; ahb { ahb { compatible = "simple-bus"; compatible = "simple-bus"; #address-cells = <1>; #address-cells = <1>; Loading Loading @@ -356,6 +361,13 @@ interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>; interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>; }; }; rtc: rtc@fffffe00 { compatible = "atmel,at91rm9200-rtc"; reg = <0xfffffe00 0x40>; interrupts = <1 IRQ_TYPE_LEVEL_HIGH 7>; status = "disabled"; }; tcb0: timer@fffa0000 { tcb0: timer@fffa0000 { compatible = "atmel,at91rm9200-tcb"; compatible = "atmel,at91rm9200-tcb"; reg = <0xfffa0000 0x100>; reg = <0xfffa0000 0x100>; Loading