* [PATCH 1/2] HSMMC: Make loopback clock configurable @ 2008-11-13 21:40 Grazvydas Ignotas 2008-11-13 21:40 ` [PATCH 2/2] HSMMC: Enable external input clock for 2430 SDP MMC1 Grazvydas Ignotas 2008-11-13 23:06 ` [PATCH 1/2] HSMMC: Make loopback clock configurable Tony Lindgren 0 siblings, 2 replies; 8+ messages in thread From: Grazvydas Ignotas @ 2008-11-13 21:40 UTC (permalink / raw) To: linux-omap; +Cc: Grazvydas Ignotas Some boards use input clock from external pin for MMC/SDIO modules in OMAP chips. Make that option selectable instead of forcing loop back clock on everyone. Signed-off-by: Grazvydas Ignotas <notasas@gmail.com> --- This patch applies on previous patch I sent: "minor mmc-twl4030 cleanups" arch/arm/mach-omap2/mmc-twl4030.c | 14 ++++++++------ arch/arm/mach-omap2/mmc-twl4030.h | 1 + 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/mmc-twl4030.c index b1fe0f3..0ea6ba6 100644 --- a/arch/arm/mach-omap2/mmc-twl4030.c +++ b/arch/arm/mach-omap2/mmc-twl4030.c @@ -250,8 +250,7 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, omap_ctrl_writel(reg, OMAP243X_CONTROL_DEVCONF1); } - /* REVISIT: Loop back clock not needed for 2430? */ - if (!cpu_is_omap2430()) { + if (c->mmc->slots[0].internal_clock) { reg = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0); reg |= OMAP2_MMCSDIO1ADPCLKISEL; omap_ctrl_writel(reg, OMAP2_CONTROL_DEVCONF0); @@ -298,11 +297,13 @@ static int twl_mmc2_set_power(struct device *dev, int slot, int power_on, int vd struct twl_mmc_controller *c = &hsmmc[1]; if (power_on) { - u32 reg; + if (c->mmc->slots[0].internal_clock) { + u32 reg; - reg = omap_ctrl_readl(control_devconf1_offset); - reg |= OMAP2_MMCSDIO2ADPCLKISEL; - omap_ctrl_writel(reg, control_devconf1_offset); + reg = omap_ctrl_readl(control_devconf1_offset); + reg |= OMAP2_MMCSDIO2ADPCLKISEL; + omap_ctrl_writel(reg, control_devconf1_offset); + } ret = twl_mmc_set_voltage(c, vdd); } else { ret = twl_mmc_set_voltage(c, 0); @@ -354,6 +355,7 @@ void __init hsmmc_init(struct twl4030_hsmmc_info *controllers) MMC_VDD_29_30 | MMC_VDD_30_31 | MMC_VDD_31_32; mmc->slots[0].wires = c->wires; + mmc->slots[0].internal_clock = !c->ext_clock; mmc->dma_mask = 0xffffffff; /* note: twl4030 card detect GPIOs normally switch VMMCx ... */ diff --git a/arch/arm/mach-omap2/mmc-twl4030.h b/arch/arm/mach-omap2/mmc-twl4030.h index a2e60fe..e2d58a2 100644 --- a/arch/arm/mach-omap2/mmc-twl4030.h +++ b/arch/arm/mach-omap2/mmc-twl4030.h @@ -11,6 +11,7 @@ struct twl4030_hsmmc_info { u8 wires; /* 1/4/8 wires */ int gpio_cd; /* or -EINVAL */ int gpio_wp; /* or -EINVAL */ + int ext_clock:1; /* use external pin for input clock */ }; #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) || \ -- 1.5.4.3 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] HSMMC: Enable external input clock for 2430 SDP MMC1 2008-11-13 21:40 [PATCH 1/2] HSMMC: Make loopback clock configurable Grazvydas Ignotas @ 2008-11-13 21:40 ` Grazvydas Ignotas 2008-11-13 23:06 ` [PATCH 1/2] HSMMC: Make loopback clock configurable Tony Lindgren 1 sibling, 0 replies; 8+ messages in thread From: Grazvydas Ignotas @ 2008-11-13 21:40 UTC (permalink / raw) To: linux-omap; +Cc: Grazvydas Ignotas Previous patch removed cpu_is_omap2430() check in mmc-twl4030.c, so update twl4030_hsmmc_info to accommodate that. Signed-off-by: Grazvydas Ignotas <notasas@gmail.com> --- arch/arm/mach-omap2/board-2430sdp.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c index 6aa83ac..22df018 100644 --- a/arch/arm/mach-omap2/board-2430sdp.c +++ b/arch/arm/mach-omap2/board-2430sdp.c @@ -396,6 +396,7 @@ static struct twl4030_hsmmc_info mmc[] __initdata = { .wires = 4, .gpio_cd = -EINVAL, .gpio_wp = -EINVAL, + .ext_clock = 1, }, {} /* Terminator */ }; -- 1.5.4.3 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] HSMMC: Make loopback clock configurable 2008-11-13 21:40 [PATCH 1/2] HSMMC: Make loopback clock configurable Grazvydas Ignotas 2008-11-13 21:40 ` [PATCH 2/2] HSMMC: Enable external input clock for 2430 SDP MMC1 Grazvydas Ignotas @ 2008-11-13 23:06 ` Tony Lindgren 2008-11-14 6:41 ` Steve Sakoman 1 sibling, 1 reply; 8+ messages in thread From: Tony Lindgren @ 2008-11-13 23:06 UTC (permalink / raw) To: Grazvydas Ignotas; +Cc: linux-omap * Grazvydas Ignotas <notasas@gmail.com> [081113 13:40]: > Some boards use input clock from external pin for MMC/SDIO > modules in OMAP chips. Make that option selectable instead of > forcing loop back clock on everyone. Thanks, pushing both today. Tony > Signed-off-by: Grazvydas Ignotas <notasas@gmail.com> > --- > This patch applies on previous patch I sent: > "minor mmc-twl4030 cleanups" > > arch/arm/mach-omap2/mmc-twl4030.c | 14 ++++++++------ > arch/arm/mach-omap2/mmc-twl4030.h | 1 + > 2 files changed, 9 insertions(+), 6 deletions(-) > > diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/mmc-twl4030.c > index b1fe0f3..0ea6ba6 100644 > --- a/arch/arm/mach-omap2/mmc-twl4030.c > +++ b/arch/arm/mach-omap2/mmc-twl4030.c > @@ -250,8 +250,7 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, > omap_ctrl_writel(reg, OMAP243X_CONTROL_DEVCONF1); > } > > - /* REVISIT: Loop back clock not needed for 2430? */ > - if (!cpu_is_omap2430()) { > + if (c->mmc->slots[0].internal_clock) { > reg = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0); > reg |= OMAP2_MMCSDIO1ADPCLKISEL; > omap_ctrl_writel(reg, OMAP2_CONTROL_DEVCONF0); > @@ -298,11 +297,13 @@ static int twl_mmc2_set_power(struct device *dev, int slot, int power_on, int vd > struct twl_mmc_controller *c = &hsmmc[1]; > > if (power_on) { > - u32 reg; > + if (c->mmc->slots[0].internal_clock) { > + u32 reg; > > - reg = omap_ctrl_readl(control_devconf1_offset); > - reg |= OMAP2_MMCSDIO2ADPCLKISEL; > - omap_ctrl_writel(reg, control_devconf1_offset); > + reg = omap_ctrl_readl(control_devconf1_offset); > + reg |= OMAP2_MMCSDIO2ADPCLKISEL; > + omap_ctrl_writel(reg, control_devconf1_offset); > + } > ret = twl_mmc_set_voltage(c, vdd); > } else { > ret = twl_mmc_set_voltage(c, 0); > @@ -354,6 +355,7 @@ void __init hsmmc_init(struct twl4030_hsmmc_info *controllers) > MMC_VDD_29_30 | > MMC_VDD_30_31 | MMC_VDD_31_32; > mmc->slots[0].wires = c->wires; > + mmc->slots[0].internal_clock = !c->ext_clock; > mmc->dma_mask = 0xffffffff; > > /* note: twl4030 card detect GPIOs normally switch VMMCx ... */ > diff --git a/arch/arm/mach-omap2/mmc-twl4030.h b/arch/arm/mach-omap2/mmc-twl4030.h > index a2e60fe..e2d58a2 100644 > --- a/arch/arm/mach-omap2/mmc-twl4030.h > +++ b/arch/arm/mach-omap2/mmc-twl4030.h > @@ -11,6 +11,7 @@ struct twl4030_hsmmc_info { > u8 wires; /* 1/4/8 wires */ > int gpio_cd; /* or -EINVAL */ > int gpio_wp; /* or -EINVAL */ > + int ext_clock:1; /* use external pin for input clock */ > }; > > #if defined(CONFIG_MMC_OMAP) || defined(CONFIG_MMC_OMAP_MODULE) || \ > -- > 1.5.4.3 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-omap" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] HSMMC: Make loopback clock configurable 2008-11-13 23:06 ` [PATCH 1/2] HSMMC: Make loopback clock configurable Tony Lindgren @ 2008-11-14 6:41 ` Steve Sakoman 2008-11-14 10:49 ` Grazvydas Ignotas 0 siblings, 1 reply; 8+ messages in thread From: Steve Sakoman @ 2008-11-14 6:41 UTC (permalink / raw) To: Tony Lindgren, linux-omap@vger.kernel.org On Thu, Nov 13, 2008 at 3:06 PM, Tony Lindgren <tony@atomide.com> wrote: > * Grazvydas Ignotas <notasas@gmail.com> [081113 13:40]: >> Some boards use input clock from external pin for MMC/SDIO >> modules in OMAP chips. Make that option selectable instead of >> forcing loop back clock on everyone. > > Thanks, pushing both today. Hmm . . . not sure if it is related to this patch, but I now get an oops on Overo. Has anyone else seen this? I'll do some debugging after I get some sleep. Steve Unable to handle kernel NULL pointer dereference at virtual address 00000029 pgd = c0004000 [00000029] *pgd=00000000 Internal error: Oops: 5 [#1] Modules linked in: CPU: 0 Not tainted (2.6.28-rc4-omap1 #1) PC is at twl_mmc2_set_power+0x20/0x68 LR is at omap_mmc_set_ios+0x78/0x25c pc : [<c00fb62c>] lr : [<c02ec7d0>] psr: 20000013 sp : cf93bf10 ip : cf93bf30 fp : cf93bf2c r10: 00000000 r9 : 00000000 r8 : 00000000 r7 : cfbb4968 r6 : 00000013 r5 : c04ea960 r4 : cfbb4800 r3 : 00000000 r2 : 00000001 r1 : 00000001 r0 : cf901008 Flags: nzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel Control: 10c5387f Table: 80004018 DAC: 00000017 Process kmmcd (pid: 209, stack limit = 0xcf93a2e8) Stack: (0xcf93bf10 to 0xcf93c000) bf00: cfbb4800 cfbb4800 cfbb4a00 cfbb4968 bf20: cf93bf4c cf93bf30 c02ec7d0 c00fb618 cfbb4968 cfbb4800 c02e21d0 cf831ea0 bf40: cf93bf64 cf93bf50 c02e1924 c02ec764 cfbb4800 60000013 cf93bf84 cf93bf68 bf60: c02e2270 c02e18c4 c03ecd08 c010a4f8 cf831ea0 cf93a000 cf93bfa4 cf93bf88 bf80: c011e098 c02e21dc cf93bfb8 cf8ec5a0 cf93a000 cf831ea0 cf93bfdc cf93bfa8 bfa0: c011ec34 c011e000 c01219a8 00000000 cf8ec5a0 c0121e90 cf93bfb8 cf93bfb8 bfc0: cf831ea0 c011eb44 00000000 00000000 cf93bff4 cf93bfe0 c01219c0 c011eb50 bfe0: 00000000 00000000 00000000 cf93bff8 c0111360 c0121978 948ee7d5 0e80e45a Backtrace: [<c00fb60c>] (twl_mmc2_set_power+0x0/0x68) from [<c02ec7d0>] (omap_mmc_set_ios+0x78/0x25c) r7:cfbb4968 r6:cfbb4a00 r5:cfbb4800 r4:cfbb4800 [<c02ec758>] (omap_mmc_set_ios+0x0/0x25c) from [<c02e1924>] (mmc_power_up+0x6c/0xb0) r7:cf831ea0 r6:c02e21d0 r5:cfbb4800 r4:cfbb4968 [<c02e18b8>] (mmc_power_up+0x0/0xb0) from [<c02e2270>] (mmc_rescan+0xa0/0x1c0) r5:60000013 r4:cfbb4800 [<c02e21d0>] (mmc_rescan+0x0/0x1c0) from [<c011e098>] (run_workqueue+0xa4/0x120) r5:cf93a000 r4:cf831ea0 [<c011dff4>] (run_workqueue+0x0/0x120) from [<c011ec34>] (worker_thread+0xf0/0x104) r7:cf831ea0 r6:cf93a000 r5:cf8ec5a0 r4:cf93bfb8 [<c011eb44>] (worker_thread+0x0/0x104) from [<c01219c0>] (kthread+0x54/0x80) r7:00000000 r6:00000000 r5:c011eb44 r4:cf831ea0 [<c012196c>] (kthread+0x0/0x80) from [<c0111360>] (do_exit+0x0/0x6c8) r5:00000000 r4:00000000 Code: e1a06003 e59f5044 0a00000d e5953010 (e5d33029) ---[ end trace 62381099a6bde9b1 ]--- ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] HSMMC: Make loopback clock configurable 2008-11-14 6:41 ` Steve Sakoman @ 2008-11-14 10:49 ` Grazvydas Ignotas 2008-11-14 18:34 ` Steve Sakoman 2008-11-14 18:54 ` Koen Kooi 0 siblings, 2 replies; 8+ messages in thread From: Grazvydas Ignotas @ 2008-11-14 10:49 UTC (permalink / raw) To: linux-omap; +Cc: sakoman, Grazvydas Ignotas On Fri, Nov 14, 2008 at 8:41 AM, Steve Sakoman <sakoman@gmail.com> wrote: > On Thu, Nov 13, 2008 at 3:06 PM, Tony Lindgren <tony@atomide.com> wrote: >> * Grazvydas Ignotas <notasas@gmail.com> [081113 13:40]: >>> Some boards use input clock from external pin for MMC/SDIO >>> modules in OMAP chips. Make that option selectable instead of >>> forcing loop back clock on everyone. >> >> Thanks, pushing both today. > > Hmm . . . not sure if it is related to this patch, but I now get an > oops on Overo. Oops.. Haven't thought to try it without gpio_cd set up, in which case c->mmc is not set initialized.. Please try the following patch: diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/mmc-twl4030.c index 0ea6ba6..626d668 100644 --- a/arch/arm/mach-omap2/mmc-twl4030.c +++ b/arch/arm/mach-omap2/mmc-twl4030.c @@ -239,6 +239,7 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, u32 reg; int ret = 0; struct twl_mmc_controller *c = &hsmmc[0]; + struct omap_mmc_platform_data *mmc = dev->platform_data; if (power_on) { if (cpu_is_omap2430()) { @@ -250,7 +251,7 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, omap_ctrl_writel(reg, OMAP243X_CONTROL_DEVCONF1); } - if (c->mmc->slots[0].internal_clock) { + if (mmc->slots[0].internal_clock) { reg = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0); reg |= OMAP2_MMCSDIO1ADPCLKISEL; omap_ctrl_writel(reg, OMAP2_CONTROL_DEVCONF0); @@ -293,11 +294,11 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, static int twl_mmc2_set_power(struct device *dev, int slot, int power_on, int vdd) { int ret; - struct twl_mmc_controller *c = &hsmmc[1]; + struct omap_mmc_platform_data *mmc = dev->platform_data; if (power_on) { - if (c->mmc->slots[0].internal_clock) { + if (mmc->slots[0].internal_clock) { u32 reg; reg = omap_ctrl_readl(control_devconf1_offset); ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] HSMMC: Make loopback clock configurable 2008-11-14 10:49 ` Grazvydas Ignotas @ 2008-11-14 18:34 ` Steve Sakoman 2008-11-14 18:48 ` Tony Lindgren 2008-11-14 18:54 ` Koen Kooi 1 sibling, 1 reply; 8+ messages in thread From: Steve Sakoman @ 2008-11-14 18:34 UTC (permalink / raw) To: Grazvydas Ignotas; +Cc: linux-omap, Tony Lindgren On Fri, Nov 14, 2008 at 2:49 AM, Grazvydas Ignotas <notasas@gmail.com> wrote: > On Fri, Nov 14, 2008 at 8:41 AM, Steve Sakoman <sakoman@gmail.com> wrote: >> On Thu, Nov 13, 2008 at 3:06 PM, Tony Lindgren <tony@atomide.com> wrote: >>> * Grazvydas Ignotas <notasas@gmail.com> [081113 13:40]: >>>> Some boards use input clock from external pin for MMC/SDIO >>>> modules in OMAP chips. Make that option selectable instead of >>>> forcing loop back clock on everyone. >>> >>> Thanks, pushing both today. >> >> Hmm . . . not sure if it is related to this patch, but I now get an >> oops on Overo. > > Oops.. Haven't thought to try it without gpio_cd set up, in which case c->mmc > is not set initialized.. Please try the following patch: I did, and I am happy to report that it fixed the oops on mmc2 and my wi2wi driver is happily working again. Thanks! Steve > diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/mmc-twl4030.c > index 0ea6ba6..626d668 100644 > --- a/arch/arm/mach-omap2/mmc-twl4030.c > +++ b/arch/arm/mach-omap2/mmc-twl4030.c > @@ -239,6 +239,7 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, > u32 reg; > int ret = 0; > struct twl_mmc_controller *c = &hsmmc[0]; > + struct omap_mmc_platform_data *mmc = dev->platform_data; > > if (power_on) { > if (cpu_is_omap2430()) { > @@ -250,7 +251,7 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, > omap_ctrl_writel(reg, OMAP243X_CONTROL_DEVCONF1); > } > > - if (c->mmc->slots[0].internal_clock) { > + if (mmc->slots[0].internal_clock) { > reg = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0); > reg |= OMAP2_MMCSDIO1ADPCLKISEL; > omap_ctrl_writel(reg, OMAP2_CONTROL_DEVCONF0); > @@ -293,11 +294,11 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, > static int twl_mmc2_set_power(struct device *dev, int slot, int power_on, int vdd) > { > int ret; > - > struct twl_mmc_controller *c = &hsmmc[1]; > + struct omap_mmc_platform_data *mmc = dev->platform_data; > > if (power_on) { > - if (c->mmc->slots[0].internal_clock) { > + if (mmc->slots[0].internal_clock) { > u32 reg; > > reg = omap_ctrl_readl(control_devconf1_offset); > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] HSMMC: Make loopback clock configurable 2008-11-14 18:34 ` Steve Sakoman @ 2008-11-14 18:48 ` Tony Lindgren 0 siblings, 0 replies; 8+ messages in thread From: Tony Lindgren @ 2008-11-14 18:48 UTC (permalink / raw) To: Steve Sakoman; +Cc: Grazvydas Ignotas, linux-omap * Steve Sakoman <sakoman@gmail.com> [081114 10:34]: > On Fri, Nov 14, 2008 at 2:49 AM, Grazvydas Ignotas <notasas@gmail.com> wrote: > > On Fri, Nov 14, 2008 at 8:41 AM, Steve Sakoman <sakoman@gmail.com> wrote: > >> On Thu, Nov 13, 2008 at 3:06 PM, Tony Lindgren <tony@atomide.com> wrote: > >>> * Grazvydas Ignotas <notasas@gmail.com> [081113 13:40]: > >>>> Some boards use input clock from external pin for MMC/SDIO > >>>> modules in OMAP chips. Make that option selectable instead of > >>>> forcing loop back clock on everyone. > >>> > >>> Thanks, pushing both today. > >> > >> Hmm . . . not sure if it is related to this patch, but I now get an > >> oops on Overo. > > > > Oops.. Haven't thought to try it without gpio_cd set up, in which case c->mmc > > is not set initialized.. Please try the following patch: > > I did, and I am happy to report that it fixed the oops on mmc2 and my > wi2wi driver is happily working again. Grazvydas, can you please reply with your S-O-B so I can push your fix? Thanks, Tony > > Thanks! > > Steve > > > diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/mmc-twl4030.c > > index 0ea6ba6..626d668 100644 > > --- a/arch/arm/mach-omap2/mmc-twl4030.c > > +++ b/arch/arm/mach-omap2/mmc-twl4030.c > > @@ -239,6 +239,7 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, > > u32 reg; > > int ret = 0; > > struct twl_mmc_controller *c = &hsmmc[0]; > > + struct omap_mmc_platform_data *mmc = dev->platform_data; > > > > if (power_on) { > > if (cpu_is_omap2430()) { > > @@ -250,7 +251,7 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, > > omap_ctrl_writel(reg, OMAP243X_CONTROL_DEVCONF1); > > } > > > > - if (c->mmc->slots[0].internal_clock) { > > + if (mmc->slots[0].internal_clock) { > > reg = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0); > > reg |= OMAP2_MMCSDIO1ADPCLKISEL; > > omap_ctrl_writel(reg, OMAP2_CONTROL_DEVCONF0); > > @@ -293,11 +294,11 @@ static int twl_mmc1_set_power(struct device *dev, int slot, int power_on, > > static int twl_mmc2_set_power(struct device *dev, int slot, int power_on, int vdd) > > { > > int ret; > > - > > struct twl_mmc_controller *c = &hsmmc[1]; > > + struct omap_mmc_platform_data *mmc = dev->platform_data; > > > > if (power_on) { > > - if (c->mmc->slots[0].internal_clock) { > > + if (mmc->slots[0].internal_clock) { > > u32 reg; > > > > reg = omap_ctrl_readl(control_devconf1_offset); > > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/2] HSMMC: Make loopback clock configurable 2008-11-14 10:49 ` Grazvydas Ignotas 2008-11-14 18:34 ` Steve Sakoman @ 2008-11-14 18:54 ` Koen Kooi 1 sibling, 0 replies; 8+ messages in thread From: Koen Kooi @ 2008-11-14 18:54 UTC (permalink / raw) To: linux-omap@vger.kernel.org List [-- Attachment #1: Type: text/plain, Size: 2382 bytes --] Op 14 nov 2008, om 11:49 heeft Grazvydas Ignotas het volgende geschreven: > On Fri, Nov 14, 2008 at 8:41 AM, Steve Sakoman <sakoman@gmail.com> > wrote: >> On Thu, Nov 13, 2008 at 3:06 PM, Tony Lindgren <tony@atomide.com> >> wrote: >>> * Grazvydas Ignotas <notasas@gmail.com> [081113 13:40]: >>>> Some boards use input clock from external pin for MMC/SDIO >>>> modules in OMAP chips. Make that option selectable instead of >>>> forcing loop back clock on everyone. >>> >>> Thanks, pushing both today. >> >> Hmm . . . not sure if it is related to this patch, but I now get an >> oops on Overo. > > Oops.. Haven't thought to try it without gpio_cd set up, in which > case c->mmc > is not set initialized.. Please try the following patch: This also fixes mmc on omap3evm. regards, Koen > > > > diff --git a/arch/arm/mach-omap2/mmc-twl4030.c b/arch/arm/mach-omap2/ > mmc-twl4030.c > index 0ea6ba6..626d668 100644 > --- a/arch/arm/mach-omap2/mmc-twl4030.c > +++ b/arch/arm/mach-omap2/mmc-twl4030.c > @@ -239,6 +239,7 @@ static int twl_mmc1_set_power(struct device > *dev, int slot, int power_on, > u32 reg; > int ret = 0; > struct twl_mmc_controller *c = &hsmmc[0]; > + struct omap_mmc_platform_data *mmc = dev->platform_data; > > if (power_on) { > if (cpu_is_omap2430()) { > @@ -250,7 +251,7 @@ static int twl_mmc1_set_power(struct device > *dev, int slot, int power_on, > omap_ctrl_writel(reg, OMAP243X_CONTROL_DEVCONF1); > } > > - if (c->mmc->slots[0].internal_clock) { > + if (mmc->slots[0].internal_clock) { > reg = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0); > reg |= OMAP2_MMCSDIO1ADPCLKISEL; > omap_ctrl_writel(reg, OMAP2_CONTROL_DEVCONF0); > @@ -293,11 +294,11 @@ static int twl_mmc1_set_power(struct device > *dev, int slot, int power_on, > static int twl_mmc2_set_power(struct device *dev, int slot, int > power_on, int vdd) > { > int ret; > - > struct twl_mmc_controller *c = &hsmmc[1]; > + struct omap_mmc_platform_data *mmc = dev->platform_data; > > if (power_on) { > - if (c->mmc->slots[0].internal_clock) { > + if (mmc->slots[0].internal_clock) { > u32 reg; > > reg = omap_ctrl_readl(control_devconf1_offset); > -- > To unsubscribe from this list: send the line "unsubscribe linux- > omap" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 186 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2008-11-14 18:55 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-11-13 21:40 [PATCH 1/2] HSMMC: Make loopback clock configurable Grazvydas Ignotas 2008-11-13 21:40 ` [PATCH 2/2] HSMMC: Enable external input clock for 2430 SDP MMC1 Grazvydas Ignotas 2008-11-13 23:06 ` [PATCH 1/2] HSMMC: Make loopback clock configurable Tony Lindgren 2008-11-14 6:41 ` Steve Sakoman 2008-11-14 10:49 ` Grazvydas Ignotas 2008-11-14 18:34 ` Steve Sakoman 2008-11-14 18:48 ` Tony Lindgren 2008-11-14 18:54 ` Koen Kooi
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox