On 23/04/2013 22:17, Benoît Thébaudeau wrote: > IIM: > - Homogenize prg_p naming (the reference manuals are not always > self-consistent > for that). > - Add missing SCSx and bank registers. > - Fix the number of banks on i.MX53. > > OCOTP: > - Rename iim to ocotp in order to avoid confusion. > - Rename fuse_data to read_fuse_data, and sticky to sw_sticky, according to > the > reference manual. > - Merge the existing spinoff gp1 fuse definition on i.MX6. > - Fix the number of banks on i.MX6. > > Signed-off-by: Benoît Thébaudeau <[email protected]> > ---
Very nice work, Benoît ! Acked-by: Stefano Babic <[email protected]> Best regards, Stefano Babic > Changes in v4: > - Convert spaces to tabs. > > Changes in v3: > - Rebase against latest u-boot-imx/master. > - Fix the number of banks on i.MX6. > - Rename iim to ocotp on i.MX6 in order to avoid confusion, and merge in the > existing gp1 fuse definition. > - Rename fuse_data to read_fuse_data, and sticky to sw_sticky, according to > the > reference manual. > > Changes in v2: > - Rebase against latest master. > > arch/arm/cpu/armv7/mx6/soc.c | 4 ++-- > arch/arm/include/asm/arch-mx25/imx-regs.h | 8 ++++++-- > arch/arm/include/asm/arch-mx27/imx-regs.h | 2 +- > arch/arm/include/asm/arch-mx31/imx-regs.h | 9 +++++++-- > arch/arm/include/asm/arch-mx35/imx-regs.h | 7 ++++++- > arch/arm/include/asm/arch-mx5/imx-regs.h | 6 +++++- > arch/arm/include/asm/arch-mx6/imx-regs.h | 19 +++++++------------ > board/freescale/mx6qsabreauto/mx6qsabreauto.c | 5 ++++- > 8 files changed, 38 insertions(+), 22 deletions(-) > > diff --git a/arch/arm/cpu/armv7/mx6/soc.c b/arch/arm/cpu/armv7/mx6/soc.c > index 69b8487..fc436fb 100644 > --- a/arch/arm/cpu/armv7/mx6/soc.c > +++ b/arch/arm/cpu/armv7/mx6/soc.c > @@ -172,8 +172,8 @@ void enable_caches(void) > #if defined(CONFIG_FEC_MXC) > void imx_get_mac_from_fuse(int dev_id, unsigned char *mac) > { > - struct iim_regs *iim = (struct iim_regs *)IMX_IIM_BASE; > - struct fuse_bank *bank = &iim->bank[4]; > + struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; > + struct fuse_bank *bank = &ocotp->bank[4]; > struct fuse_bank4_regs *fuse = > (struct fuse_bank4_regs *)bank->fuse_regs; > > diff --git a/arch/arm/include/asm/arch-mx25/imx-regs.h > b/arch/arm/include/asm/arch-mx25/imx-regs.h > index 5f4b543..99c32d4 100644 > --- a/arch/arm/include/asm/arch-mx25/imx-regs.h > +++ b/arch/arm/include/asm/arch-mx25/imx-regs.h > @@ -113,8 +113,12 @@ struct iim_regs { > u32 iim_sdat; > u32 iim_prev; > u32 iim_srev; > - u32 iim_prog_p; > - u32 res1[0x1f5]; > + u32 iim_prg_p; > + u32 iim_scs0; > + u32 iim_scs1; > + u32 iim_scs2; > + u32 iim_scs3; > + u32 res1[0x1f1]; > struct fuse_bank { > u32 fuse_regs[0x20]; > u32 fuse_rsvd[0xe0]; > diff --git a/arch/arm/include/asm/arch-mx27/imx-regs.h > b/arch/arm/include/asm/arch-mx27/imx-regs.h > index 2f6c823..aee058f 100644 > --- a/arch/arm/include/asm/arch-mx27/imx-regs.h > +++ b/arch/arm/include/asm/arch-mx27/imx-regs.h > @@ -176,7 +176,7 @@ struct iim_regs { > u32 iim_sdat; > u32 iim_prev; > u32 iim_srev; > - u32 iim_prog_p; > + u32 iim_prg_p; > u32 iim_scs0; > u32 iim_scs1; > u32 iim_scs2; > diff --git a/arch/arm/include/asm/arch-mx31/imx-regs.h > b/arch/arm/include/asm/arch-mx31/imx-regs.h > index 3f58318..f67f49c 100644 > --- a/arch/arm/include/asm/arch-mx31/imx-regs.h > +++ b/arch/arm/include/asm/arch-mx31/imx-regs.h > @@ -68,7 +68,7 @@ struct cspi_regs { > u32 test; > }; > > -/* IIM Control Registers */ > +/* IIM control registers */ > struct iim_regs { > u32 iim_stat; > u32 iim_statm; > @@ -80,11 +80,16 @@ struct iim_regs { > u32 iim_sdat; > u32 iim_prev; > u32 iim_srev; > - u32 iim_prog_p; > + u32 iim_prg_p; > u32 iim_scs0; > u32 iim_scs1; > u32 iim_scs2; > u32 iim_scs3; > + u32 res[0x1f1]; > + struct fuse_bank { > + u32 fuse_regs[0x20]; > + u32 fuse_rsvd[0xe0]; > + } bank[3]; > }; > > struct iomuxc_regs { > diff --git a/arch/arm/include/asm/arch-mx35/imx-regs.h > b/arch/arm/include/asm/arch-mx35/imx-regs.h > index 7f337be..64546d2 100644 > --- a/arch/arm/include/asm/arch-mx35/imx-regs.h > +++ b/arch/arm/include/asm/arch-mx35/imx-regs.h > @@ -262,11 +262,16 @@ struct iim_regs { > u32 iim_sdat; > u32 iim_prev; > u32 iim_srev; > - u32 iim_prog_p; > + u32 iim_prg_p; > u32 iim_scs0; > u32 iim_scs1; > u32 iim_scs2; > u32 iim_scs3; > + u32 res1[0x1f1]; > + struct fuse_bank { > + u32 fuse_regs[0x20]; > + u32 fuse_rsvd[0xe0]; > + } bank[3]; > }; > > /* General Purpose Timer (GPT) registers */ > diff --git a/arch/arm/include/asm/arch-mx5/imx-regs.h > b/arch/arm/include/asm/arch-mx5/imx-regs.h > index a71cc13..b237d5f 100644 > --- a/arch/arm/include/asm/arch-mx5/imx-regs.h > +++ b/arch/arm/include/asm/arch-mx5/imx-regs.h > @@ -499,7 +499,7 @@ struct iim_regs { > u32 sdat; > u32 prev; > u32 srev; > - u32 preg_p; > + u32 prg_p; > u32 scs0; > u32 scs1; > u32 scs2; > @@ -508,7 +508,11 @@ struct iim_regs { > struct fuse_bank { > u32 fuse_regs[0x20]; > u32 fuse_rsvd[0xe0]; > +#if defined(CONFIG_MX51) > } bank[4]; > +#elif defined(CONFIG_MX53) > + } bank[5]; > +#endif > }; > > struct fuse_bank0_regs { > diff --git a/arch/arm/include/asm/arch-mx6/imx-regs.h > b/arch/arm/include/asm/arch-mx6/imx-regs.h > index 0e4d8fa..680e752 100644 > --- a/arch/arm/include/asm/arch-mx6/imx-regs.h > +++ b/arch/arm/include/asm/arch-mx6/imx-regs.h > @@ -229,7 +229,6 @@ > > #define CHIP_REV_1_0 0x10 > #define IRAM_SIZE 0x00040000 > -#define IMX_IIM_BASE OCOTP_BASE_ADDR > #define FEC_QUIRK_ENET_MAC > > #if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__)) > @@ -258,12 +257,6 @@ struct src { > u32 gpr10; > }; > > -/* OCOTP Registers */ > -struct ocotp_regs { > - u32 reserved[0x198]; > - u32 gp1; /* 0x660 */ > -}; > - > /* GPR3 bitfields */ > #define IOMUXC_GPR3_GPU_DBG_OFFSET 29 > #define IOMUXC_GPR3_GPU_DBG_MASK (3<<IOMUXC_GPR3_GPU_DBG_OFFSET) > @@ -438,7 +431,7 @@ struct cspi_regs { > ECSPI5_BASE_ADDR > #endif > > -struct iim_regs { > +struct ocotp_regs { > u32 ctrl; > u32 ctrl_set; > u32 ctrl_clr; > @@ -449,9 +442,9 @@ struct iim_regs { > u32 rsvd1[3]; > u32 read_ctrl; > u32 rsvd2[3]; > - u32 fuse_data; > + u32 read_fuse_data; > u32 rsvd3[3]; > - u32 sticky; > + u32 sw_sticky; > u32 rsvd4[3]; > u32 scs; > u32 scs_set; > @@ -466,7 +459,7 @@ struct iim_regs { > > struct fuse_bank { > u32 fuse_regs[0x20]; > - } bank[15]; > + } bank[16]; > }; > > struct fuse_bank4_regs { > @@ -477,7 +470,9 @@ struct fuse_bank4_regs { > u32 mac_addr_low; > u32 rsvd2[3]; > u32 mac_addr_high; > - u32 rsvd3[0x13]; > + u32 rsvd3[0xb]; > + u32 gp1; > + u32 rsvd4[7]; > }; > > struct aipstz_regs { > diff --git a/board/freescale/mx6qsabreauto/mx6qsabreauto.c > b/board/freescale/mx6qsabreauto/mx6qsabreauto.c > index aec3286..a3afa58 100644 > --- a/board/freescale/mx6qsabreauto/mx6qsabreauto.c > +++ b/board/freescale/mx6qsabreauto/mx6qsabreauto.c > @@ -179,7 +179,10 @@ static int mx6sabre_rev(void) > * i.MX6Q ARD RevB: 0x02 > */ > struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR; > - int reg = readl(&ocotp->gp1); > + struct fuse_bank *bank = &ocotp->bank[4]; > + struct fuse_bank4_regs *fuse = > + (struct fuse_bank4_regs *)bank->fuse_regs; > + int reg = readl(&fuse->gp1); > int ret; > > switch (reg >> 8 & 0x0F) { > -- ===================================================================== DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: [email protected] ===================================================================== _______________________________________________ U-Boot mailing list [email protected] http://lists.denx.de/mailman/listinfo/u-boot

