From 143c32d5a64869463a076e4500b64d84ae086f23 Mon Sep 17 00:00:00 2001 From: Vandhiadevan Karunamoorthy Date: Fri, 27 May 2022 09:16:17 +0530 Subject: [PATCH] board: qca: make training offset fixup as generic This update replaces the board-specific QPIC nand training offset fixup with a generic framework. Change-Id: I0fd9203334da3846cfbbba880bc6b4701e9d162b Signed-off-by: Vandhiadevan Karunamoorthy --- board/qca/arm/common/fdt_fixup.c | 23 +++++++++++++++++++++++ board/qca/arm/devsoc/devsoc.c | 4 ---- board/qca/arm/ipq5018/ipq5018.c | 16 ---------------- board/qca/arm/ipq9574/ipq9574.c | 25 ------------------------- include/configs/devsoc.h | 1 + include/configs/ipq5018.h | 1 + include/configs/ipq9574.h | 1 + 7 files changed, 26 insertions(+), 45 deletions(-) diff --git a/board/qca/arm/common/fdt_fixup.c b/board/qca/arm/common/fdt_fixup.c index b1e5a6795e..39ba21a3e7 100644 --- a/board/qca/arm/common/fdt_fixup.c +++ b/board/qca/arm/common/fdt_fixup.c @@ -21,6 +21,10 @@ DECLARE_GLOBAL_DATA_PTR; +#ifdef CONFIG_QPIC_SERIAL +extern unsigned int qpic_training_offset; +#endif + #ifdef CONFIG_IPQ_FDT_FIXUP #define FDT_EDIT "fdtedit" /* Buffer size to hold numbers from 0-99 + 1 NULL character */ @@ -886,6 +890,24 @@ __weak void fdt_fixup_qpic(void *blob) return; } +__weak void fdt_fixup_qpic_serial_training_offset(void *blob) +{ +#if defined(CONFIG_QPIC_SERIAL) && defined(CONFIG_IPQ_FDT_FIXUP) + char node_name[128]; + + if (qpic_training_offset != 0xBAD0FF5E){ + snprintf(node_name, sizeof(node_name), "%s%s%d", + CONFIG_QPIC_NODE, + "%qcom,training_offset%", + qpic_training_offset); + + parse_fdt_fixup(node_name, blob); + } +#else + return; +#endif +} + __weak void fdt_fixup_sdx65_gpio(void *blob) { return; @@ -1108,6 +1130,7 @@ int ft_board_setup(void *blob, bd_t *bd) fdt_fixup_cpus_node(blob); fdt_low_memory_fixup(blob); fdt_fixup_qpic(blob); + fdt_fixup_qpic_serial_training_offset(blob); #ifdef CONFIG_IPQ_RUNTIME_FAILSAFE fdt_fixup_runtime_failsafe(blob); #endif diff --git a/board/qca/arm/devsoc/devsoc.c b/board/qca/arm/devsoc/devsoc.c index 61b55044cf..f53673f60b 100644 --- a/board/qca/arm/devsoc/devsoc.c +++ b/board/qca/arm/devsoc/devsoc.c @@ -49,10 +49,6 @@ const add_node_t add_fdt_node[] = {{}}; unsigned int qpic_frequency = 0, qpic_phase = 0; -#ifdef CONFIG_QPIC_SERIAL -extern unsigned int qpic_training_offset; -#endif - #ifdef CONFIG_QCA_MMC struct sdhci_host mmc_host; #endif diff --git a/board/qca/arm/ipq5018/ipq5018.c b/board/qca/arm/ipq5018/ipq5018.c index 41cca87104..7530145a51 100644 --- a/board/qca/arm/ipq5018/ipq5018.c +++ b/board/qca/arm/ipq5018/ipq5018.c @@ -71,10 +71,6 @@ extern void ppe_uniphy_refclk_set(void); unsigned int qpic_frequency = 0, qpic_phase = 0; -#ifdef CONFIG_QPIC_SERIAL -extern unsigned int qpic_training_offset; -#endif - const char *rsvd_node = "/reserved-memory"; const char *del_node[] = {"uboot", "sbl", @@ -2078,18 +2074,6 @@ void fdt_fixup_qpic(void *blob) printf("%s : Unable to set property 'qcom,phase'\n",__func__); return; } - -#ifdef CONFIG_QPIC_SERIAL - if (qpic_training_offset != 0xBAD0FF5E){ - ret = fdt_setprop_u32(blob, node_off, "qcom,training_offset", - qpic_training_offset); - if (ret) { - printf("%s : Unable to set property 'qcom,training_offset'\n", - __func__); - return; - } - } -#endif } void fdt_fixup_bt_debug(void *blob) diff --git a/board/qca/arm/ipq9574/ipq9574.c b/board/qca/arm/ipq9574/ipq9574.c index cf1b315d91..f328b96f74 100644 --- a/board/qca/arm/ipq9574/ipq9574.c +++ b/board/qca/arm/ipq9574/ipq9574.c @@ -40,7 +40,6 @@ extern int ipq9574_edma_init(void *cfg); extern int ipq_spi_init(u16); unsigned int qpic_frequency = 0, qpic_phase = 0; -extern unsigned int qpic_training_offset; static int aq_phy_initialised = 0; extern unsigned ipq_runtime_fs_feature_enabled; @@ -89,30 +88,6 @@ void fdt_fixup_runtime_failsafe(void *blob) } #endif -void fdt_fixup_qpic(void *blob) -{ - int node_off, ret; - const char *qpic_node = {"/soc/nand@79b0000"}; - - /* This fixup is for passing qpic training offset to HLOS */ - node_off = fdt_path_offset(blob, qpic_node); - if (node_off < 0) { - printf("%s: QPIC: unable to find node '%s'\n", - __func__, qpic_node); - return; - } - - if (qpic_training_offset != 0xBAD0FF5E){ - ret = fdt_setprop_u32(blob, node_off, "qcom,training_offset", - qpic_training_offset); - if (ret) { - printf("%s : Unable to set property 'qcom,training_offset'\n", - __func__); - return; - } - } -} - void board_nand_init(void) { #ifdef CONFIG_QPIC_SERIAL diff --git a/include/configs/devsoc.h b/include/configs/devsoc.h index 5e808be9b8..17f465727c 100644 --- a/include/configs/devsoc.h +++ b/include/configs/devsoc.h @@ -273,6 +273,7 @@ extern loff_t board_env_size; #endif #ifdef CONFIG_QPIC_SERIAL +#define CONFIG_QPIC_NODE "/soc/nand@79b0000/" #ifdef QSPI_SERIAL_DEBUG /* QSPI DEBUG */ #define qspi_debug(fmt,args...) printf (fmt ,##args) #else diff --git a/include/configs/ipq5018.h b/include/configs/ipq5018.h index 7c584ea8a7..709f20c565 100644 --- a/include/configs/ipq5018.h +++ b/include/configs/ipq5018.h @@ -162,6 +162,7 @@ extern loff_t board_env_size; #endif #ifdef CONFIG_QPIC_SERIAL +#define CONFIG_QPIC_NODE "/soc/qpic-nand@79b0000/" #ifdef QSPI_SERIAL_DEBUG /* QSPI DEBUG */ #define qspi_debug(fmt,args...) printf (fmt ,##args) #else diff --git a/include/configs/ipq9574.h b/include/configs/ipq9574.h index a72c95edf5..aba48db953 100644 --- a/include/configs/ipq9574.h +++ b/include/configs/ipq9574.h @@ -204,6 +204,7 @@ extern loff_t board_env_size; #define CONFIG_QPIC_SERIAL #ifdef CONFIG_QPIC_SERIAL +#define CONFIG_QPIC_NODE "/soc/nand@79b0000/" #ifdef QSPI_SERIAL_DEBUG /* QSPI DEBUG */ #define qspi_debug(fmt,args...) printf (fmt ,##args) #else