Merge tag 'u-boot-at91-2022.04-b' of https://source.denx.de/u-boot/custodians/u-boot...
authorTom Rini <trini@konsulko.com>
Mon, 17 Jan 2022 13:36:12 +0000 (08:36 -0500)
committerTom Rini <trini@konsulko.com>
Mon, 17 Jan 2022 13:36:12 +0000 (08:36 -0500)
Second set of u-boot-at91 features for the 2022.04 cycle:

This small feature set includes few changes for sama7g5 and sama7g5ek:
turn blue led on at boot, changes required for the Rev4 of the board,
better sync with the Linux DT with regards to the new DT nodes.

arch/arm/dts/sama7g5.dtsi
arch/arm/dts/sama7g5ek.dts
board/atmel/sama7g5ek/sama7g5ek.c
configs/sama7g5ek_mmc1_defconfig
configs/sama7g5ek_mmc_defconfig
drivers/i2c/at91_i2c.c

index 4a3c675..2505a2f 100644 (file)
  */
 
 #include "skeleton.dtsi"
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
 #include <dt-bindings/clk/at91.h>
+#include <dt-bindings/dma/at91.h>
 
 / {
        model = "Microchip SAMA7G5 family SoC";
        compatible = "microchip,sama7g5";
+       interrupt-parent = <&gic>;
 
        clocks {
                slow_rc_osc: slow_rc_osc {
                                clock-names = "pclk", "hclk";
                                status = "disabled";
                        };
+
+                       dma0: dma-controller@e2808000 {
+                               compatible = "microchip,sama7g5-dma";
+                               reg = <0xe2808000 0x1000>;
+                               interrupts = <GIC_SPI 112 IRQ_TYPE_LEVEL_HIGH>;
+                               #dma-cells = <1>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 22>;
+                               clock-names = "dma_clk";
+                               status = "disabled";
+                       };
+
+                       flx8: flexcom@e2818000 {
+                               compatible = "atmel,sama5d2-flexcom";
+                               reg = <0xe2818000 0x200>;
+                               clocks = <&pmc PMC_TYPE_PERIPHERAL 46>;
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               ranges = <0x0 0xe2818000 0x800>;
+                               status = "disabled";
+
+                               i2c8: i2c@600 {
+                                       compatible = "microchip,sama7g5-i2c", "microchip,sam9x60-i2c";
+                                       reg = <0x600 0x200>;
+                                       interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+                                       clocks = <&pmc PMC_TYPE_PERIPHERAL 46>;
+                                       atmel,fifo-size = <32>;
+                                       dmas = <&dma0 AT91_XDMAC_DT_PERID(21)>,
+                                               <&dma0 AT91_XDMAC_DT_PERID(22)>;
+                                       dma-names = "rx", "tx";
+                                       atmel,use-dma-rx;
+                                       atmel,use-dma-tx;
+                                       status = "disabled";
+                               };
+                       };
+
+                       gic: interrupt-controller@e8c11000 {
+                               compatible = "arm,cortex-a7-gic";
+                               #interrupt-cells = <3>;
+                               #address-cells = <0>;
+                               interrupt-controller;
+                               interrupt-parent;
+                               reg = <0xe8c11000 0x1000>,
+                                       <0xe8c12000 0x2000>;
+                       };
                };
        };
 };
index 16192ca..6adb044 100644 (file)
@@ -20,6 +20,7 @@
        aliases {
                serial0 = &uart0;
                i2c0 = &i2c1;
+               i2c1 = &i2c8;
        };
 
        chosen {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_flx1_default>;
        status = "okay";
+};
 
-       eeprom@52 {
-               compatible = "microchip,24aa02e48";
-               reg = <0x52>;
-               pagesize = <16>;
-       };
+&flx8 {
+       atmel,flexcom-mode = <ATMEL_FLEXCOM_MODE_TWI>;
+       status = "okay";
+
+       i2c8: i2c@600 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c8_default>;
+               i2c-analog-filter;
+               i2c-digital-filter;
+               i2c-digital-filter-width-ns = <35>;
+               status = "okay";
 
-       eeprom@53 {
-               compatible = "microchip,24aa02e48";
-               reg = <0x53>;
-               pagesize = <16>;
+               eeprom@52 {
+                       compatible = "microchip,24aa02e48";
+                       reg = <0x52>;
+                       pagesize = <16>;
+               };
+
+               eeprom@53 {
+                       compatible = "microchip,24aa02e48";
+                       reg = <0x53>;
+                       pagesize = <16>;
+               };
        };
 };
 
                bias-pull-up;
        };
 
+       pinctrl_i2c8_default: i2c8_default {
+               pinmux = <PIN_PC14__FLEXCOM8_IO0>,
+                        <PIN_PC13__FLEXCOM8_IO1>;
+               bias-disable;
+       };
+
        pinctrl_qspi: qspi {
                pinmux = <PIN_PB12__QSPI0_IO0>,
                         <PIN_PB11__QSPI0_IO1>,
index 411b311..ae18ed0 100644 (file)
 
 DECLARE_GLOBAL_DATA_PTR;
 
+static void board_leds_init(void)
+{
+       atmel_pio4_set_pio_output(AT91_PIO_PORTB, 8, 0);        /* LED RED */
+       atmel_pio4_set_pio_output(AT91_PIO_PORTA, 13, 0);       /* LED GREEN */
+       atmel_pio4_set_pio_output(AT91_PIO_PORTD, 20, 1);       /* LED BLUE */
+}
+
 int board_late_init(void)
 {
        return 0;
@@ -65,6 +72,8 @@ int board_init(void)
        /* address of boot parameters */
        gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
 
+       board_leds_init();
+
        return 0;
 }
 
index e297489..15a5c54 100644 (file)
@@ -72,3 +72,4 @@ CONFIG_TIMER=y
 CONFIG_MCHP_PIT64B_TIMER=y
 CONFIG_OF_LIBFDT_OVERLAY=y
 # CONFIG_EFI_LOADER_HII is not set
+CONFIG_PHANDLE_CHECK_SEQ=y
index 4f68a46..7abd5c8 100644 (file)
@@ -72,3 +72,4 @@ CONFIG_TIMER=y
 CONFIG_MCHP_PIT64B_TIMER=y
 CONFIG_OF_LIBFDT_OVERLAY=y
 # CONFIG_EFI_LOADER_HII is not set
+CONFIG_PHANDLE_CHECK_SEQ=y
index 6b4c0e4..e743d2a 100644 (file)
@@ -305,6 +305,11 @@ static const struct at91_i2c_pdata sama5d2_config = {
        .clk_offset = 3,
 };
 
+static const struct at91_i2c_pdata sam9x60_config = {
+       .clk_max_div = 7,
+       .clk_offset = 3,
+};
+
 static const struct udevice_id at91_i2c_ids[] = {
 { .compatible = "atmel,at91rm9200-i2c", .data = (long)&at91rm9200_config },
 { .compatible = "atmel,at91sam9260-i2c", .data = (long)&at91sam9260_config },
@@ -314,6 +319,7 @@ static const struct udevice_id at91_i2c_ids[] = {
 { .compatible = "atmel,at91sam9x5-i2c", .data = (long)&at91sam9x5_config },
 { .compatible = "atmel,sama5d4-i2c", .data = (long)&sama5d4_config },
 { .compatible = "atmel,sama5d2-i2c", .data = (long)&sama5d2_config },
+{ .compatible = "microchip,sam9x60-i2c", .data = (long)&sam9x60_config },
 { }
 };