imx: ventana: move GSC boot watchdog disable function to gsc.c
Move the code that disables the GSC boot watchdog into gsc.c Signed-off-by: Tim Harvey <tharvey@gateworks.com>
This commit is contained in:
parent
e56c5791af
commit
2d833c8528
|
|
@ -132,6 +132,33 @@ int gsc_info(int verbose)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The Gateworks System Controller implements a boot
|
||||||
|
* watchdog (always enabled) as a workaround for IMX6 boot related
|
||||||
|
* errata such as:
|
||||||
|
* ERR005768 - no fix scheduled
|
||||||
|
* ERR006282 - fixed in silicon r1.2
|
||||||
|
* ERR007117 - fixed in silicon r1.3
|
||||||
|
* ERR007220 - fixed in silicon r1.3
|
||||||
|
* ERR007926 - no fix scheduled
|
||||||
|
* see http://cache.freescale.com/files/32bit/doc/errata/IMX6DQCE.pdf
|
||||||
|
*
|
||||||
|
* Disable the boot watchdog
|
||||||
|
*/
|
||||||
|
int gsc_boot_wd_disable(void)
|
||||||
|
{
|
||||||
|
u8 reg;
|
||||||
|
|
||||||
|
i2c_set_bus_num(CONFIG_I2C_GSC);
|
||||||
|
if (!gsc_i2c_read(GSC_SC_ADDR, GSC_SC_CTRL1, 1, ®, 1)) {
|
||||||
|
reg |= (1 << GSC_SC_CTRL1_WDDIS);
|
||||||
|
if (!gsc_i2c_write(GSC_SC_ADDR, GSC_SC_CTRL1, 1, ®, 1))
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
puts("Error: could not disable GSC Watchdog\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_CMD_GSC
|
#ifdef CONFIG_CMD_GSC
|
||||||
static int do_gsc_wd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
static int do_gsc_wd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -66,5 +66,6 @@ enum {
|
||||||
int gsc_i2c_read(uchar chip, uint addr, int alen, uchar *buf, int len);
|
int gsc_i2c_read(uchar chip, uint addr, int alen, uchar *buf, int len);
|
||||||
int gsc_i2c_write(uchar chip, uint addr, int alen, uchar *buf, int len);
|
int gsc_i2c_write(uchar chip, uint addr, int alen, uchar *buf, int len);
|
||||||
int gsc_info(int verbose);
|
int gsc_info(int verbose);
|
||||||
|
int gsc_boot_wd_disable(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -659,7 +659,6 @@ static const struct boot_mode board_boot_modes[] = {
|
||||||
int misc_init_r(void)
|
int misc_init_r(void)
|
||||||
{
|
{
|
||||||
struct ventana_board_info *info = &ventana_info;
|
struct ventana_board_info *info = &ventana_info;
|
||||||
unsigned char reg;
|
|
||||||
|
|
||||||
/* set env vars based on EEPROM data */
|
/* set env vars based on EEPROM data */
|
||||||
if (ventana_info.model[0]) {
|
if (ventana_info.model[0]) {
|
||||||
|
|
@ -740,27 +739,8 @@ int misc_init_r(void)
|
||||||
add_board_boot_modes(board_boot_modes);
|
add_board_boot_modes(board_boot_modes);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/* disable boot watchdog */
|
||||||
* The Gateworks System Controller implements a boot
|
gsc_boot_wd_disable();
|
||||||
* watchdog (always enabled) as a workaround for IMX6 boot related
|
|
||||||
* errata such as:
|
|
||||||
* ERR005768 - no fix scheduled
|
|
||||||
* ERR006282 - fixed in silicon r1.2
|
|
||||||
* ERR007117 - fixed in silicon r1.3
|
|
||||||
* ERR007220 - fixed in silicon r1.3
|
|
||||||
* ERR007926 - no fix scheduled
|
|
||||||
* see http://cache.freescale.com/files/32bit/doc/errata/IMX6DQCE.pdf
|
|
||||||
*
|
|
||||||
* Disable the boot watchdog and display/clear the timeout flag if set
|
|
||||||
*/
|
|
||||||
i2c_set_bus_num(CONFIG_I2C_GSC);
|
|
||||||
if (!gsc_i2c_read(GSC_SC_ADDR, GSC_SC_CTRL1, 1, ®, 1)) {
|
|
||||||
reg |= (1 << GSC_SC_CTRL1_WDDIS);
|
|
||||||
if (gsc_i2c_write(GSC_SC_ADDR, GSC_SC_CTRL1, 1, ®, 1))
|
|
||||||
puts("Error: could not disable GSC Watchdog\n");
|
|
||||||
} else {
|
|
||||||
puts("Error: could not disable GSC Watchdog\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue