Add Kconfig entries, header file changes and addition to the documentation.
The early debug infrastructure is also added for easy development.
Signed-off-by: Ludovic Desroches <ludovic.desroches@atmel.com>
Signed-off-by: Nicolas Ferre <nicolas.ferre@atmel.com>
Acked-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Signed-off-by: Olof Johansson <olof@lixom.net>
         + Datasheet
           http://www.atmel.com/Images/Atmel-11238-32-bit-Cortex-A5-Microcontroller-SAMA5D4_Datasheet.pdf
 
+      - sama5d2 family
+        - sama5d27
+        + Datasheet
+          Coming soon
+
 
 Linux kernel information
 ------------------------
 
     o "atmel,at91sam9xe"
  * "atmel,sama5" for SoCs using a Cortex-A5, shall be extended with the specific
    SoC family:
+    o "atmel,sama5d2" shall be extended with the specific SoC compatible:
+       - "atmel,sama5d27"
     o "atmel,sama5d3" shall be extended with the specific SoC compatible:
        - "atmel,sama5d31"
        - "atmel,sama5d33"
 
                depends on ARCH_AT91
                depends on SOC_SAMA5
 
+       config AT91_DEBUG_LL_DBGU3
+               bool "Kernel low-level debugging on sama5d2"
+               select DEBUG_AT91_UART
+               depends on ARCH_AT91
+               depends on SOC_SAMA5
+
        config DEBUG_BCM2835
                bool "Kernel low-level debugging on BCM2835 PL011 UART"
                depends on ARCH_BCM2835
 
 #define AT91_DBGU 0xfffff200 /* AT91_BASE_DBGU0 */
 #elif defined(CONFIG_AT91_DEBUG_LL_DBGU1)
 #define AT91_DBGU 0xffffee00 /* AT91_BASE_DBGU1 */
-#else
+#elif defined(CONFIG_AT91_DEBUG_LL_DBGU2)
 /* On sama5d4, use USART3 as low level serial console */
 #define AT91_DBGU 0xfc00c000 /* SAMA5D4_BASE_USART3 */
+#else
+/* On sama5d2, use UART1 as low level serial console */
+#define AT91_DBGU 0xf8020000
 #endif
 
 #ifdef CONFIG_MMU
 
        select SOC_BUS
 
 if ARCH_AT91
+config SOC_SAMA5D2
+       bool "SAMA5D2 family" if ARCH_MULTI_V7
+       select SOC_SAMA5
+       select CACHE_L2X0
+       select HAVE_FB_ATMEL
+       select HAVE_AT91_UTMI
+       select HAVE_AT91_USB_CLK
+       select HAVE_AT91_H32MX
+       select HAVE_AT91_GENERATED_CLK
+       help
+         Select this if ou are using one of Atmel's SAMA5D2 family SoC.
+
 config SOC_SAMA5D3
        bool "SAMA5D3 family" if ARCH_MULTI_V7
        select SOC_SAMA5
 
 #include "soc.h"
 
 static const struct at91_soc sama5_socs[] = {
+       AT91_SOC(SAMA5D2_CIDR_MATCH, SAMA5D27_EXID_MATCH,
+                "sama5d27", "sama5d2"),
        AT91_SOC(SAMA5D3_CIDR_MATCH, SAMA5D31_EXID_MATCH,
                 "sama5d31", "sama5d3"),
        AT91_SOC(SAMA5D3_CIDR_MATCH, SAMA5D33_EXID_MATCH,
 MACHINE_END
 
 static const char *sama5_alt_dt_board_compat[] __initconst = {
+       "atmel,sama5d2",
        "atmel,sama5d4",
        NULL
 };
 
 #define AT91SAM9XE256_CIDR_MATCH       0x329a93a0
 #define AT91SAM9XE512_CIDR_MATCH       0x329aa3a0
 
+#define SAMA5D2_CIDR_MATCH             0x0a5c08c0
+#define SAMA5D27_EXID_MATCH            0x00000021
+
 #define SAMA5D3_CIDR_MATCH             0x0a5c07c0
 #define SAMA5D31_EXID_MATCH            0x00444300
 #define SAMA5D33_EXID_MATCH            0x00414300