* [U-Boot] [PATCH 1/2] v2 i.MX28: Fix ref_cpu clock setup [not found] <6EA3E0BCC03CC34B89B01BD57ECBC718F65163@POBOX.postoffice.danego.net> @ 2012-02-06 12:20 ` Marek Vasut 2012-02-06 12:33 ` Robert Deliën 2012-02-06 12:20 ` Marek Vasut 1 sibling, 1 reply; 11+ messages in thread From: Marek Vasut @ 2012-02-06 12:20 UTC (permalink / raw) To: u-boot > Hi, > > This patch fixes ref_cpu clock setup. This bug leads to a hanging board > after rebooting from the Kernel, due to failing memory size detection: > U-Boot 2011.12-svn342 (Feb 02 2012 - 17:20:00) > > Freescale i.MX28 family > I2C: ready > DRAM: 0 Bytes > > The cause of the bug is register hw_clkctrl_frac0 being accessed as > a 32-bit long, whereas the manual specifically states it can be accessed > as bytes only. > > This patches introduces an 8-bit wide register type, mx28_register_8. > The already existing mx28_register has been renamed mx28_register_32. > > With this patch, U-Boot no longer hangs after an i.mx28 based board > was reset from the Kernel. > > (PS: I hope this email is properly formatted now, after fight our exchange > server for a whole morning and loosing in the end) > > Signed-off-by: Robert Delien <robert@delien.nl> > --- > arch/arm/cpu/arm926ejs/mx28/clock.c | 74 +++----- > arch/arm/cpu/arm926ejs/mx28/iomux.c | 6 +- > arch/arm/cpu/arm926ejs/mx28/mx28.c | 6 +- > arch/arm/cpu/arm926ejs/mx28/spl_mem_init.c | 23 +-- > arch/arm/include/asm/arch-mx28/regs-apbh.h | 254 > ++++++++++++------------ arch/arm/include/asm/arch-mx28/regs-bch.h | > 42 ++-- > arch/arm/include/asm/arch-mx28/regs-clkctrl.h | 101 +++++------ > arch/arm/include/asm/arch-mx28/regs-common.h | 28 ++- > arch/arm/include/asm/arch-mx28/regs-gpmi.h | 26 ++-- > arch/arm/include/asm/arch-mx28/regs-i2c.h | 28 ++-- > arch/arm/include/asm/arch-mx28/regs-ocotp.h | 86 ++++---- > arch/arm/include/asm/arch-mx28/regs-pinctrl.h | 168 ++++++++-------- > arch/arm/include/asm/arch-mx28/regs-power.h | 28 ++-- > arch/arm/include/asm/arch-mx28/regs-rtc.h | 28 ++-- > arch/arm/include/asm/arch-mx28/regs-ssp.h | 40 ++-- > arch/arm/include/asm/arch-mx28/regs-timrot.h | 38 ++-- > arch/arm/include/asm/arch-mx28/regs-usbphy.h | 20 +- > arch/arm/include/asm/arch-mx28/sys_proto.h | 6 +- > drivers/gpio/mxs_gpio.c | 16 +- > drivers/usb/host/ehci-mxs.c | 8 +- > 20 files changed, 505 insertions(+), 521 deletions(-) > > diff --git a/arch/arm/cpu/arm926ejs/mx28/clock.c > b/arch/arm/cpu/arm926ejs/mx28/clock.c index f698506..c0eea9e 100644 > --- a/arch/arm/cpu/arm926ejs/mx28/clock.c > +++ b/arch/arm/cpu/arm926ejs/mx28/clock.c > @@ -46,8 +46,8 @@ static uint32_t mx28_get_pclk(void) > struct mx28_clkctrl_regs *clkctrl_regs = > (struct mx28_clkctrl_regs *)MXS_CLKCTRL_BASE; > > - uint32_t clkctrl, clkseq, clkfrac; > - uint32_t frac, div; > + uint32_t clkctrl, clkseq, div; > + uint8_t clkfrac, frac; > > clkctrl = readl(&clkctrl_regs->hw_clkctrl_cpu); > > @@ -67,8 +67,8 @@ static uint32_t mx28_get_pclk(void) > } > > /* REF Path */ > - clkfrac = readl(&clkctrl_regs->hw_clkctrl_frac0); > - frac = clkfrac & CLKCTRL_FRAC0_CPUFRAC_MASK; > + clkfrac = readb(&clkctrl_regs->hw_clkctrl_frac0[CLKCTRL_FRAC0_CPU]); > + frac = clkfrac & CLKCTRL_FRAC0_FRAC_MASK; > div = clkctrl & CLKCTRL_CPU_DIV_CPU_MASK; > return (PLL_FREQ_MHZ * PLL_FREQ_COEF / frac) / div; > } > @@ -96,8 +96,8 @@ static uint32_t mx28_get_emiclk(void) > struct mx28_clkctrl_regs *clkctrl_regs = > (struct mx28_clkctrl_regs *)MXS_CLKCTRL_BASE; > > - uint32_t frac, div; > - uint32_t clkctrl, clkseq, clkfrac; > + uint32_t clkctrl, clkseq, div; > + uint8_t clkfrac, frac; > > clkseq = readl(&clkctrl_regs->hw_clkctrl_clkseq); > clkctrl = readl(&clkctrl_regs->hw_clkctrl_emi); > @@ -109,11 +109,9 @@ static uint32_t mx28_get_emiclk(void) > return XTAL_FREQ_MHZ / div; > } > > - clkfrac = readl(&clkctrl_regs->hw_clkctrl_frac0); > - > /* REF Path */ > - frac = (clkfrac & CLKCTRL_FRAC0_EMIFRAC_MASK) >> > - CLKCTRL_FRAC0_EMIFRAC_OFFSET; > + clkfrac = readb(&clkctrl_regs->hw_clkctrl_frac0[CLKCTRL_FRAC0_EMI]); > + frac = clkfrac & CLKCTRL_FRAC0_FRAC_MASK; > div = clkctrl & CLKCTRL_EMI_DIV_EMI_MASK; > return (PLL_FREQ_MHZ * PLL_FREQ_COEF / frac) / div; > } > @@ -123,8 +121,8 @@ static uint32_t mx28_get_gpmiclk(void) > struct mx28_clkctrl_regs *clkctrl_regs = > (struct mx28_clkctrl_regs *)MXS_CLKCTRL_BASE; > > - uint32_t frac, div; > - uint32_t clkctrl, clkseq, clkfrac; > + uint32_t clkctrl, clkseq, div; > + uint8_t clkfrac, frac; > > clkseq = readl(&clkctrl_regs->hw_clkctrl_clkseq); > clkctrl = readl(&clkctrl_regs->hw_clkctrl_gpmi); > @@ -135,11 +133,9 @@ static uint32_t mx28_get_gpmiclk(void) > return XTAL_FREQ_MHZ / div; > } > > - clkfrac = readl(&clkctrl_regs->hw_clkctrl_frac1); > - > /* REF Path */ > - frac = (clkfrac & CLKCTRL_FRAC1_GPMIFRAC_MASK) >> > - CLKCTRL_FRAC1_GPMIFRAC_OFFSET; > + clkfrac = readb(&clkctrl_regs->hw_clkctrl_frac1[CLKCTRL_FRAC1_GPMI]); > + frac = clkfrac & CLKCTRL_FRAC1_FRAC_MASK; > div = clkctrl & CLKCTRL_GPMI_DIV_MASK; > return (PLL_FREQ_MHZ * PLL_FREQ_COEF / frac) / div; > } > @@ -152,11 +148,12 @@ void mx28_set_ioclk(enum mxs_ioclock io, uint32_t > freq) struct mx28_clkctrl_regs *clkctrl_regs = > (struct mx28_clkctrl_regs *)MXS_CLKCTRL_BASE; > uint32_t div; > + int io_reg; > > if (freq == 0) > return; > > - if (io > MXC_IOCLK1) > + if ((io < MXC_IOCLK0) || (io > MXC_IOCLK1)) > return; > > div = (PLL_FREQ_KHZ * PLL_FREQ_COEF) / freq; > @@ -167,23 +164,13 @@ void mx28_set_ioclk(enum mxs_ioclock io, uint32_t > freq) if (div > 35) > div = 35; > > - if (io == MXC_IOCLK0) { > - writel(CLKCTRL_FRAC0_CLKGATEIO0, > - &clkctrl_regs->hw_clkctrl_frac0_set); > - clrsetbits_le32(&clkctrl_regs->hw_clkctrl_frac0, > - CLKCTRL_FRAC0_IO0FRAC_MASK, > - div << CLKCTRL_FRAC0_IO0FRAC_OFFSET); > - writel(CLKCTRL_FRAC0_CLKGATEIO0, > - &clkctrl_regs->hw_clkctrl_frac0_clr); > - } else { > - writel(CLKCTRL_FRAC0_CLKGATEIO1, > - &clkctrl_regs->hw_clkctrl_frac0_set); > - clrsetbits_le32(&clkctrl_regs->hw_clkctrl_frac0, > - CLKCTRL_FRAC0_IO1FRAC_MASK, > - div << CLKCTRL_FRAC0_IO1FRAC_OFFSET); > - writel(CLKCTRL_FRAC0_CLKGATEIO1, > - &clkctrl_regs->hw_clkctrl_frac0_clr); > - } I think you're mixing two things together above. This patch and some kind of a cleanup. But ok, thinking of this, it seems context related. > + io_reg = CLKCTRL_FRAC0_IO0 - (io - MXC_IOCLK0); Uh ... ioreg = (io == MXC_IOCLK0) ? something : another; or stuff like that might be better. The math above is really confusing. Or you can even enumerate enum mxs_ioclock so that you won't need this math at all, which is even better. > + writeb(CLKCTRL_FRAC0_CLKGATE, > + &clkctrl_regs->hw_clkctrl_frac0_set[io_reg]); > + writeb(CLKCTRL_FRAC0_CLKGATE | (div & CLKCTRL_FRAC0_FRAC_MASK), > + &clkctrl_regs->hw_clkctrl_frac0[io_reg]); > + writeb(CLKCTRL_FRAC0_CLKGATE, > + &clkctrl_regs->hw_clkctrl_frac0_clr[io_reg]); > } > > /* > @@ -193,19 +180,16 @@ static uint32_t mx28_get_ioclk(enum mxs_ioclock io) > { > struct mx28_clkctrl_regs *clkctrl_regs = > (struct mx28_clkctrl_regs *)MXS_CLKCTRL_BASE; > - uint32_t tmp, ret; > + uint8_t ret; > + int io_reg; > > - if (io > MXC_IOCLK1) > + if ((io < MXC_IOCLK0) || (io > MXC_IOCLK1)) > return 0; > > - tmp = readl(&clkctrl_regs->hw_clkctrl_frac0); > + io_reg = CLKCTRL_FRAC0_IO0 - (io - MXC_IOCLK0); > > - if (io == MXC_IOCLK0) > - ret = (tmp & CLKCTRL_FRAC0_IO0FRAC_MASK) >> > - CLKCTRL_FRAC0_IO0FRAC_OFFSET; > - else > - ret = (tmp & CLKCTRL_FRAC0_IO1FRAC_MASK) >> > - CLKCTRL_FRAC0_IO1FRAC_OFFSET; > + ret = readb(&clkctrl_regs->hw_clkctrl_frac0[io_reg]) & > + CLKCTRL_FRAC0_FRAC_MASK; > > return (PLL_FREQ_KHZ * PLL_FREQ_COEF) / ret; > } > @@ -223,7 +207,7 @@ void mx28_set_sspclk(enum mxs_sspclock ssp, uint32_t > freq, int xtal) return; > > clkreg = (uint32_t)(&clkctrl_regs->hw_clkctrl_ssp0) + > - (ssp * sizeof(struct mx28_register)); > + (ssp * sizeof(struct mx28_register_32)); > > clrbits_le32(clkreg, CLKCTRL_SSP_CLKGATE); > while (readl(clkreg) & CLKCTRL_SSP_CLKGATE) > @@ -272,7 +256,7 @@ static uint32_t mx28_get_sspclk(enum mxs_sspclock ssp) > return XTAL_FREQ_KHZ; > > clkreg = (uint32_t)(&clkctrl_regs->hw_clkctrl_ssp0) + > - (ssp * sizeof(struct mx28_register)); > + (ssp * sizeof(struct mx28_register_32)); > > tmp = readl(clkreg) & CLKCTRL_SSP_DIV_MASK; > > diff --git a/arch/arm/cpu/arm926ejs/mx28/iomux.c > b/arch/arm/cpu/arm926ejs/mx28/iomux.c index 9ea411f..12916b6 100644 > --- a/arch/arm/cpu/arm926ejs/mx28/iomux.c > +++ b/arch/arm/cpu/arm926ejs/mx28/iomux.c > @@ -43,7 +43,7 @@ int mxs_iomux_setup_pad(iomux_cfg_t pad) > { > u32 reg, ofs, bp, bm; > void *iomux_base = (void *)MXS_PINCTRL_BASE; > - struct mx28_register *mxs_reg; > + struct mx28_register_32 *mxs_reg; > > /* muxsel */ > ofs = 0x100; > @@ -70,7 +70,7 @@ int mxs_iomux_setup_pad(iomux_cfg_t pad) > /* vol */ > if (PAD_VOL_VALID(pad)) { > bp = PAD_PIN(pad) % 8 * 4 + 2; > - mxs_reg = (struct mx28_register *)(iomux_base + ofs); > + mxs_reg = (struct mx28_register_32 *)(iomux_base + ofs); > if (PAD_VOL(pad)) > writel(1 << bp, &mxs_reg->reg_set); > else > @@ -82,7 +82,7 @@ int mxs_iomux_setup_pad(iomux_cfg_t pad) > ofs = PULL_OFFSET; > ofs += PAD_BANK(pad) * 0x10; > bp = PAD_PIN(pad); > - mxs_reg = (struct mx28_register *)(iomux_base + ofs); > + mxs_reg = (struct mx28_register_32 *)(iomux_base + ofs); > if (PAD_PULL(pad)) > writel(1 << bp, &mxs_reg->reg_set); > else > diff --git a/arch/arm/cpu/arm926ejs/mx28/mx28.c > b/arch/arm/cpu/arm926ejs/mx28/mx28.c index 683777f..0e69193 100644 > --- a/arch/arm/cpu/arm926ejs/mx28/mx28.c > +++ b/arch/arm/cpu/arm926ejs/mx28/mx28.c > @@ -63,7 +63,7 @@ void reset_cpu(ulong ignored) > ; > } > > -int mx28_wait_mask_set(struct mx28_register *reg, uint32_t mask, int > timeout) +int mx28_wait_mask_set(struct mx28_register_32 *reg, uint32_t Can you actually separate out the rename to register_32 and then the fixup patch for register_8? Rest seems ok M ^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH 1/2] v2 i.MX28: Fix ref_cpu clock setup 2012-02-06 12:20 ` [U-Boot] [PATCH 1/2] v2 i.MX28: Fix ref_cpu clock setup Marek Vasut @ 2012-02-06 12:33 ` Robert Deliën 2012-02-06 12:49 ` Marek Vasut 2012-02-06 12:56 ` Marek Vasut 0 siblings, 2 replies; 11+ messages in thread From: Robert Deliën @ 2012-02-06 12:33 UTC (permalink / raw) To: u-boot Hi Marek, > - if (io == MXC_IOCLK0) { > - writel(CLKCTRL_FRAC0_CLKGATEIO0, > - &clkctrl_regs->hw_clkctrl_frac0_set); > - clrsetbits_le32(&clkctrl_regs->hw_clkctrl_frac0, > - CLKCTRL_FRAC0_IO0FRAC_MASK, > - div << CLKCTRL_FRAC0_IO0FRAC_OFFSET); > - writel(CLKCTRL_FRAC0_CLKGATEIO0, > - &clkctrl_regs->hw_clkctrl_frac0_clr); > - } else { > - writel(CLKCTRL_FRAC0_CLKGATEIO1, > - &clkctrl_regs->hw_clkctrl_frac0_set); > - clrsetbits_le32(&clkctrl_regs->hw_clkctrl_frac0, > - CLKCTRL_FRAC0_IO1FRAC_MASK, > - div << CLKCTRL_FRAC0_IO1FRAC_OFFSET); > - writel(CLKCTRL_FRAC0_CLKGATEIO1, > - &clkctrl_regs->hw_clkctrl_frac0_clr); > - } > > I think you're mixing two things together above. This patch and some kind of a > cleanup. But ok, thinking of this, it seems context related. Yeah, duplicate code didn't feel right. Besides, the code didn't check for values larger than MXC_IOCLK0, which is does now. > > + io_reg = CLKCTRL_FRAC0_IO0 - (io - MXC_IOCLK0); > > Uh ... ioreg = (io == MXC_IOCLK0) ? something : another; or stuff like that > might be better. The math above is really confusing. Or you can even enumerate > enum mxs_ioclock so that you won't need this math at all, which is even better. I came accross an enumerator in the code, but I found that too big of a change to slip in, because it alters the external interface. But we're not done with the code yet. Plenty of oppertunities left. ioreg = (io == MXC_IOCLK0) is not the same. The actual value of io != MXC_IOCLK0 it compiler implementation depending. > Can you actually separate out the rename to register_32 and then the fixup patch > for register_8? I'd rather not: I'm down to my neck it work and I don't these two parts in my archive so that means manual merging, verifying and for another two hours. > Rest seems ok Can you see if our server swapped tabs for spaces? It's beyond my grasp how M$ considers it a good idea to alter to contents of my email. Cheers, Robert. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH 1/2] v2 i.MX28: Fix ref_cpu clock setup 2012-02-06 12:33 ` Robert Deliën @ 2012-02-06 12:49 ` Marek Vasut 2012-02-06 13:03 ` Robert Deliën 2012-02-06 12:56 ` Marek Vasut 1 sibling, 1 reply; 11+ messages in thread From: Marek Vasut @ 2012-02-06 12:49 UTC (permalink / raw) To: u-boot > Hi Marek, > > > - if (io == MXC_IOCLK0) { > > - writel(CLKCTRL_FRAC0_CLKGATEIO0, > > - &clkctrl_regs->hw_clkctrl_frac0_set); > > - clrsetbits_le32(&clkctrl_regs->hw_clkctrl_frac0, > > - CLKCTRL_FRAC0_IO0FRAC_MASK, > > - div << CLKCTRL_FRAC0_IO0FRAC_OFFSET); > > - writel(CLKCTRL_FRAC0_CLKGATEIO0, > > - &clkctrl_regs->hw_clkctrl_frac0_clr); > > - } else { > > - writel(CLKCTRL_FRAC0_CLKGATEIO1, > > - &clkctrl_regs->hw_clkctrl_frac0_set); > > - clrsetbits_le32(&clkctrl_regs->hw_clkctrl_frac0, > > - CLKCTRL_FRAC0_IO1FRAC_MASK, > > - div << CLKCTRL_FRAC0_IO1FRAC_OFFSET); > > - writel(CLKCTRL_FRAC0_CLKGATEIO1, > > - &clkctrl_regs->hw_clkctrl_frac0_clr); > > - } > > > > I think you're mixing two things together above. This patch and some kind > > of a cleanup. But ok, thinking of this, it seems context related. > > Yeah, duplicate code didn't feel right. Besides, the code didn't check for > values larger than MXC_IOCLK0, which is does now. > > > > + io_reg = CLKCTRL_FRAC0_IO0 - (io - MXC_IOCLK0); > > > > Uh ... ioreg = (io == MXC_IOCLK0) ? something : another; or stuff like > > that might be better. The math above is really confusing. Or you can > > even enumerate enum mxs_ioclock so that you won't need this math at all, > > which is even better. > > I came accross an enumerator in the code, but I found that too big of a > change to slip in, because it alters the external interface. But we're not > done with the code yet. Plenty of oppertunities left. Not really, fixing the enumeration should be fine I believe. > > ioreg = (io == MXC_IOCLK0) is not the same. The actual value of > io != MXC_IOCLK0 it compiler implementation depending. That's why I put the ternary operator there ? > > > Can you actually separate out the rename to register_32 and then the > > fixup patch for register_8? > > I'd rather not: I'm down to my neck it work and I don't these two parts in > my archive so that means manual merging, verifying and for another two > hours. It's impossible to review like this though and much more prone to pull in bugs. > > > Rest seems ok > > Can you see if our server swapped tabs for spaces? It's beyond my grasp how > M$ considers it a good idea to alter to contents of my email. It didnt. > > Cheers, > > Robert. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH 1/2] v2 i.MX28: Fix ref_cpu clock setup 2012-02-06 12:49 ` Marek Vasut @ 2012-02-06 13:03 ` Robert Deliën 2012-02-06 13:15 ` Marek Vasut 0 siblings, 1 reply; 11+ messages in thread From: Robert Deliën @ 2012-02-06 13:03 UTC (permalink / raw) To: u-boot Hi, > That's why I put the ternary operator there ? Ah; without anything behind it, it really just looked like a question mark. But using a ternary caters only for a set of two. So enumeration would be better ideed. > It's impossible to review like this though and much more prone to pull in bugs. Can you point me to a good and tutorial for GIT then? Just a brief description of the work flow, from cloning the public archive, to submitting patches with a couple of examples. Now, for every bit of rework, I clone a new archive and manually patch in all my changes to make a clean patch. That is two hours of work and I'm not willing to spend that time on every remark. Cheers, Robert. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH 1/2] v2 i.MX28: Fix ref_cpu clock setup 2012-02-06 13:03 ` Robert Deliën @ 2012-02-06 13:15 ` Marek Vasut 0 siblings, 0 replies; 11+ messages in thread From: Marek Vasut @ 2012-02-06 13:15 UTC (permalink / raw) To: u-boot > Hi, > > > That's why I put the ternary operator there ? > > Ah; without anything behind it, it really just looked like a question mark. > But using a ternary caters only for a set of two. So enumeration would > be better ideed. > > > It's impossible to review like this though and much more prone to pull in > > bugs. > > Can you point me to a good and tutorial for GIT then? Just a brief > description of the work flow, from cloning the public archive, to > submitting patches with a couple of examples. I just sent you an howto in a subsequent mail. > > Now, for every bit of rework, I clone a new archive and manually > patch in all my changes to make a clean patch. No, it's really simple, see the email. > That is two hours of work > and I'm not willing to spend that time on every remark. Yep ... basically, you need to learn: git rebase -i (select patches you want to edit, reword ...) git commit --amend (add stuff to top-of-head patch) And the stuff I sent you -- "git reset" to reset changes from the index, git add -p to add changes selectively. M > > Cheers, > > Robert. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH 1/2] v2 i.MX28: Fix ref_cpu clock setup 2012-02-06 12:33 ` Robert Deliën 2012-02-06 12:49 ` Marek Vasut @ 2012-02-06 12:56 ` Marek Vasut 2012-02-06 14:28 ` Robert Deliën 1 sibling, 1 reply; 11+ messages in thread From: Marek Vasut @ 2012-02-06 12:56 UTC (permalink / raw) To: u-boot > Hi Marek, > > > - if (io == MXC_IOCLK0) { > > - writel(CLKCTRL_FRAC0_CLKGATEIO0, > > - &clkctrl_regs->hw_clkctrl_frac0_set); > > - clrsetbits_le32(&clkctrl_regs->hw_clkctrl_frac0, > > - CLKCTRL_FRAC0_IO0FRAC_MASK, > > - div << CLKCTRL_FRAC0_IO0FRAC_OFFSET); > > - writel(CLKCTRL_FRAC0_CLKGATEIO0, > > - &clkctrl_regs->hw_clkctrl_frac0_clr); > > - } else { > > - writel(CLKCTRL_FRAC0_CLKGATEIO1, > > - &clkctrl_regs->hw_clkctrl_frac0_set); > > - clrsetbits_le32(&clkctrl_regs->hw_clkctrl_frac0, > > - CLKCTRL_FRAC0_IO1FRAC_MASK, > > - div << CLKCTRL_FRAC0_IO1FRAC_OFFSET); > > - writel(CLKCTRL_FRAC0_CLKGATEIO1, > > - &clkctrl_regs->hw_clkctrl_frac0_clr); > > - } > > > > I think you're mixing two things together above. This patch and some kind > > of a cleanup. But ok, thinking of this, it seems context related. > > Yeah, duplicate code didn't feel right. Besides, the code didn't check for > values larger than MXC_IOCLK0, which is does now. > > > > + io_reg = CLKCTRL_FRAC0_IO0 - (io - MXC_IOCLK0); > > > > Uh ... ioreg = (io == MXC_IOCLK0) ? something : another; or stuff like > > that might be better. The math above is really confusing. Or you can > > even enumerate enum mxs_ioclock so that you won't need this math at all, > > which is even better. > > I came accross an enumerator in the code, but I found that too big of a > change to slip in, because it alters the external interface. But we're not > done with the code yet. Plenty of oppertunities left. > > ioreg = (io == MXC_IOCLK0) is not the same. The actual value of > io != MXC_IOCLK0 it compiler implementation depending. > > > Can you actually separate out the rename to register_32 and then the > > fixup patch for register_8? > > I'd rather not: I'm down to my neck it work and I don't these two parts in > my archive so that means manual merging, verifying and for another two > hours. > > > Rest seems ok > > Can you see if our server swapped tabs for spaces? It's beyond my grasp how > M$ considers it a good idea to alter to contents of my email. > > Cheers, > > Robert. btw. a quick hint: git reset HEAD^ git add -p Add only the reg32 changes, commit, add the rest, commit. Send ;-) M ^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH 1/2] v2 i.MX28: Fix ref_cpu clock setup 2012-02-06 12:56 ` Marek Vasut @ 2012-02-06 14:28 ` Robert Deliën 2012-02-06 14:40 ` Marek Vasut 0 siblings, 1 reply; 11+ messages in thread From: Robert Deliën @ 2012-02-06 14:28 UTC (permalink / raw) To: u-boot > btw. a quick hint: > > git reset HEAD^ > git add -p > > Add only the reg32 changes, commit, add the rest, commit. Send ;-) Well, I made it a little more work than that. But who would have thought? GIT is actually growing on me! I've got my changes in my repository now, in 4 separate commits. I've even found an SMTP server on the network here. So we're looking good. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH 1/2] v2 i.MX28: Fix ref_cpu clock setup 2012-02-06 14:28 ` Robert Deliën @ 2012-02-06 14:40 ` Marek Vasut 0 siblings, 0 replies; 11+ messages in thread From: Marek Vasut @ 2012-02-06 14:40 UTC (permalink / raw) To: u-boot > > btw. a quick hint: > > > > git reset HEAD^ > > git add -p > > > > Add only the reg32 changes, commit, add the rest, commit. Send ;-) > > Well, I made it a little more work than that. But who would have > thought? GIT is actually growing on me! > > I've got my changes in my repository now, in 4 separate commits. I've even > found an SMTP server on the network here. So we're looking good. Yes, finally run git format-patch -o somewhere and tools/checkpatch.pl on the patches, fix the remaining trouble and git send-email ^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH 1/2] v2 i.MX28: Fix ref_cpu clock setup [not found] <6EA3E0BCC03CC34B89B01BD57ECBC718F65163@POBOX.postoffice.danego.net> 2012-02-06 12:20 ` [U-Boot] [PATCH 1/2] v2 i.MX28: Fix ref_cpu clock setup Marek Vasut @ 2012-02-06 12:20 ` Marek Vasut 2012-02-06 12:38 ` Robert Deliën 1 sibling, 1 reply; 11+ messages in thread From: Marek Vasut @ 2012-02-06 12:20 UTC (permalink / raw) To: u-boot > Hi, > > This patch fixes ref_cpu clock setup. This bug leads to a hanging board > after rebooting from the Kernel, due to failing memory size detection: > U-Boot 2011.12-svn342 (Feb 02 2012 - 17:20:00) > > Freescale i.MX28 family > I2C: ready > DRAM: 0 Bytes > > The cause of the bug is register hw_clkctrl_frac0 being accessed as > a 32-bit long, whereas the manual specifically states it can be accessed > as bytes only. > > This patches introduces an 8-bit wide register type, mx28_register_8. > The already existing mx28_register has been renamed mx28_register_32. > > With this patch, U-Boot no longer hangs after an i.mx28 based board > was reset from the Kernel. > > (PS: I hope this email is properly formatted now, after fight our exchange > server for a whole morning and loosing in the end) > btw 2/2 is missing? M ^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH 1/2] v2 i.MX28: Fix ref_cpu clock setup 2012-02-06 12:20 ` Marek Vasut @ 2012-02-06 12:38 ` Robert Deliën 2012-02-06 12:49 ` Marek Vasut 0 siblings, 1 reply; 11+ messages in thread From: Robert Deliën @ 2012-02-06 12:38 UTC (permalink / raw) To: u-boot > btw 2/2 is missing? Not missing, just not sent again; It hasn't been changed. ^ permalink raw reply [flat|nested] 11+ messages in thread
* [U-Boot] [PATCH 1/2] v2 i.MX28: Fix ref_cpu clock setup 2012-02-06 12:38 ` Robert Deliën @ 2012-02-06 12:49 ` Marek Vasut 0 siblings, 0 replies; 11+ messages in thread From: Marek Vasut @ 2012-02-06 12:49 UTC (permalink / raw) To: u-boot > > btw 2/2 is missing? > > Not missing, just not sent again; It hasn't been changed. Uh ... I don't see this patch in in-reply-to either. So I can't find it, really. M ^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2012-02-06 14:40 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <6EA3E0BCC03CC34B89B01BD57ECBC718F65163@POBOX.postoffice.danego.net>
2012-02-06 12:20 ` [U-Boot] [PATCH 1/2] v2 i.MX28: Fix ref_cpu clock setup Marek Vasut
2012-02-06 12:33 ` Robert Deliën
2012-02-06 12:49 ` Marek Vasut
2012-02-06 13:03 ` Robert Deliën
2012-02-06 13:15 ` Marek Vasut
2012-02-06 12:56 ` Marek Vasut
2012-02-06 14:28 ` Robert Deliën
2012-02-06 14:40 ` Marek Vasut
2012-02-06 12:20 ` Marek Vasut
2012-02-06 12:38 ` Robert Deliën
2012-02-06 12:49 ` Marek Vasut
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox