diff --git a/board/qca/arm/common/fdt_fixup.c b/board/qca/arm/common/fdt_fixup.c index 4704b43690..5358c3eea0 100644 --- a/board/qca/arm/common/fdt_fixup.c +++ b/board/qca/arm/common/fdt_fixup.c @@ -883,6 +883,11 @@ __weak void fdt_fixup_qpic(void *blob) return; } +__weak void fdt_fixup_sdx65_gpio(void *blob) +{ + return; +} + void set_mtdids(void) { char mtdids[256]; @@ -1072,6 +1077,8 @@ int ft_board_setup(void *blob, bd_t *bd) #ifdef CONFIG_QCA_MMC board_mmc_deinit(); #endif + + fdt_fixup_sdx65_gpio(blob); return 0; } diff --git a/board/qca/arm/ipq807x/ipq807x.c b/board/qca/arm/ipq807x/ipq807x.c index d9901cff16..da5b2e62cb 100644 --- a/board/qca/arm/ipq807x/ipq807x.c +++ b/board/qca/arm/ipq807x/ipq807x.c @@ -921,6 +921,7 @@ void board_pci_init(int id) pcie_v2_clock_init(id); else pcie_clock_init(id); + return; } @@ -979,6 +980,37 @@ void board_pci_deinit() } #endif +int sdx65_attached(void) +{ + const char *sdx65_env = getenv("x65_attached"); + int sdx65_available = 0; + + if (sdx65_env != NULL && strncmp(sdx65_env, "1", sizeof("1")) == 0) { + printf("sdx65_attached env is set to 1\n"); + sdx65_available = 1; + return sdx65_available; + } + + return sdx65_available; +} + +void fdt_fixup_sdx65_gpio(void *blob) +{ + unsigned int machid = gd->bd->bi_arch_number; + if (machid != 0x08010400) + return; + + if (sdx65_attached() == 0) + return; + + parse_fdt_fixup("/soc/pci@20000000/%add%x65_attached", blob); + parse_fdt_fixup("/soc/pci@20000000/%x65_attached%1", blob); + parse_fdt_fixup("/soc/pci@20000000/pcie0_rp/qcom,mhi@0/%mdm2ap%21", blob); + parse_fdt_fixup("/soc/pci@20000000/pcie0_rp/qcom,mhi@0/%ap2mdm%45", blob); + parse_fdt_fixup("/soc/pinctrl@1000000/ap2mdm_status/%pins%?gpio45", blob); + parse_fdt_fixup("/soc/pinctrl@1000000/mdm2ap_e911_status/%pins%?gpio22", blob); +} + #ifdef CONFIG_USB_XHCI_IPQ void board_usb_deinit(int id) { diff --git a/include/configs/ipq807x.h b/include/configs/ipq807x.h index 97fe5f92d3..21ee3e2c73 100644 --- a/include/configs/ipq807x.h +++ b/include/configs/ipq807x.h @@ -275,6 +275,8 @@ extern loff_t board_env_size; #define CONFIG_FDT_FIXUP_PARTITIONS +#define CONFIG_IPQ_FDT_FIXUP + /* * USB Support */