* [PATCH] udoo_neo: fix udoo neo UNDEFINED
@ 2022-01-02 18:27 Tommaso Merciai
2022-01-02 19:28 ` Fabio Estevam
0 siblings, 1 reply; 4+ messages in thread
From: Tommaso Merciai @ 2022-01-02 18:27 UTC (permalink / raw)
Cc: tomm.merciai, linuxfancy, Breno Lima, Francesco Montefoschi,
Fabio Estevam, u-boot
get_board_value function fails to get the right board configuration on
second time that is call. This patch move get_board_value function at
spl level, once is call, store the right configuration into gd static
variable gd->board_type and fix the previous error.
get_board_value is now call only one time.
Signed-off-by: Tommaso Merciai <tomm.merciai@gmail.com>
---
board/udoo/neo/neo.c | 77 +++++++++++++++++++-------------------
configs/udoo_neo_defconfig | 1 +
2 files changed, 40 insertions(+), 38 deletions(-)
diff --git a/board/udoo/neo/neo.c b/board/udoo/neo/neo.c
index 62f81fff68..0ca5fbda60 100644
--- a/board/udoo/neo/neo.c
+++ b/board/udoo/neo/neo.c
@@ -235,13 +235,6 @@ static iomux_v3_cfg_t const phy_control_pads[] = {
MUX_PAD_CTRL(ENET_CLK_PAD_CTRL),
};
-static iomux_v3_cfg_t const board_recognition_pads[] = {
- /*Connected to R184*/
- MX6_PAD_NAND_READY_B__GPIO4_IO_13 | BOARD_DETECT_PAD_CFG,
- /*Connected to R185*/
- MX6_PAD_NAND_ALE__GPIO4_IO_0 | BOARD_DETECT_PAD_CFG,
-};
-
static iomux_v3_cfg_t const wdog_b_pad = {
MX6_PAD_GPIO1_IO13__GPIO1_IO_13 | MUX_PAD_CTRL(WDOG_PAD_CTRL),
};
@@ -308,34 +301,6 @@ int board_init(void)
return 0;
}
-static int get_board_value(void)
-{
- int r184, r185;
-
- imx_iomux_v3_setup_multiple_pads(board_recognition_pads,
- ARRAY_SIZE(board_recognition_pads));
-
- gpio_request(IMX_GPIO_NR(4, 13), "r184");
- gpio_request(IMX_GPIO_NR(4, 0), "r185");
- gpio_direction_input(IMX_GPIO_NR(4, 13));
- gpio_direction_input(IMX_GPIO_NR(4, 0));
-
- r184 = gpio_get_value(IMX_GPIO_NR(4, 13));
- r185 = gpio_get_value(IMX_GPIO_NR(4, 0));
-
- /*
- * Machine selection -
- * Machine r184, r185
- * ---------------------------------
- * Basic 0 0
- * Basic Ks 0 1
- * Full 1 0
- * Extended 1 1
- */
-
- return (r184 << 1) + r185;
-}
-
int board_early_init_f(void)
{
setup_iomux_uart();
@@ -370,7 +335,7 @@ int board_mmc_init(struct bd_info *bis)
static char *board_string(void)
{
- switch (get_board_value()) {
+ switch (gd->board_type) {
case UDOO_NEO_TYPE_BASIC:
return "BASIC";
case UDOO_NEO_TYPE_BASIC_KS:
@@ -403,6 +368,13 @@ int board_late_init(void)
#include <linux/libfdt.h>
#include <asm/arch/mx6-ddr.h>
+static iomux_v3_cfg_t const board_recognition_pads[] = {
+ /*Connected to R184*/
+ MX6_PAD_NAND_READY_B__GPIO4_IO_13 | BOARD_DETECT_PAD_CFG,
+ /*Connected to R185*/
+ MX6_PAD_NAND_ALE__GPIO4_IO_0 | BOARD_DETECT_PAD_CFG,
+};
+
static const struct mx6sx_iomux_ddr_regs mx6_ddr_ioregs = {
.dram_dqm0 = 0x00000028,
.dram_dqm1 = 0x00000028,
@@ -482,6 +454,34 @@ static struct mx6_ddr3_cfg neo_basic_mem_ddr = {
.trasmin = 3500,
};
+static int get_board_value(void)
+{
+ int r184, r185;
+
+ imx_iomux_v3_setup_multiple_pads(board_recognition_pads,
+ ARRAY_SIZE(board_recognition_pads));
+
+ gpio_request(IMX_GPIO_NR(4, 13), "r184");
+ gpio_request(IMX_GPIO_NR(4, 0), "r185");
+ gpio_direction_input(IMX_GPIO_NR(4, 13));
+ gpio_direction_input(IMX_GPIO_NR(4, 0));
+
+ r184 = gpio_get_value(IMX_GPIO_NR(4, 13));
+ r185 = gpio_get_value(IMX_GPIO_NR(4, 0));
+
+ /*
+ * Machine selection -
+ * Machine r184, r185
+ * ---------------------------------
+ * Basic 0 0
+ * Basic Ks 0 1
+ * Full 1 0
+ * Extended 1 1
+ */
+
+ return (r184 << 1) + r185;
+}
+
static void ccgr_init(void)
{
struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
@@ -498,7 +498,7 @@ static void ccgr_init(void)
static void spl_dram_init(void)
{
- int board = get_board_value();
+ gd->board_type = get_board_value();
struct mx6_ddr_sysinfo sysinfo = {
.dsize = 1, /* width of data bus: 1 = 32 bits */
@@ -516,7 +516,8 @@ static void spl_dram_init(void)
};
mx6sx_dram_iocfg(32, &mx6_ddr_ioregs, &mx6_grp_ioregs);
- if (board == UDOO_NEO_TYPE_BASIC || board == UDOO_NEO_TYPE_BASIC_KS)
+ if (gd->board_type == UDOO_NEO_TYPE_BASIC ||
+ gd->board_type == UDOO_NEO_TYPE_BASIC_KS)
mx6_dram_cfg(&sysinfo, &neo_basic_mmcd_calib,
&neo_basic_mem_ddr);
else
diff --git a/configs/udoo_neo_defconfig b/configs/udoo_neo_defconfig
index ca08de1bd4..eff33909d7 100644
--- a/configs/udoo_neo_defconfig
+++ b/configs/udoo_neo_defconfig
@@ -62,3 +62,4 @@ CONFIG_DM_USB=y
CONFIG_USB_STORAGE=y
CONFIG_MXC_UART=y
CONFIG_IMX_THERMAL=y
+CONFIG_BOARD_TYPES=y
\ No newline at end of file
--
2.25.1
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH] udoo_neo: fix udoo neo UNDEFINED
2022-01-02 18:27 [PATCH] udoo_neo: fix udoo neo UNDEFINED Tommaso Merciai
@ 2022-01-02 19:28 ` Fabio Estevam
2022-01-02 22:28 ` Tommaso Merciai
2022-01-02 23:59 ` Tommaso Merciai
0 siblings, 2 replies; 4+ messages in thread
From: Fabio Estevam @ 2022-01-02 19:28 UTC (permalink / raw)
To: Tommaso Merciai
Cc: linux-fancy, Breno Lima, Francesco Montefoschi, U-Boot-Denx,
Peter Robinson
Hi Tommaso,
On Sun, Jan 2, 2022 at 3:27 PM Tommaso Merciai <tomm.merciai@gmail.com> wrote:
>
> get_board_value function fails to get the right board configuration on
> second time that is call. This patch move get_board_value function at
> spl level, once is call, store the right configuration into gd static
> variable gd->board_type and fix the previous error.
> get_board_value is now call only one time.
>
> Signed-off-by: Tommaso Merciai <tomm.merciai@gmail.com>
I tested your patch on my udoo neo full, but it reports "BASIC" now:
U-Boot SPL 2022.01-rc4-00031-gc5c4ced998e3-dirty (Jan 02 2022 - 16:22:05 -0300)
Trying to boot from MMC1
U-Boot 2022.01-rc4-00031-gc5c4ced998e3-dirty (Jan 02 2022 - 16:22:05 -0300)
CPU: Freescale i.MX6SX rev1.2 996 MHz (running at 792 MHz)
CPU: Extended Commercial temperature grade (-20C to 105C) at 59C
Reset cause: WDOG
Model: UDOO Neo Basic
Board: UDOO Neo BASIC
I2C: ready
DRAM: 1 GiB
(The size is correctly detected as 'full' though')
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] udoo_neo: fix udoo neo UNDEFINED
2022-01-02 19:28 ` Fabio Estevam
@ 2022-01-02 22:28 ` Tommaso Merciai
2022-01-02 23:59 ` Tommaso Merciai
1 sibling, 0 replies; 4+ messages in thread
From: Tommaso Merciai @ 2022-01-02 22:28 UTC (permalink / raw)
To: Fabio Estevam
Cc: linux-fancy, Breno Lima, Francesco Montefoschi, U-Boot-Denx,
Peter Robinson
On Sun, Jan 02, 2022 at 04:28:35PM -0300, Fabio Estevam wrote:
> Hi Tommaso,
>
> On Sun, Jan 2, 2022 at 3:27 PM Tommaso Merciai <tomm.merciai@gmail.com> wrote:
> >
> > get_board_value function fails to get the right board configuration on
> > second time that is call. This patch move get_board_value function at
> > spl level, once is call, store the right configuration into gd static
> > variable gd->board_type and fix the previous error.
> > get_board_value is now call only one time.
> >
> > Signed-off-by: Tommaso Merciai <tomm.merciai@gmail.com>
>
> I tested your patch on my udoo neo full, but it reports "BASIC" now:
>
> U-Boot SPL 2022.01-rc4-00031-gc5c4ced998e3-dirty (Jan 02 2022 - 16:22:05 -0300)
> Trying to boot from MMC1
>
>
> U-Boot 2022.01-rc4-00031-gc5c4ced998e3-dirty (Jan 02 2022 - 16:22:05 -0300)
>
> CPU: Freescale i.MX6SX rev1.2 996 MHz (running at 792 MHz)
> CPU: Extended Commercial temperature grade (-20C to 105C) at 59C
> Reset cause: WDOG
> Model: UDOO Neo Basic
> Board: UDOO Neo BASIC
> I2C: ready
> DRAM: 1 GiB
>
> (The size is correctly detected as 'full' though')
Hi Fabio,
Thanks for your test. I'll investigate on the reason and let you know.
Tommaso Merciai
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] udoo_neo: fix udoo neo UNDEFINED
2022-01-02 19:28 ` Fabio Estevam
2022-01-02 22:28 ` Tommaso Merciai
@ 2022-01-02 23:59 ` Tommaso Merciai
1 sibling, 0 replies; 4+ messages in thread
From: Tommaso Merciai @ 2022-01-02 23:59 UTC (permalink / raw)
To: Fabio Estevam
Cc: linux-fancy, Breno Lima, Francesco Montefoschi, U-Boot-Denx,
Peter Robinson
On Sun, Jan 02, 2022 at 04:28:35PM -0300, Fabio Estevam wrote:
> Hi Tommaso,
>
> On Sun, Jan 2, 2022 at 3:27 PM Tommaso Merciai <tomm.merciai@gmail.com> wrote:
> >
> > get_board_value function fails to get the right board configuration on
> > second time that is call. This patch move get_board_value function at
> > spl level, once is call, store the right configuration into gd static
> > variable gd->board_type and fix the previous error.
> > get_board_value is now call only one time.
> >
> > Signed-off-by: Tommaso Merciai <tomm.merciai@gmail.com>
>
> I tested your patch on my udoo neo full, but it reports "BASIC" now:
>
> U-Boot SPL 2022.01-rc4-00031-gc5c4ced998e3-dirty (Jan 02 2022 - 16:22:05 -0300)
> Trying to boot from MMC1
>
>
> U-Boot 2022.01-rc4-00031-gc5c4ced998e3-dirty (Jan 02 2022 - 16:22:05 -0300)
>
> CPU: Freescale i.MX6SX rev1.2 996 MHz (running at 792 MHz)
> CPU: Extended Commercial temperature grade (-20C to 105C) at 59C
> Reset cause: WDOG
> Model: UDOO Neo Basic
> Board: UDOO Neo BASIC
> I2C: ready
> DRAM: 1 GiB
>
> (The size is correctly detected as 'full' though')
Hi Fabio,
Sent v2, I think this issue is fixed. Can you test it please.
The ploblem is that after spl, gd->board_type is re-initialized.
Using get_board_value inside board_early_init_f seems solve.
Let me know.
Thanks,
Tommaso Merciai
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-01-02 23:59 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-01-02 18:27 [PATCH] udoo_neo: fix udoo neo UNDEFINED Tommaso Merciai
2022-01-02 19:28 ` Fabio Estevam
2022-01-02 22:28 ` Tommaso Merciai
2022-01-02 23:59 ` Tommaso Merciai
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox