mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-29 08:01:08 +00:00
zynq: Add support to find bootmode
Added support to find the bootmodes by reading slcr bootmode register. this can be helpful to autoboot the configurations w.r.t a specified bootmode. Added this functionality on board_late_init as it's not needed for normal initializtion part. Signed-off-by: Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
This commit is contained in:
parent
fe5eddbf98
commit
b3de92495f
5 changed files with 56 additions and 2 deletions
|
@ -101,6 +101,12 @@ void zynq_slcr_devcfg_enable(void)
|
||||||
zynq_slcr_lock();
|
zynq_slcr_lock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
u32 zynq_slcr_get_boot_mode(void)
|
||||||
|
{
|
||||||
|
/* Get the bootmode register value */
|
||||||
|
return readl(&slcr_base->boot_mode);
|
||||||
|
}
|
||||||
|
|
||||||
u32 zynq_slcr_get_idcode(void)
|
u32 zynq_slcr_get_idcode(void)
|
||||||
{
|
{
|
||||||
return (readl(&slcr_base->pss_idcode) & SLCR_IDCODE_MASK) >>
|
return (readl(&slcr_base->pss_idcode) & SLCR_IDCODE_MASK) >>
|
||||||
|
|
|
@ -13,6 +13,7 @@ extern void zynq_slcr_cpu_reset(void);
|
||||||
extern void zynq_slcr_gem_clk_setup(u32 gem_id, u32 rclk, u32 clk);
|
extern void zynq_slcr_gem_clk_setup(u32 gem_id, u32 rclk, u32 clk);
|
||||||
extern void zynq_slcr_devcfg_disable(void);
|
extern void zynq_slcr_devcfg_disable(void);
|
||||||
extern void zynq_slcr_devcfg_enable(void);
|
extern void zynq_slcr_devcfg_enable(void);
|
||||||
|
extern u32 zynq_slcr_get_boot_mode(void);
|
||||||
extern u32 zynq_slcr_get_idcode(void);
|
extern u32 zynq_slcr_get_idcode(void);
|
||||||
extern void zynq_ddrc_init(void);
|
extern void zynq_ddrc_init(void);
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,12 @@
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
|
|
||||||
|
/* Bootmode setting values */
|
||||||
|
#define ZYNQ_BM_MASK 0x0F
|
||||||
|
#define ZYNQ_BM_NOR 0x02
|
||||||
|
#define ZYNQ_BM_SD 0x05
|
||||||
|
#define ZYNQ_BM_JTAG 0x0
|
||||||
|
|
||||||
#ifdef CONFIG_FPGA
|
#ifdef CONFIG_FPGA
|
||||||
Xilinx_desc fpga;
|
Xilinx_desc fpga;
|
||||||
|
|
||||||
|
@ -59,6 +65,25 @@ int board_init(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int board_late_init(void)
|
||||||
|
{
|
||||||
|
switch ((zynq_slcr_get_boot_mode()) & ZYNQ_BM_MASK) {
|
||||||
|
case ZYNQ_BM_NOR:
|
||||||
|
setenv("modeboot", "norboot");
|
||||||
|
break;
|
||||||
|
case ZYNQ_BM_SD:
|
||||||
|
setenv("modeboot", "sdboot");
|
||||||
|
break;
|
||||||
|
case ZYNQ_BM_JTAG:
|
||||||
|
setenv("modeboot", "jtagboot");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
setenv("modeboot", "");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_CMD_NET
|
#ifdef CONFIG_CMD_NET
|
||||||
int board_eth_init(bd_t *bis)
|
int board_eth_init(bd_t *bis)
|
||||||
|
|
|
@ -28,7 +28,27 @@ and I/O programmability.
|
||||||
- zc770-xm012 (nor)
|
- zc770-xm012 (nor)
|
||||||
- zc770-xm013 (dual parallel qspi, gem1)
|
- zc770-xm013 (dual parallel qspi, gem1)
|
||||||
|
|
||||||
3. Mainline status
|
3. Bootmode
|
||||||
|
|
||||||
|
Zynq has a facility to read the bootmode from the slcr bootmode register
|
||||||
|
once user is setting through jumpers on the board - see page no:1546 on [5]
|
||||||
|
|
||||||
|
All possible bootmode values are defined in Table 6-2:Boot_Mode MIO Pins
|
||||||
|
on [5].
|
||||||
|
|
||||||
|
board_late_init() will read the bootmode values using slcr bootmode register
|
||||||
|
at runtime and assign the modeboot variable to specific bootmode string which
|
||||||
|
is intern used in autoboot.
|
||||||
|
|
||||||
|
SLCR bootmode register Bit[3:0] values
|
||||||
|
#define ZYNQ_BM_NOR 0x02
|
||||||
|
#define ZYNQ_BM_SD 0x05
|
||||||
|
#define ZYNQ_BM_JTAG 0x0
|
||||||
|
|
||||||
|
"modeboot" variable can assign any of "norboot", "sdboot" or "jtagboot"
|
||||||
|
bootmode strings at runtime.
|
||||||
|
|
||||||
|
4. Mainline status
|
||||||
|
|
||||||
- Added basic board configurations support.
|
- Added basic board configurations support.
|
||||||
- Added zynq u-boot bsp code - arch/arm/cpu/armv7/zynq
|
- Added zynq u-boot bsp code - arch/arm/cpu/armv7/zynq
|
||||||
|
@ -41,7 +61,7 @@ and I/O programmability.
|
||||||
spi- drivers/spi/zynq_spi.c
|
spi- drivers/spi/zynq_spi.c
|
||||||
i2c - drivers/i2c/zynq_i2c.c
|
i2c - drivers/i2c/zynq_i2c.c
|
||||||
|
|
||||||
4. TODO
|
5. TODO
|
||||||
|
|
||||||
- Add zynq boards support - zc70x, zed, microzed, zc770
|
- Add zynq boards support - zc70x, zed, microzed, zc770
|
||||||
- Add zynq qspi controller driver
|
- Add zynq qspi controller driver
|
||||||
|
@ -54,6 +74,7 @@ and I/O programmability.
|
||||||
[2] http://www.xilinx.com/products/boards-and-kits/EK-Z7-ZC706-G.htm
|
[2] http://www.xilinx.com/products/boards-and-kits/EK-Z7-ZC706-G.htm
|
||||||
[3] http://zedboard.org/product/zedboard
|
[3] http://zedboard.org/product/zedboard
|
||||||
[4] http://zedboard.org/product/microzed
|
[4] http://zedboard.org/product/microzed
|
||||||
|
[5] http://www.xilinx.com/support/documentation/user_guides/ug585-Zynq-7000-TRM.pdf
|
||||||
|
|
||||||
--
|
--
|
||||||
Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
|
Jagannadha Sutradharudu Teki <jaganna@xilinx.com>
|
||||||
|
|
|
@ -140,6 +140,7 @@
|
||||||
|
|
||||||
#define CONFIG_CMDLINE_EDITING
|
#define CONFIG_CMDLINE_EDITING
|
||||||
#define CONFIG_AUTO_COMPLETE
|
#define CONFIG_AUTO_COMPLETE
|
||||||
|
#define CONFIG_BOARD_LATE_INIT
|
||||||
#define CONFIG_SYS_LONGHELP
|
#define CONFIG_SYS_LONGHELP
|
||||||
#define CONFIG_SYS_MAXARGS 15 /* max number of command args */
|
#define CONFIG_SYS_MAXARGS 15 /* max number of command args */
|
||||||
#define CONFIG_SYS_CBSIZE 256 /* Console I/O Buffer Size */
|
#define CONFIG_SYS_CBSIZE 256 /* Console I/O Buffer Size */
|
||||||
|
|
Loading…
Reference in a new issue