Merge tag 'u-boot-at91-2022.04-b' of https://source.denx.de/u-boot/custodians/u-boot-at91

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.
diff --git a/arch/arm/dts/sama7g5.dtsi b/arch/arm/dts/sama7g5.dtsi
index 4a3c675..2505a2f 100644
--- a/arch/arm/dts/sama7g5.dtsi
+++ b/arch/arm/dts/sama7g5.dtsi
@@ -10,11 +10,15 @@
  */
 
 #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 {
@@ -191,6 +195,52 @@
 				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>;
+			};
 		};
 	};
 };
diff --git a/arch/arm/dts/sama7g5ek.dts b/arch/arm/dts/sama7g5ek.dts
index 16192ca..6adb044 100644
--- a/arch/arm/dts/sama7g5ek.dts
+++ b/arch/arm/dts/sama7g5ek.dts
@@ -20,6 +20,7 @@
 	aliases {
 		serial0 = &uart0;
 		i2c0 = &i2c1;
+		i2c1 = &i2c8;
 	};
 
 	chosen {
@@ -92,17 +93,31 @@
 	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";
 
-	eeprom@53 {
-		compatible = "microchip,24aa02e48";
-		reg = <0x53>;
-		pagesize = <16>;
+	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@52 {
+			compatible = "microchip,24aa02e48";
+			reg = <0x52>;
+			pagesize = <16>;
+		};
+
+		eeprom@53 {
+			compatible = "microchip,24aa02e48";
+			reg = <0x53>;
+			pagesize = <16>;
+		};
 	};
 };
 
@@ -145,6 +160,12 @@
 		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>,
diff --git a/board/atmel/sama7g5ek/sama7g5ek.c b/board/atmel/sama7g5ek/sama7g5ek.c
index 411b311..ae18ed0 100644
--- a/board/atmel/sama7g5ek/sama7g5ek.c
+++ b/board/atmel/sama7g5ek/sama7g5ek.c
@@ -17,6 +17,13 @@
 
 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 @@
 	/* address of boot parameters */
 	gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
 
+	board_leds_init();
+
 	return 0;
 }
 
diff --git a/configs/sama7g5ek_mmc1_defconfig b/configs/sama7g5ek_mmc1_defconfig
index e297489..15a5c54 100644
--- a/configs/sama7g5ek_mmc1_defconfig
+++ b/configs/sama7g5ek_mmc1_defconfig
@@ -72,3 +72,4 @@
 CONFIG_MCHP_PIT64B_TIMER=y
 CONFIG_OF_LIBFDT_OVERLAY=y
 # CONFIG_EFI_LOADER_HII is not set
+CONFIG_PHANDLE_CHECK_SEQ=y
diff --git a/configs/sama7g5ek_mmc_defconfig b/configs/sama7g5ek_mmc_defconfig
index 4f68a46..7abd5c8 100644
--- a/configs/sama7g5ek_mmc_defconfig
+++ b/configs/sama7g5ek_mmc_defconfig
@@ -72,3 +72,4 @@
 CONFIG_MCHP_PIT64B_TIMER=y
 CONFIG_OF_LIBFDT_OVERLAY=y
 # CONFIG_EFI_LOADER_HII is not set
+CONFIG_PHANDLE_CHECK_SEQ=y
diff --git a/drivers/i2c/at91_i2c.c b/drivers/i2c/at91_i2c.c
index 6b4c0e4..e743d2a 100644
--- a/drivers/i2c/at91_i2c.c
+++ b/drivers/i2c/at91_i2c.c
@@ -305,6 +305,11 @@
 	.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 @@
 { .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 },
 { }
 };