Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7f09a46f authored by Olof Johansson's avatar Olof Johansson
Browse files

Merge tag 'at91-cleanup2' of...

Merge tag 'at91-cleanup2' of git://git.kernel.org/pub/scm/linux/kernel/git/nferre/linux-at91 into next/soc

Merge "at91: cleanup for 3.20 #2" from Nicolas Ferre:

Second batch of cleanup for 3.20:
- By reworking the PM code, we can remove the AT91 more specific initialization
- We are using DT for SRAM initialization now, so we can remove its explicit
  mapping
- The PMC clock driver now hosts IDLE function for at91rm9200 with other
  SoCs ones.

* tag 'at91-cleanup2' of git://git.kernel.org/pub/scm/linux/kernel/git/nferre/linux-at91

: (37 commits)
  ARM: at91: move at91rm9200_idle() to clk/at91/pmc.c
  ARM: at91: remove unused at91_init_sram
  ARM: at91: sama5d4: remove useless call to at91_init_sram
  ARM: at91: remove useless map_io
  ARM: at91: pm: prepare for multiplatform
  ARM: at91: pm: add UDP and UHP checks to newer SoCs
  ARM: at91: pm: use the mmio-sram pool to access SRAM
  ARM: at91: pm: rework cpu detection
  ARM: at91: dts: sama5d3: add ov2640 camera sensor support
  ARM: at91: dts: sama5d3: change name of pinctrl of ISI_MCK
  ARM: at91: dts: sama5d3: change name of pinctrl_isi_{power,reset}
  ARM: at91: dts: sama5d3: move the isi mck pin to mb
  ARM: at91: dts: sama5d3: add missing pins of isi
  ARM: at91: dts: sama5d3: split isi pinctrl
  ARM: at91: dts: sama5d3: add isi clock
  ARM: at91/dt: ethernut5: use at91sam9xe.dtsi
  ARM: at91/dt: Add a dtsi for at91sam9xe
  ARM: at91/dt: add SRAM nodes
  ARM: at91/dt: at91rm9200ek: enable RTC
  ARM: at91/dt: rm9200: add RTC node
  ...

Signed-off-by: default avatarOlof Johansson <olof@lixom.net>
parents 7fda91e7 29ee506d
Loading
Loading
Loading
Loading
+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).
+17 −0
Original line number Original line Diff line number Diff line
@@ -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:
@@ -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>;
	};
+1 −0
Original line number Original line Diff line number Diff line
@@ -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>
+7 −2
Original line number Original line Diff line number Diff line
@@ -115,15 +115,18 @@ 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"
		select DEBUG_AT91_UART
		depends on HAVE_AT91_DBGU0
		depends on HAVE_AT91_DBGU0


	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"
		select DEBUG_AT91_UART
		depends on HAVE_AT91_DBGU1
		depends on HAVE_AT91_DBGU1


	config AT91_DEBUG_LL_DBGU2
	config AT91_DEBUG_LL_DBGU2
		bool "Kernel low-level debugging on sama5d4"
		bool "Kernel low-level debugging on sama5d4"
		select DEBUG_AT91_UART
		depends on HAVE_AT91_DBGU2
		depends on HAVE_AT91_DBGU2


	config DEBUG_BCM2835
	config DEBUG_BCM2835
@@ -1204,6 +1207,8 @@ 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 AT91_DEBUG_LL_DBGU0 || AT91_DEBUG_LL_DBGU1 || \
				AT91_DEBUG_LL_DBGU2
	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
+12 −0
Original line number Original line Diff line number Diff line
@@ -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>;
@@ -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