RE: [PATCHV4 1/3] OMAP3: introduce DPLL4 Jtype

2010-01-05 Thread Sripathy, Vishwanath


 -Original Message-
 From: Eduardo Valentin [mailto:eduardo.valen...@nokia.com]
 Sent: Tuesday, January 05, 2010 1:06 PM
 To: Sripathy, Vishwanath
 Cc: linux-omap@vger.kernel.org; Paul Walmsley; Woodruff, Richard; Menon, 
 Nishanth
 Subject: Re: [PATCHV4 1/3] OMAP3: introduce DPLL4 Jtype
 
 Hello,
 
 Few little comments bellow.
 
 On Tue, Jan 05, 2010 at 07:36:08AM +0100, ext Vishwanath BS wrote:
  DPLL4 for 3630 introduces a changed block requiring special divisor
  bits and additional reg fields. To allow for silicons to use this, this
  is introduced as a omap3_has_jtype_dpll4() and is enabled for 3630
 ^
 I don't see anywhere in this patch a reference to this function/macro
 
Yes, omap3_has_jtype_dpll4 is no longer used. This description is borrowed from 
previous version of the patch. I will correct it.
  silicon. Also FREQSEL field is no longer valid for OMAP3630. So reference
  to this is removed for 3630.
 
  Tested with 3630 ZOOM3 and OMAP3430 ZOOM2
 
  Cc: Paul Walmsley p...@pwsan.com
 
  Signed-off-by: Richard Woodruff r-woodru...@ti.com
  Signed-off-by: Nishanth Menon n...@ti.com
  Signed-off-by: Vishwanath BS vishwanath...@ti.com
  ---
   arch/arm/mach-omap2/clock.h |3 ++
   arch/arm/mach-omap2/clock34xx_data.c|2 +
   arch/arm/mach-omap2/clock44xx_data.c|1 +
   arch/arm/mach-omap2/cm-regbits-34xx.h   |6 +++-
   arch/arm/mach-omap2/dpll.c  |   53
 --
   arch/arm/plat-omap/include/plat/clock.h |1 +
   6 files changed, 61 insertions(+), 5 deletions(-)
 
  diff --git a/arch/arm/mach-omap2/clock.h b/arch/arm/mach-omap2/clock.h
  index 93c48df..14f73e7 100644
  --- a/arch/arm/mach-omap2/clock.h
  +++ b/arch/arm/mach-omap2/clock.h
  @@ -47,6 +47,9 @@
   #define DPLL_LOW_POWER_BYPASS  0x5
   #define DPLL_LOCKED0x7
 
  +/*DPLL Type and DCO Selection Flags*/
  +#define DPLL_J_TYPE0x1
  +#define DPLL_NO_DCO_SEL0x2
 
 Add blank line here, just to make it cleaner.
 
   int omap2_clk_init(void);
   int omap2_clk_enable(struct clk *clk);
   void omap2_clk_disable(struct clk *clk);
  diff --git a/arch/arm/mach-omap2/clock34xx_data.c b/arch/arm/mach-
 omap2/clock34xx_data.c
  index 043caed..9aac354 100644
  --- a/arch/arm/mach-omap2/clock34xx_data.c
  +++ b/arch/arm/mach-omap2/clock34xx_data.c
  @@ -3241,6 +3241,8 @@ int __init omap2_clk_init(void)
  cpu_clkflg |= CK_3430ES2;
  }
  }
  +   if (cpu_is_omap3630())
  +   dpll4_ck.dpll_data-flags |= DPLL_J_TYPE;
 
  clk_init(omap2_clk_functions);
 
  diff --git a/arch/arm/mach-omap2/clock44xx_data.c b/arch/arm/mach-
 omap2/clock44xx_data.c
  index 2210e22..7347246 100644
  --- a/arch/arm/mach-omap2/clock44xx_data.c
  +++ b/arch/arm/mach-omap2/clock44xx_data.c
  @@ -2736,6 +2736,7 @@ int __init omap2_clk_init(void)
  if (cpu_is_omap44xx()) {
  cpu_mask = RATE_IN_4430;
  cpu_clkflg = CK_443X;
  +   dpll_usb_ck.dpll_data-flags |= DPLL_NO_DCO_SEL | DPLL_J_TYPE;
  }
 
  clk_init(omap2_clk_functions);
  diff --git a/arch/arm/mach-omap2/cm-regbits-34xx.h b/arch/arm/mach-omap2/cm-
 regbits-34xx.h
  index 6923deb..6f2802b 100644
  --- a/arch/arm/mach-omap2/cm-regbits-34xx.h
  +++ b/arch/arm/mach-omap2/cm-regbits-34xx.h
  @@ -516,9 +516,13 @@
 
   /* CM_CLKSEL2_PLL */
   #define OMAP3430_PERIPH_DPLL_MULT_SHIFT8
  -#define OMAP3430_PERIPH_DPLL_MULT_MASK (0x7ff  8)
  +#define OMAP3430_PERIPH_DPLL_MULT_MASK (0xfff  8)
   #define OMAP3430_PERIPH_DPLL_DIV_SHIFT 0
   #define OMAP3430_PERIPH_DPLL_DIV_MASK  (0x7f  0)
  +#define OMAP3630_PERIPH_DPLL_DCO_SEL_SHIFT 21
  +#define OMAP3630_PERIPH_DPLL_DCO_SEL_MASK  (0x7  21)
  +#define OMAP3630_PERIPH_DPLL_SD_DIV_SHIFT  24
  +#define OMAP3630_PERIPH_DPLL_SD_DIV_MASK   (0xff  24)
 
   /* CM_CLKSEL3_PLL */
   #define OMAP3430_DIV_96M_SHIFT 0
  diff --git a/arch/arm/mach-omap2/dpll.c b/arch/arm/mach-omap2/dpll.c
  index f6055b4..d52ab37 100644
  --- a/arch/arm/mach-omap2/dpll.c
  +++ b/arch/arm/mach-omap2/dpll.c
  @@ -238,6 +238,42 @@ static int _omap3_noncore_dpll_stop(struct clk *clk)
   }
 
   /**
  + * lookup_dco_sddiv -  Set j-type DPLL4 compensation variables
  + * @clk: pointer to a DPLL struct clk
  + * @dco: digital control oscillator selector
  + * @sd_div: target sigma-delta divider
  + * @m: DPLL multiplier to set
  + * @n: DPLL divider to set
  + */
  +static void lookup_dco_sddiv(struct clk *clk, u8 *dco, u8 *sd_div, u16
  +   m, u8 n)
  +   {
  +   unsigned long fint, clkinp, sd; /* watch out for overflow */
  +   int mod1, mod2;
  +
  +   clkinp = clk-parent-rate;
  +   fint = (clkinp / n) * m;
  +
  +   if (fint  10)
  +   *dco = 2;
  +   else
  +   

RE: [PATCH] rtc: make rtc-omap wakeup capable

2010-01-05 Thread Nori, Sekhar
Hello,

On Tue, Nov 24, 2009 at 18:48:40, Nori, Sekhar wrote:
 The rtc-omap driver currently hardcodes the RTC to be
 not capable of wakeup events. On the DA850/OMAP-L138
 SoC, the RTC is a wake up source from its deep sleep
 mode.

 Let platform data set the wakeup capability flag instead.

 Signed-off-by: Sekhar Nori nsek...@ti.com
 Signed-off-by: Kevin Hilman khil...@deeprootsystems.com

Any comments on this patch?

Thanks,
Sekhar

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v3 0/2] Get rid of ifdef in board file

2010-01-05 Thread Maulik Mankad
Here is the Version 3 of the 2 patch series based 
on top of your for-tony branch at [1].

[1] git://gitorious.org/usb/usb.git for-tony

Maulik Mankad (2):
[PATCH 1/2] USB : Add empty functions in otg.h
[PATCH 2/2] ARM : OMAP : Remove #ifdef from board-omap3evm.c

The Version 3 of the patch set fixes the comments 
received for Version 2.

Felipe, Greg, Tony

Note that Patch 1 needs to go through Greg (USB) and 
Patch 2 through Tony (OMAP). 

Patch 2/2 depends on Patch 1/2. 

The patches are compile tested and do not report
any checkpatch warnings.

Thanks,
Maulik

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v3 1/2] USB: Add empty functions in otg.h

2010-01-05 Thread Maulik Mankad
USB : Add empty functions in otg.h

Add empty functions for usb_nop_xceiv_register()
and usb_nop_xceiv_unregister() in otg.h so that 
these functions can be called even when 
CONFIG_NOP_USB_XCEIV is not enabled. 

It allows to remove ifdef's from board file.

Signed-off-by: Maulik Mankad x0082...@ti.com
Cc: Tony Lindgren t...@atomide.com
Cc: Felipe Balbi felipe.ba...@nokia.com
Cc: Greg Kroah-Hartman gre...@suse.de
Cc: Olof Johansson o...@lixom.net
Cc: Sergei Shtylyov sshtyl...@ru.mvista.com
Cc: Gupta, Ajay Kumar ajay.gu...@ti.com
---
Index: felipe_musb/include/linux/usb/otg.h
===
--- felipe_musb.orig/include/linux/usb/otg.h
+++ felipe_musb/include/linux/usb/otg.h
@@ -110,9 +110,19 @@ struct otg_transceiver {
 /* for board-specific init logic */
 extern int otg_set_transceiver(struct otg_transceiver *);
 
+#if defined(CONFIG_NOP_USB_XCEIV)
 /* sometimes transceivers are accessed only through e.g. ULPI */
 extern void usb_nop_xceiv_register(void);
 extern void usb_nop_xceiv_unregister(void);
+#else
+static inline void usb_nop_xceiv_register(void)
+{
+}
+
+static inline void usb_nop_xceiv_unregister(void)
+{
+}
+#endif
 
 /* helpers for direct access thru low-level io interface */
 static inline int otg_io_read(struct otg_transceiver *otg, u32 reg)
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v3 2/2] ARM : OMAP : Remove #ifdef from board-omap3evm.c

2010-01-05 Thread Maulik Mankad
ARM : OMAP : Remove #ifdef from board-omap3evm.c

Remove #ifdef around usb_nop_xceiv_register() from
board-omap3evm.c

Signed-off-by: Maulik Mankad x0082...@ti.com
Cc: Tony Lindgren t...@atomide.com
Cc: Felipe Balbi felipe.ba...@nokia.com
Cc: Greg Kroah-Hartman gre...@suse.de
Cc: Olof Johansson o...@lixom.net
---
Index: felipe_musb/arch/arm/mach-omap2/board-omap3evm.c
===
--- felipe_musb.orig/arch/arm/mach-omap2/board-omap3evm.c
+++ felipe_musb/arch/arm/mach-omap2/board-omap3evm.c
@@ -444,10 +444,10 @@ static void __init omap3_evm_init(void)
ARRAY_SIZE(omap3evm_spi_board_info));
 
omap_serial_init();
-#ifdef CONFIG_NOP_USB_XCEIV
+
/* OMAP3EVM uses ISP1504 phy and so register nop transceiver */
usb_nop_xceiv_register();
-#endif
+
if (get_omap3_evm_rev() = OMAP3EVM_BOARD_GEN_2) {
/* enable EHCI VBUS using GPIO22 */
omap_mux_init_gpio(22, OMAP_PIN_INPUT_PULLUP);
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/5] V7/Cortex/omap34xx fixes for 2.6.33-rc1: DCC, kexec, atags

2010-01-05 Thread Magnus Damm
On Wed, Dec 30, 2009 at 7:07 AM, Tony Lindgren t...@atomide.com wrote:
 * Magnus Damm magnus.d...@gmail.com [091227 21:54]:
       arm: Fix cpu_proc_fin() for proc-v7.S and make kexec work

 Are you seeing the occasional crc errors when uncompressing the
 new kernel on your v7?

Nope, it's very stable. I boot over USB with kexec for all my ARM
kernel development and I have not seen any issues so far.

 I'm seeing those maybe 1 out of 10 times on omap3430 boards unless if
 I do an extra (and wrong) flush_cache_all after local_flush_tlb_all
 at the end of setup_mm_for_reboot.

My second kernel does not need any workaround, however...

 If you're not seeing the crc errors, do you have L2 cache on?

I'm not sure at this point, but I think L2 is disabled. Will try to turn it on.

 Also, what's the Cortex version on your v7? It's rev r2p3 on
 omap3430.

The data sheet of sh7377 says r2p3 as well.

Cheers,

/ magnus
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCHV4 1/3] OMAP3: introduce DPLL4 Jtype

2010-01-05 Thread Eduardo Valentin
Hello Vishwanath,

On Tue, Jan 05, 2010 at 09:16:22AM +0100, ext Sripathy, Vishwanath wrote:
 
 
  -Original Message-
  From: Eduardo Valentin [mailto:eduardo.valen...@nokia.com]
  Sent: Tuesday, January 05, 2010 1:06 PM
  To: Sripathy, Vishwanath
  Cc: linux-omap@vger.kernel.org; Paul Walmsley; Woodruff, Richard; Menon, 
  Nishanth
  Subject: Re: [PATCHV4 1/3] OMAP3: introduce DPLL4 Jtype
  
  Hello,
  
  Few little comments bellow.
  
  On Tue, Jan 05, 2010 at 07:36:08AM +0100, ext Vishwanath BS wrote:
   DPLL4 for 3630 introduces a changed block requiring special divisor
   bits and additional reg fields. To allow for silicons to use this, this
   is introduced as a omap3_has_jtype_dpll4() and is enabled for 3630
  ^
  I don't see anywhere in this patch a reference to this function/macro
  
 Yes, omap3_has_jtype_dpll4 is no longer used. This description is borrowed 
 from previous version of the patch. I will correct it.


OK. Nice.

   silicon. Also FREQSEL field is no longer valid for OMAP3630. So reference
   to this is removed for 3630.
  
   Tested with 3630 ZOOM3 and OMAP3430 ZOOM2
  
   Cc: Paul Walmsley p...@pwsan.com
  
   Signed-off-by: Richard Woodruff r-woodru...@ti.com
   Signed-off-by: Nishanth Menon n...@ti.com
   Signed-off-by: Vishwanath BS vishwanath...@ti.com
   ---
arch/arm/mach-omap2/clock.h |3 ++
arch/arm/mach-omap2/clock34xx_data.c|2 +
arch/arm/mach-omap2/clock44xx_data.c|1 +
arch/arm/mach-omap2/cm-regbits-34xx.h   |6 +++-
arch/arm/mach-omap2/dpll.c  |   53
  --
arch/arm/plat-omap/include/plat/clock.h |1 +
6 files changed, 61 insertions(+), 5 deletions(-)
  
   diff --git a/arch/arm/mach-omap2/clock.h b/arch/arm/mach-omap2/clock.h
   index 93c48df..14f73e7 100644
   --- a/arch/arm/mach-omap2/clock.h
   +++ b/arch/arm/mach-omap2/clock.h
   @@ -47,6 +47,9 @@
#define DPLL_LOW_POWER_BYPASS0x5
#define DPLL_LOCKED  0x7
  
   +/*DPLL Type and DCO Selection Flags*/
   +#define DPLL_J_TYPE  0x1
   +#define DPLL_NO_DCO_SEL  0x2
  
  Add blank line here, just to make it cleaner.
  
int omap2_clk_init(void);
int omap2_clk_enable(struct clk *clk);
void omap2_clk_disable(struct clk *clk);
   diff --git a/arch/arm/mach-omap2/clock34xx_data.c b/arch/arm/mach-
  omap2/clock34xx_data.c
   index 043caed..9aac354 100644
   --- a/arch/arm/mach-omap2/clock34xx_data.c
   +++ b/arch/arm/mach-omap2/clock34xx_data.c
   @@ -3241,6 +3241,8 @@ int __init omap2_clk_init(void)
 cpu_clkflg |= CK_3430ES2;
 }
 }
   + if (cpu_is_omap3630())
   + dpll4_ck.dpll_data-flags |= DPLL_J_TYPE;
  
 clk_init(omap2_clk_functions);
  
   diff --git a/arch/arm/mach-omap2/clock44xx_data.c b/arch/arm/mach-
  omap2/clock44xx_data.c
   index 2210e22..7347246 100644
   --- a/arch/arm/mach-omap2/clock44xx_data.c
   +++ b/arch/arm/mach-omap2/clock44xx_data.c
   @@ -2736,6 +2736,7 @@ int __init omap2_clk_init(void)
 if (cpu_is_omap44xx()) {
 cpu_mask = RATE_IN_4430;
 cpu_clkflg = CK_443X;
   + dpll_usb_ck.dpll_data-flags |= DPLL_NO_DCO_SEL | DPLL_J_TYPE;
 }
  
 clk_init(omap2_clk_functions);
   diff --git a/arch/arm/mach-omap2/cm-regbits-34xx.h 
   b/arch/arm/mach-omap2/cm-
  regbits-34xx.h
   index 6923deb..6f2802b 100644
   --- a/arch/arm/mach-omap2/cm-regbits-34xx.h
   +++ b/arch/arm/mach-omap2/cm-regbits-34xx.h
   @@ -516,9 +516,13 @@
  
/* CM_CLKSEL2_PLL */
#define OMAP3430_PERIPH_DPLL_MULT_SHIFT  8
   -#define OMAP3430_PERIPH_DPLL_MULT_MASK   (0x7ff  8)
   +#define OMAP3430_PERIPH_DPLL_MULT_MASK   (0xfff  8)
#define OMAP3430_PERIPH_DPLL_DIV_SHIFT   0
#define OMAP3430_PERIPH_DPLL_DIV_MASK(0x7f  0)
   +#define OMAP3630_PERIPH_DPLL_DCO_SEL_SHIFT   21
   +#define OMAP3630_PERIPH_DPLL_DCO_SEL_MASK(0x7  21)
   +#define OMAP3630_PERIPH_DPLL_SD_DIV_SHIFT24
   +#define OMAP3630_PERIPH_DPLL_SD_DIV_MASK (0xff  24)
  
/* CM_CLKSEL3_PLL */
#define OMAP3430_DIV_96M_SHIFT   0
   diff --git a/arch/arm/mach-omap2/dpll.c b/arch/arm/mach-omap2/dpll.c
   index f6055b4..d52ab37 100644
   --- a/arch/arm/mach-omap2/dpll.c
   +++ b/arch/arm/mach-omap2/dpll.c
   @@ -238,6 +238,42 @@ static int _omap3_noncore_dpll_stop(struct clk *clk)
}
  
/**
   + * lookup_dco_sddiv -  Set j-type DPLL4 compensation variables
   + * @clk: pointer to a DPLL struct clk
   + * @dco: digital control oscillator selector
   + * @sd_div: target sigma-delta divider
   + * @m: DPLL multiplier to set
   + * @n: DPLL divider to set
   + */
   +static void lookup_dco_sddiv(struct clk *clk, u8 *dco, u8 *sd_div, u16
   + m, u8 n)
   + {
   + unsigned long fint, clkinp, sd; 

Re: [PATCH 08/10] video/omap: add __init/__exit macros to drivers/video/omap/lcd_htcherald.c

2010-01-05 Thread Jiri Kosina
On Tue, 22 Dec 2009, peterhu...@gmx.de wrote:

 From: Peter Huewe peterhu...@gmx.de
 
 Trivial patch which adds the __init/__exit macros to the module_init/
 module_exit functions of
 
 drivers/video/omap/lcd_htcherald.c
 
 Please have a look at the small patch and either pull it through
 your tree, or please ack' it so Jiri can pull it through the trivial
 tree.
 
 Patch against linux-next-tree, 22. Dez 08:38:18 CET 2009
 but also present in linus tree.
 
 Signed-off-by: Peter Huewe peterhu...@gmx.de
 ---
  drivers/video/omap/lcd_htcherald.c |4 ++--
  1 files changed, 2 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/video/omap/lcd_htcherald.c 
 b/drivers/video/omap/lcd_htcherald.c
 index a9007c5..4802419 100644
 --- a/drivers/video/omap/lcd_htcherald.c
 +++ b/drivers/video/omap/lcd_htcherald.c
 @@ -115,12 +115,12 @@ struct platform_driver htcherald_panel_driver = {
   },
  };
  
 -static int htcherald_panel_drv_init(void)
 +static int __init htcherald_panel_drv_init(void)
  {
   return platform_driver_register(htcherald_panel_driver);
  }
  
 -static void htcherald_panel_drv_cleanup(void)
 +static void __exit htcherald_panel_drv_cleanup(void)
  {
   platform_driver_unregister(htcherald_panel_driver);
  }

Doesn't seem to be in linux-next as of today. Applied myself, thanks.

-- 
Jiri Kosina
SUSE Labs, Novell Inc.
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/4] OMAP2 clock: dynamically allocate CPUFreq frequency table

2010-01-05 Thread Felipe Balbi

Hi,

On Tue, Jan 05, 2010 at 03:42:07AM +0100, ext Paul Walmsley wrote:

@@ -470,21 +472,51 @@ void omap2_clk_init_cpufreq_table(struct 
cpufreq_frequency_table **table)
if (prcm-dpll_speed == prcm-xtal_speed)
continue;

+   tbl_sz++;
+   }
+
+   /*
+* XXX Ensure that we're doing what CPUFreq expects for this error
+* case and the following one
+*/
+   if (tbl_sz == 0) {
+   pr_warning(%s: no matching entries in rate_table\n,
+  __func__);
+   goto ocict_exit;


you only use this ocict_exit here, so how about only return instead of a 
goto to a return ?


--
balbi
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 4/4] OMAP clock/CPUFreq: avoid leaking the CPUFreq frequency table

2010-01-05 Thread Felipe Balbi

On Tue, Jan 05, 2010 at 03:42:08AM +0100, ext Paul Walmsley wrote:

OMAP2xxx uses a dynamically-allocated cpufreq_frequency_table array,
so this patch ensures that it is freed if CPUFreq terminates.


wasn't this introduced by the previous patch ?

--
balbi
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/4] OMAP2: clock: clk2xxx.c doesn't compile if CPUFREQ is enabled

2010-01-05 Thread Felipe Balbi

Hi,

On Tue, Jan 05, 2010 at 03:42:05AM +0100, ext Paul Walmsley wrote:

From: Felipe Balbi felipe.ba...@nokia.com

if we enable CPUFREQ we can't build omap2 for two reasons,
one of them is fixed by the patch below.

It's failing because the __must_be_array() check in
ARRAY_SIZE() is failing and printing the following message:

arch/arm/mach-omap2/clock2xxx.c:453: error: negative width in bit-field 
'anonymous'

Signed-off-by: Felipe Balbi felipe.ba...@nokia.com
[p...@pwsan.com: commit message updated; changed rate variable name]


and you forgot to change the variable definition...


Signed-off-by: Paul Walmsley p...@pwsan.com
---
arch/arm/mach-omap2/clock2xxx.c |5 -
1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/clock2xxx.c b/arch/arm/mach-omap2/clock2xxx.c
index d0e3fb7..2f3c3ba 100644
--- a/arch/arm/mach-omap2/clock2xxx.c
+++ b/arch/arm/mach-omap2/clock2xxx.c
@@ -455,12 +455,15 @@ static struct cpufreq_frequency_table 
freq_table[ARRAY_SIZE(rate_table)];
void omap2_clk_init_cpufreq_table(struct cpufreq_frequency_table **table)
{
struct prcm_config *prcm;
+   long rate;
int i = 0;

+   sys_ck_rate = clk_get_rate(sclk);


The variable defined is called rate but you use sys_ck_rate. 
I used rate, because that's what other functions are using and 
I wanted to keep the code consistent. Anyways, as is now this patch 
won't compile again :-p


--
balbi
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 1/2] USB: Add empty functions in otg.h

2010-01-05 Thread Felipe Balbi

On Tue, Jan 05, 2010 at 09:46:58AM +0100, ext Maulik Mankad wrote:

USB : Add empty functions in otg.h

Add empty functions for usb_nop_xceiv_register()
and usb_nop_xceiv_unregister() in otg.h so that
these functions can be called even when
CONFIG_NOP_USB_XCEIV is not enabled.

It allows to remove ifdef's from board file.

Signed-off-by: Maulik Mankad x0082...@ti.com
Cc: Tony Lindgren t...@atomide.com
Cc: Felipe Balbi felipe.ba...@nokia.com


Signed-off-by: Felipe Balbi felipe.ba...@nokia.com

Now this patch looks ok.

--
balbi
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 2/2] ARM : OMAP : Remove #ifdef from board-omap3evm.c

2010-01-05 Thread Felipe Balbi

On Tue, Jan 05, 2010 at 09:49:32AM +0100, ext Maulik Mankad wrote:

ARM : OMAP : Remove #ifdef from board-omap3evm.c

Remove #ifdef around usb_nop_xceiv_register() from
board-omap3evm.c

Signed-off-by: Maulik Mankad x0082...@ti.com
Cc: Tony Lindgren t...@atomide.com


Acked-by: Felipe Balbi felipe.ba...@nokia.com

Tony, let's wait for Greg's Ack to the previous patch, but if everything 
is Fine, you can take this one on for-next.


--
balbi
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: + drivers-video-omap2-dss-rfbic-port-to-new-kfifo-api.patch added to -mm tree

2010-01-05 Thread Tomi Valkeinen
On Tue, 2010-01-05 at 00:07 +0100, ext a...@linux-foundation.org wrote:
 The patch titled
  drivers/video/omap2/dss/rfbi.c: port to new kfifo API
 has been added to the -mm tree.  Its filename is
  drivers-video-omap2-dss-rfbic-port-to-new-kfifo-api.patch
 
 Before you just go and hit reply, please:
a) Consider who else should be cc'ed
b) Prefer to cc a suitable mailing list as well
c) Ideally: find the original patch on the mailing list and do a
   reply-to-all to that, adding suitable additional cc's
 
 *** Remember to use Documentation/SubmitChecklist when testing your code ***
 
 See http://userweb.kernel.org/~akpm/stuff/added-to-mm.txt to find
 out what to do about this
 
 The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/
 
 --
 Subject: drivers/video/omap2/dss/rfbi.c: port to new kfifo API
 From: Stefani Seibold stef...@seibold.net
 
 Port drivers/video/omap2/dss/rfbi.c to the new kfifo API.  This should be
 the last one.
 
 Signed-off-by: Stefani Seibold stef...@seibold.net
 Cc: Tomi Valkeinen tomi.valkei...@nokia.com
 Cc: Greg KH g...@kroah.com
 Signed-off-by: Andrew Morton a...@linux-foundation.org
 ---
 
  drivers/video/omap2/dss/rfbi.c |   21 ++---
  1 file changed, 10 insertions(+), 11 deletions(-)

This patch is not correct, rfbi.c doesn't compile. I made a patch for
this yesterday, and if it's ok for everyone, I'll put that patch into my
dss tree, and this patch can be discarded.

 Tomi


--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/5] V7/Cortex/omap34xx fixes for 2.6.33-rc1: DCC, kexec, atags

2010-01-05 Thread Mika Westerberg
On Tue, Dec 29, 2009 at 02:07:05PM -0800, Tony Lindgren wrote:
 Hi,
 
 * Magnus Damm magnus.d...@gmail.com [091227 21:54]:
  Hi Tony,
  
  On Sat, Dec 19, 2009 at 12:45 PM, Tony Lindgren t...@atomide.com wrote:
   Here are some v7 fixes, mostly to make kexec work.
  
   Using 2.6.33-rc1, these fixes, and kexec from kexec-tools
   git repo, I can reboot my n900 in a loop reliably.
  
  Thanks for your work on this. I previously tested kexec on ARM V6 and
  V7 and noticed that V7 didn't work. I revisited my V7 test after
  becoming aware of your patches. The single patch below unbreaks V7 on
  my target system.
  
        arm: Fix cpu_proc_fin() for proc-v7.S and make kexec work
 
 Cool. Thank you for fixing the kexec source :)
 
 Are you seeing the occasional crc errors when uncompressing the
 new kernel on your v7?
 
 I'm seeing those maybe 1 out of 10 times on omap3430 boards unless if
 I do an extra (and wrong) flush_cache_all after local_flush_tlb_all
 at the end of setup_mm_for_reboot.

Hi,

I've also been playing with this patch.

One thing I noticed is that If I disable L2 cache in cpu_v7_proc_fin()
then kexec works fine and no crc errors from decompressor (I did
~30 kexec boots). With L2 cache enabled, it fails almost immediately.

Tested with OMAP3430 ES3.1.

Thanks,
MW
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2/2] arm: defconfig: rx51: enable phonet and g_nokia

2010-01-05 Thread Felipe Balbi
trivial patch enabling g_nokia on rx51_defconfig.

Signed-off-by: Felipe Balbi felipe.ba...@nokia.com
---
 arch/arm/configs/rx51_defconfig |   11 ++-
 1 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/arch/arm/configs/rx51_defconfig b/arch/arm/configs/rx51_defconfig
index b6eeebb..72e27d8 100644
--- a/arch/arm/configs/rx51_defconfig
+++ b/arch/arm/configs/rx51_defconfig
@@ -445,6 +445,8 @@ CONFIG_IP_NF_FILTER=m
 # CONFIG_LAPB is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
+CONFIG_PHONET=y
+# CONFIG_IEEE802154 is not set
 # CONFIG_NET_SCHED is not set
 # CONFIG_DCB is not set
 
@@ -1325,27 +1327,34 @@ CONFIG_USB_GADGET_SELECTED=y
 # CONFIG_USB_GADGET_LH7A40X is not set
 # CONFIG_USB_GADGET_OMAP is not set
 # CONFIG_USB_GADGET_PXA25X is not set
+# CONFIG_USB_GADGET_R8A66597 is not set
 # CONFIG_USB_GADGET_PXA27X is not set
-# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_S3C_HSOTG is not set
 # CONFIG_USB_GADGET_IMX is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
 # CONFIG_USB_GADGET_M66592 is not set
 # CONFIG_USB_GADGET_AMD5536UDC is not set
 # CONFIG_USB_GADGET_FSL_QE is not set
 # CONFIG_USB_GADGET_CI13XXX is not set
 # CONFIG_USB_GADGET_NET2280 is not set
 # CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LANGWELL is not set
 # CONFIG_USB_GADGET_DUMMY_HCD is not set
 CONFIG_USB_GADGET_DUALSPEED=y
 CONFIG_USB_ZERO=m
 # CONFIG_USB_ZERO_HNPTEST is not set
+# CONFIG_USB_AUDIO is not set
 # CONFIG_USB_ETH is not set
 # CONFIG_USB_GADGETFS is not set
 CONFIG_USB_FILE_STORAGE=m
 # CONFIG_USB_FILE_STORAGE_TEST is not set
+# CONFIG_USB_MASS_STORAGE is not set
 # CONFIG_USB_G_SERIAL is not set
 # CONFIG_USB_MIDI_GADGET is not set
 # CONFIG_USB_G_PRINTER is not set
 # CONFIG_USB_CDC_COMPOSITE is not set
+CONFIG_USB_G_NOKIA=m
+# CONFIG_USB_G_MULTI is not set
 
 #
 # OTG and related infrastructure
-- 
1.6.6.rc0

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 1/2] usb: gadget: introduce g_nokia gadget driver

2010-01-05 Thread Felipe Balbi
g_nokia is the gadget driver implementing
WMCDC Wireless Handset Control Model for the N900
device.

Signed-off-by: Felipe Balbi felipe.ba...@nokia.com
---
 drivers/usb/gadget/Kconfig  |   10 ++
 drivers/usb/gadget/Makefile |2 +
 drivers/usb/gadget/nokia.c  |  259 +++
 3 files changed, 271 insertions(+), 0 deletions(-)
 create mode 100644 drivers/usb/gadget/nokia.c

diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig
index ee41120..7460cd7 100644
--- a/drivers/usb/gadget/Kconfig
+++ b/drivers/usb/gadget/Kconfig
@@ -812,6 +812,16 @@ config USB_CDC_COMPOSITE
  Say y to link the driver statically, or m to build a
  dynamically linked module.
 
+config USB_G_NOKIA
+   tristate Nokia composite gadget
+   depends on PHONET
+   help
+ The Nokia composite gadget provides support for acm, obex
+ and phonet in only one composite gadget driver.
+
+ It's only really useful for N900 hardware. If you're building
+ a kernel for N900, say Y or M here. If unsure, say N.
+
 config USB_G_MULTI
tristate Multifunction Composite Gadget (EXPERIMENTAL)
depends on BLOCK  NET
diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile
index 2e2c047..43b51da 100644
--- a/drivers/usb/gadget/Makefile
+++ b/drivers/usb/gadget/Makefile
@@ -43,6 +43,7 @@ g_mass_storage-objs   := mass_storage.o
 g_printer-objs := printer.o
 g_cdc-objs := cdc2.o
 g_multi-objs   := multi.o
+g_nokia-objs   := nokia.o
 
 obj-$(CONFIG_USB_ZERO) += g_zero.o
 obj-$(CONFIG_USB_AUDIO)+= g_audio.o
@@ -55,4 +56,5 @@ obj-$(CONFIG_USB_G_PRINTER)   += g_printer.o
 obj-$(CONFIG_USB_MIDI_GADGET)  += g_midi.o
 obj-$(CONFIG_USB_CDC_COMPOSITE) += g_cdc.o
 obj-$(CONFIG_USB_G_MULTI)  += g_multi.o
+obj-$(CONFIG_USB_G_NOKIA)  += g_nokia.o
 
diff --git a/drivers/usb/gadget/nokia.c b/drivers/usb/gadget/nokia.c
new file mode 100644
index 000..7d6b66a
--- /dev/null
+++ b/drivers/usb/gadget/nokia.c
@@ -0,0 +1,259 @@
+/*
+ * nokia.c -- Nokia Composite Gadget Driver
+ *
+ * Copyright (C) 2008-2010 Nokia Corporation
+ * Contact: Felipe Balbi felipe.ba...@nokia.com
+ *
+ * This gadget driver borrows from serial.c which is:
+ *
+ * Copyright (C) 2003 Al Borchers (alborch...@steinerpoint.com)
+ * Copyright (C) 2008 by David Brownell
+ * Copyright (C) 2008 by Nokia Corporation
+ *
+ * This software is distributed under the terms of the GNU General
+ * Public License (GPL) as published by the Free Software Foundation,
+ * version 2 of that License.
+ */
+
+#include linux/kernel.h
+#include linux/utsname.h
+#include linux/device.h
+
+#include u_serial.h
+#include u_ether.h
+#include u_phonet.h
+#include gadget_chips.h
+
+/* Defines */
+
+#define NOKIA_VERSION_NUM  0x0211
+#define NOKIA_LONG_NAMEN900 (PC-Suite Mode)
+
+/*-*/
+
+/*
+ * Kbuild is not very cooperative with respect to linking separately
+ * compiled library objects into one module.  So for now we won't use
+ * separate compilation ... ensuring init/exit sections work to shrink
+ * the runtime footprint, and giving us at least some parts of what
+ * a gcc --combine ... part1.c part2.c part3.c ...  build would.
+ */
+#include composite.c
+#include usbstring.c
+#include config.c
+#include epautoconf.c
+
+#include u_serial.c
+#include f_acm.c
+#include f_ecm.c
+#include f_obex.c
+#include f_serial.c
+#include f_phonet.c
+#include u_ether.c
+
+/*-*/
+
+#define NOKIA_VENDOR_ID0x0421  /* Nokia */
+#define NOKIA_PRODUCT_ID   0x01c8  /* Nokia Gadget */
+
+/* string IDs are assigned dynamically */
+
+#define STRING_MANUFACTURER_IDX0
+#define STRING_PRODUCT_IDX 1
+#define STRING_DESCRIPTION_IDX 2
+
+static char manufacturer_nokia[] = Nokia;
+static const char product_nokia[] = NOKIA_LONG_NAME;
+static const char description_nokia[] = PC-Suite Configuration;
+
+static struct usb_string strings_dev[] = {
+   [STRING_MANUFACTURER_IDX].s = manufacturer_nokia,
+   [STRING_PRODUCT_IDX].s = NOKIA_LONG_NAME,
+   [STRING_DESCRIPTION_IDX].s = description_nokia,
+   {  } /* end of list */
+};
+
+static struct usb_gadget_strings stringtab_dev = {
+   .language   = 0x0409,   /* en-us */
+   .strings= strings_dev,
+};
+
+static struct usb_gadget_strings *dev_strings[] = {
+   stringtab_dev,
+   NULL,
+};
+
+static struct usb_device_descriptor device_desc = {
+   .bLength= USB_DT_DEVICE_SIZE,
+   .bDescriptorType= USB_DT_DEVICE,
+   .bcdUSB = __constant_cpu_to_le16(0x0200),
+   .bDeviceClass   = USB_CLASS_COMM,
+   .idVendor   

Re: [PATCH 4/4] OMAP clock/CPUFreq: avoid leaking the CPUFreq frequency table

2010-01-05 Thread Paul Walmsley
On Tue, 5 Jan 2010, Felipe Balbi wrote:

 On Tue, Jan 05, 2010 at 03:42:08AM +0100, ext Paul Walmsley wrote:
  OMAP2xxx uses a dynamically-allocated cpufreq_frequency_table array,
  so this patch ensures that it is freed if CPUFreq terminates.
 
 wasn't this introduced by the previous patch ?

The dynamically-allocated array?  Yes.  Your point being?


- Paul
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/4] OMAP2: clock: clk2xxx.c doesn't compile if CPUFREQ is enabled

2010-01-05 Thread Paul Walmsley
On Tue, 5 Jan 2010, Felipe Balbi wrote:

 and you forgot to change the variable definition...

Thanks, looks like I sent an older version of the series.  I will resend.

 The variable defined is called rate but you use sys_ck_rate. I used rate,
 because that's what other functions are using and I wanted to keep the code
 consistent. 

Did you examine the other functions omap2_round_to_table_rate() and 
omap2_select_table_rate()?

What advantage is there to keeping this variable named rate, which is 
less specific given that this function also deals with DPLL rates, MPU 
rates, and crystal rates?


- Paul
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/4] OMAP2 clock: dynamically allocate CPUFreq frequency table

2010-01-05 Thread Paul Walmsley
On Tue, 5 Jan 2010, Felipe Balbi wrote:

 On Tue, Jan 05, 2010 at 03:42:07AM +0100, ext Paul Walmsley wrote:
  @@ -470,21 +472,51 @@ void omap2_clk_init_cpufreq_table(struct
  cpufreq_frequency_table **table)
  if (prcm-dpll_speed == prcm-xtal_speed)
  continue;
  
  +   tbl_sz++;
  +   }
  +
  +   /*
  +* XXX Ensure that we're doing what CPUFreq expects for this error
  +* case and the following one
  +*/
  +   if (tbl_sz == 0) {
  +   pr_warning(%s: no matching entries in rate_table\n,
  +  __func__);
  +   goto ocict_exit;
 
 you only use this ocict_exit here, so how about only return instead of a goto
 to a return ?

It's used twice.  But your latter point is a good one.  I will change 
that.


- Paul
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Question about omap_hsmmc driver

2010-01-05 Thread Enric Balletbò i Serra
Hi all,

I'm having problems trying to run the SDIO WLAN module on my IGEP v2
board using the latest omap kernel (2.6.33-rc2). The SDIO WLAN module
is connected to the MMC2 using 4 wires. With an older kernel ( 2.6.28
) works fine but the same configuration with 2.6.33-rc2 do not detect
the SDIO card.

Any idea to solve the problem ? There is a substantial modification in
this driver. Any help will be appreciated. I attached the log.

Thanks in advance,
   Enric


[   24.521484] mmci-omap-hs mmci-omap-hs.1: DISABLED - ENABLED
[   24.522003] mmc1: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0 timing 0
[   24.522033] mmci-omap-hs mmci-omap-hs.1: ENABLED - DISABLED
[   24.522308] mmci-omap-hs mmci-omap-hs.1: DISABLED - ENABLED
[   24.522338] mmc1: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 65535
width 0 timing 0
[   24.545104] mmc1: clock 40Hz busmode 1 powermode 2 cs 0 Vdd
65535 width 0 timing 0
[   24.568298] mmc1: clock 40Hz busmode 1 powermode 2 cs 1 Vdd
65535 width 0 timing 0
[   24.569335] mmc1: starting CMD0 arg  flags 00c0
[   24.569366] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD0, argument 0x
[   24.569519] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 1
[   24.569549] mmc1: req done (CMD0): 0:    
[   24.572540] mmc1: clock 40Hz busmode 1 powermode 2 cs 0 Vdd
65535 width 0 timing 0
[   24.573547] mmc1: starting CMD8 arg 00aa flags 02f5
[   24.573577] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD8, argument 0x00aa
[   24.573913] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[   24.573913] mmci-omap-hs mmci-omap-hs.1: MMC IRQ 0x18000 : ERRI CTO
[   24.573944] mmc1: req done (CMD8): -110:    
[   24.575744] mmc1: starting CMD5 arg  flags 02e1
[   24.575775] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD5, argument 0x
[   24.576110] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[   24.576141] mmci-omap-hs mmci-omap-hs.1: MMC IRQ 0x18000 : ERRI CTO
[   24.576171] mmc1: req failed (CMD5): -110, retrying...
[   24.576171] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD5, argument 0x
[   24.576507] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[   24.576538] mmci-omap-hs mmci-omap-hs.1: MMC IRQ 0x18000 : ERRI CTO
[   24.576568] mmc1: req failed (CMD5): -110, retrying...
[   24.576568] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD5, argument 0x
[   24.576904] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[   24.576934] mmci-omap-hs mmci-omap-hs.1: MMC IRQ 0x18000 : ERRI CTO
[   24.576934] mmc1: req failed (CMD5): -110, retrying...
[   24.576965] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD5, argument 0x
[   24.577301] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[   24.577331] mmci-omap-hs mmci-omap-hs.1: MMC IRQ 0x18000 : ERRI CTO
[   24.577331] mmc1: req done (CMD5): -110:    
[   24.578247] mmc1: starting CMD55 arg  flags 00f5
[   24.578247] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD55, argument 0x
[   24.578582] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[   24.578613] mmci-omap-hs mmci-omap-hs.1: MMC IRQ 0x18000 : ERRI CTO
[   24.578643] mmc1: req done (CMD55): -110:    
[   24.580444] mmc1: starting CMD55 arg  flags 00f5
[   24.580474] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD55, argument 0x
[   24.580810] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[   24.580810] mmci-omap-hs mmci-omap-hs.1: MMC IRQ 0x18000 : ERRI CTO
[   24.580841] mmc1: req done (CMD55): -110:    
[   24.582641] mmc1: starting CMD55 arg  flags 00f5
[   24.582672] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD55, argument 0x
[   24.583007] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[   24.583007] mmci-omap-hs mmci-omap-hs.1: MMC IRQ 0x18000 : ERRI CTO
[   24.583038] mmc1: req done (CMD55): -110:    
[   24.584899] mmc1: starting CMD55 arg  flags 00f5
[   24.584899] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD55, argument 0x
[   24.585235] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[   24.585266] mmci-omap-hs mmci-omap-hs.1: MMC IRQ 0x18000 : ERRI CTO
[   24.585296] mmc1: req done (CMD55): -110:    
[   24.587097] mmc1: starting CMD1 arg  flags 00e1
[   24.587097] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD1, argument 0x
[   24.587432] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[   24.587463] mmci-omap-hs mmci-omap-hs.1: MMC IRQ 0x18000 : ERRI CTO
[   24.587493] mmc1: req done (CMD1): -110:    
[   24.589294] mmc1: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0 timing 0
[   24.623962] mmci-omap-hs mmci-omap-hs.1: ENABLED - DISABLED
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  

[PATCH] omap: make serial_in_override() address the right uart port

2010-01-05 Thread Alexander Shishkin
Commit f62349ee9788b1d94c55eb6c291d74a1f69bdd9e makes it possible to
have some other than first uart port as ttyS0, which breaks the workaround
serial_in_override() function which will try to address the first uart
port (for ttyS0) and not the one that was initialized.

Signed-off-by: Alexander Shishkin virtu...@slind.org
CC: Mika Westerberg ext-mika.1.westerb...@nokia.com
CC: Kevin Hilman khil...@deeprootsystems.com
---
 arch/arm/mach-omap2/serial.c |   12 ++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
index 19805a7..8c964be 100644
--- a/arch/arm/mach-omap2/serial.c
+++ b/arch/arm/mach-omap2/serial.c
@@ -125,6 +125,13 @@ static struct plat_serial8250_port serial_platform_data3[] 
= {
}
 };
 #endif
+static inline unsigned int __serial_read_reg(struct uart_port *up,
+  int offset)
+{
+   offset = up-regshift;
+   return (unsigned int)__raw_readb(up-membase + offset);
+}
+
 static inline unsigned int serial_read_reg(struct plat_serial8250_port *up,
   int offset)
 {
@@ -583,11 +590,12 @@ static unsigned int serial_in_override(struct uart_port 
*up, int offset)
 {
if (UART_RX == offset) {
unsigned int lsr;
-   lsr = serial_read_reg(omap_uart[up-line].p, UART_LSR);
+   lsr = __serial_read_reg(up, UART_LSR);
if (!(lsr  UART_LSR_DR))
return -EPERM;
}
-   return serial_read_reg(omap_uart[up-line].p, offset);
+
+   return __serial_read_reg(up, offset);
 }
 
 void __init omap_serial_early_init(void)
-- 
1.6.3.3

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 1/2] omap i2c: make errata 1.153 workaround a separate function

2010-01-05 Thread Alexander Shishkin
On Mon, Dec 21, 2009 at 01:29:58 +0200, Alexander Shishkin wrote:
 This is to avoid insanely long lines and levels of indentation.

Ben, do you want me to resend these with Tony's acks or can you consider
applying them?

Regards,
--
Alex
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: Question about omap_hsmmc driver

2010-01-05 Thread Madhusudhan
Hi Enric,

You see from the log there is a timeout on CMD5. This could happen because
of multiple reasons. One of them is muxing of CMD/CLK lines. Or it could be
due to negotiation of voltage.

I would look at these things first.

Regards,
Madhu


From: Enric Balletbò i Serra [mailto:eballe...@gmail.com] 
Sent: Tuesday, January 05, 2010 10:44 AM
To: linux-omap@vger.kernel.org; madhu...@ti.com
Subject: Question about omap_hsmmc driver

Hi all,

I'm having problems trying to run the SDIO WLAN module on my IGEP v2 board
using the latest omap kernel (2.6.33-rc2). The SDIO WLAN module is connected
to the MMC2 using 4 wires. With an older kernel ( 2.6.28 ) works fine but
the same configuration with 2.6.33-rc2 do not detect the SDIO card.


Any idea to solve the problem ? There is a substantial modification in this
driver. Any help will be appreciated. I attached the log.

Thanks in advance,
   Enric


[   24.521484] mmci-omap-hs mmci-omap-hs.1: DISABLED - ENABLED
[   24.522003] mmc1: clock 0Hz busmode 1 powermode 0 cs 0 Vdd 0 width 0
timing 0
[   24.522033] mmci-omap-hs mmci-omap-hs.1: ENABLED - DISABLED
[   24.522308] mmci-omap-hs mmci-omap-hs.1: DISABLED - ENABLED
[   24.522338] mmc1: clock 0Hz busmode 1 powermode 1 cs 0 Vdd 65535 width 0
timing 0
[   24.545104] mmc1: clock 40Hz busmode 1 powermode 2 cs 0 Vdd 65535
width 0 timing 0
[   24.568298] mmc1: clock 40Hz busmode 1 powermode 2 cs 1 Vdd 65535
width 0 timing 0
[   24.569335] mmc1: starting CMD0 arg  flags 00c0
[   24.569366] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD0, argument 0x
[   24.569519] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 1
[   24.569549] mmc1: req done (CMD0): 0:    
[   24.572540] mmc1: clock 40Hz busmode 1 powermode 2 cs 0 Vdd 65535
width 0 timing 0
[   24.573547] mmc1: starting CMD8 arg 00aa flags 02f5
[   24.573577] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD8, argument 0x00aa
[   24.573913] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[   24.573913] mmci-omap-hs mmci-omap-hs.1: MMC IRQ 0x18000 : ERRI CTO
[   24.573944] mmc1: req done (CMD8): -110:   

[   24.575744] mmc1: starting CMD5 arg  flags 02e1
[   24.575775] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD5, argument 0x
[   24.576110] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[   24.576141] mmci-omap-hs mmci-omap-hs.1: MMC IRQ 0x18000 : ERRI CTO
[   24.576171] mmc1: req failed (CMD5): -110, retrying...
[   24.576171] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD5, argument 0x
[   24.576507] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[   24.576538] mmci-omap-hs mmci-omap-hs.1: MMC IRQ 0x18000 : ERRI CTO
[   24.576568] mmc1: req failed (CMD5): -110, retrying...
[   24.576568] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD5, argument 0x
[   24.576904] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[   24.576934] mmci-omap-hs mmci-omap-hs.1: MMC IRQ 0x18000 : ERRI CTO
[   24.576934] mmc1: req failed (CMD5): -110, retrying...
[   24.576965] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD5, argument 0x
[   24.577301] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[   24.577331] mmci-omap-hs mmci-omap-hs.1: MMC IRQ 0x18000 : ERRI CTO
[   24.577331] mmc1: req done (CMD5): -110:   

[   24.578247] mmc1: starting CMD55 arg  flags 00f5
[   24.578247] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD55, argument 0x
[   24.578582] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[   24.578613] mmci-omap-hs mmci-omap-hs.1: MMC IRQ 0x18000 : ERRI CTO
[   24.578643] mmc1: req done (CMD55): -110:   

[   24.580444] mmc1: starting CMD55 arg  flags 00f5
[   24.580474] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD55, argument 0x
[   24.580810] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[   24.580810] mmci-omap-hs mmci-omap-hs.1: MMC IRQ 0x18000 : ERRI CTO
[   24.580841] mmc1: req done (CMD55): -110:   

[   24.582641] mmc1: starting CMD55 arg  flags 00f5
[   24.582672] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD55, argument 0x
[   24.583007] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[   24.583007] mmci-omap-hs mmci-omap-hs.1: MMC IRQ 0x18000 : ERRI CTO
[   24.583038] mmc1: req done (CMD55): -110:   

[   24.584899] mmc1: starting CMD55 arg  flags 00f5
[   24.584899] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD55, argument 0x
[   24.585235] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[   24.585266] mmci-omap-hs mmci-omap-hs.1: MMC IRQ 0x18000 : ERRI CTO
[   24.585296] mmc1: req done (CMD55): -110:   

[   24.587097] mmc1: starting CMD1 arg  flags 00e1
[   24.587097] mmci-omap-hs mmci-omap-hs.1: mmc1: CMD1, argument 0x
[   24.587432] mmci-omap-hs mmci-omap-hs.1: IRQ Status is 18000
[  

Re: [PATCH 0/5] V7/Cortex/omap34xx fixes for 2.6.33-rc1: DCC, kexec, atags

2010-01-05 Thread Tony Lindgren
* Mika Westerberg mika.westerb...@iki.fi [100105 03:34]:
 On Tue, Dec 29, 2009 at 02:07:05PM -0800, Tony Lindgren wrote:
  Hi,
  
  * Magnus Damm magnus.d...@gmail.com [091227 21:54]:
   Hi Tony,
   
   On Sat, Dec 19, 2009 at 12:45 PM, Tony Lindgren t...@atomide.com wrote:
Here are some v7 fixes, mostly to make kexec work.
   
Using 2.6.33-rc1, these fixes, and kexec from kexec-tools
git repo, I can reboot my n900 in a loop reliably.
   
   Thanks for your work on this. I previously tested kexec on ARM V6 and
   V7 and noticed that V7 didn't work. I revisited my V7 test after
   becoming aware of your patches. The single patch below unbreaks V7 on
   my target system.
   
     arm: Fix cpu_proc_fin() for proc-v7.S and make kexec work
  
  Cool. Thank you for fixing the kexec source :)
  
  Are you seeing the occasional crc errors when uncompressing the
  new kernel on your v7?
  
  I'm seeing those maybe 1 out of 10 times on omap3430 boards unless if
  I do an extra (and wrong) flush_cache_all after local_flush_tlb_all
  at the end of setup_mm_for_reboot.
 
 Hi,
 
 I've also been playing with this patch.
 
 One thing I noticed is that If I disable L2 cache in cpu_v7_proc_fin()
 then kexec works fine and no crc errors from decompressor (I did
 ~30 kexec boots). With L2 cache enabled, it fails almost immediately.
 
 Tested with OMAP3430 ES3.1.

OK cool. I thought disabling the caches should also disable L2, but
looks like not then.

Regards,

Tony
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: dadd2bb931a08a4b6b17f9e82d9bbe7bedebbc98 breaks omapfb (old non-dss2)

2010-01-05 Thread Paul Walmsley
Hi Tomi,

On Tue, 15 Dec 2009, Tomi Valkeinen wrote:

 On Tue, 2009-12-15 at 10:58 +0100, ext Sergey Lapin wrote:
  dadd2bb931a08a4b6b17f9e82d9bbe7bedebbc98
  OMAP: OMAPFB: add omapdss device
  
  The upcoming new display subsystem driver is divided to two devices,
  omapdss and omapfb, of which omapdss handles the actual hardware.
  
  This patch adds a dummy omapdss platform device for the current omapfb
  driver, which is then used to get the clocks. This will make it possible
  for the current and the new display drivers to co-exist.
  
  Signed-off-by: Tomi Valkeinen tomi.valkei...@nokia.com
  Acked-by: Tony Lindgren t...@atomide.com
  
  breaks old omapfb.
 
 I didn't look at this further, but I quickly tested with OMAP3 SDP
 board, reverting the patch that makes SDP use DSS2, and it seems to work
 fine with the old omapfb.
 
 Perhaps you have more kernel debug options enabled, and then it
 complains about missing release function. I'll look at it tomorrow.

This also affects omap_2430sdp_defconfig on 2430SDP:

omapfb omapfb: timeout waiting for FRAME DONE
[ cut here ]
WARNING: at drivers/base/core.c:131 device_release+0x68/0x7c()
Device 'omapdss' does not have a release() function, it is broken and must 
be fixed.
Modules linked in:
[c002c748] (unwind_backtrace+0x0/0xdc) from [c0049874] 
(warn_slowpath_common+0x48/0x60)
[c0049874] (warn_slowpath_common+0x48/0x60) from [c00498c4] 
(warn_slowpath_fmt+0x24/0x30)
[c00498c4] (warn_slowpath_fmt+0x24/0x30) from [c01b0544] 
(device_release+0x68/0x7c)
[c01b0544] (device_release+0x68/0x7c) from [c01706a8] 
(kobject_release+0x60/0x74)
[c01706a8] (kobject_release+0x60/0x74) from [c01713c4] 
(kref_put+0x5c/0x6c)
[c01713c4] (kref_put+0x5c/0x6c) from [c018df44] 
(omapfb_free_resources+0xec/0x130)
[c018df44] (omapfb_free_resources+0xec/0x130) from [c018f030] 
(omapfb_do_probe+0x6dc/0x810)
[c018f030] (omapfb_do_probe+0x6dc/0x810) from [c0191088] 
(sdp2430_panel_probe+0xc/0x18)
[c0191088] (sdp2430_panel_probe+0xc/0x18) from [c01b3f24] 
(platform_drv_probe+0x18/0x1c)
[c01b3f24] (platform_drv_probe+0x18/0x1c) from [c01b3114] 
(driver_probe_device+0xa0/0x14c)
[c01b3114] (driver_probe_device+0xa0/0x14c) from [c01b3220] 
(__driver_attach+0x60/0x84)
[c01b3220] (__driver_attach+0x60/0x84) from [c01b2990] 
(bus_for_each_dev+0x44/0x74)
[c01b2990] (bus_for_each_dev+0x44/0x74) from [c01b22e8] 
(bus_add_driver+0x9c/0x224)
[c01b22e8] (bus_add_driver+0x9c/0x224) from [c01b34f4] 
(driver_register+0xa8/0x130)
[c01b34f4] (driver_register+0xa8/0x130) from [c0026364] 
(do_one_initcall+0x5c/0x1b4)
[c0026364] (do_one_initcall+0x5c/0x1b4) from [c0008408] 
(kernel_init+0xa0/0x124)
[c0008408] (kernel_init+0xa0/0x124) from [c0027ed4] 
(kernel_thread_exit+0x0/0x8)
---[ end trace da227214a82491b7 ]---


- Paul
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2 0/4] OMAP2xxx clock/CPUFreq: fix compilation errors; clean up

2010-01-05 Thread Paul Walmsley
Hello,

This series fixes several compilation errors for OMAP2xxx chips when
CONFIG_CPU_FREQ is set.  These were reported and partially fixed
by Felipe Balbi felipe.ba...@nokia.com.

Considerable work is still needed to fully support dynamic frequency
changes on OMAP2xxx-series chips.  Readers interested in such a
project are encouraged to review the Maemo Diablo RX-34 and RX-44
kernel source at:

http://repository.maemo.org/pool/diablo/free/k/kernel-source-diablo/

Boot-tested on N800 with n8x0_defconfig with CONFIG_CPU_FREQ; compile-tested
for 2430SDP.

This second version also incorporates some comments from Felipe.


- Paul

---

Felipe Balbi (1):
  OMAP2xxx clock: clk2xxx.c doesn't compile if CPUFREQ is enabled

Paul Walmsley (3):
  OMAP2xxx OPP: clean up comments in OPP data
  OMAP2 clock: dynamically allocate CPUFreq frequency table
  OMAP clock/CPUFreq: avoid leaking the CPUFreq frequency table


 arch/arm/mach-omap2/clock2xxx.c |   57 ++-
 arch/arm/mach-omap2/opp2420_data.c  |   38 +++--
 arch/arm/mach-omap2/opp2430_data.c  |   30 
 arch/arm/plat-omap/clock.c  |   10 +
 arch/arm/plat-omap/cpu-omap.c   |1 +
 arch/arm/plat-omap/include/plat/clock.h |2 +
 6 files changed, 96 insertions(+), 42 deletions(-)


--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2 1/4] OMAP2xxx clock: clk2xxx.c doesn't compile if CPUFREQ is enabled

2010-01-05 Thread Paul Walmsley
From: Felipe Balbi felipe.ba...@nokia.com

if we enable CPUFREQ we can't build omap2 for two reasons,
one of them is fixed by the patch below.

It's failing because the __must_be_array() check in
ARRAY_SIZE() is failing and printing the following message:

arch/arm/mach-omap2/clock2xxx.c:453: error: negative width in bit-field 
'anonymous'

Signed-off-by: Felipe Balbi felipe.ba...@nokia.com
[p...@pwsan.com: commit message updated; changed rate variable name]
Signed-off-by: Paul Walmsley p...@pwsan.com
---
 arch/arm/mach-omap2/clock2xxx.c |5 -
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/clock2xxx.c b/arch/arm/mach-omap2/clock2xxx.c
index d0e3fb7..ce6742f 100644
--- a/arch/arm/mach-omap2/clock2xxx.c
+++ b/arch/arm/mach-omap2/clock2xxx.c
@@ -455,12 +455,15 @@ static struct cpufreq_frequency_table 
freq_table[ARRAY_SIZE(rate_table)];
 void omap2_clk_init_cpufreq_table(struct cpufreq_frequency_table **table)
 {
struct prcm_config *prcm;
+   long sys_ck_rate;
int i = 0;
 
+   sys_ck_rate = clk_get_rate(sclk);
+
for (prcm = rate_table; prcm-mpu_speed; prcm++) {
if (!(prcm-flags  cpu_mask))
continue;
-   if (prcm-xtal_speed != sys_ck.rate)
+   if (prcm-xtal_speed != sys_ck_rate)
continue;
 
/* don't put bypass rates in table */


--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2 3/4] OMAP2 clock: dynamically allocate CPUFreq frequency table

2010-01-05 Thread Paul Walmsley
Dynamically allocate the CPUFreq frequency table on OMAP2xxx chips.
This fixes some compilation problems, since the kernel may not know
what chip it is running on until boot-time.  This also reduces the size
of the CPUFreq frequency table.

Problem reported by Felipe Balbi felipe.ba...@nokia.com.  Thanks also
for comments on the patch from Felipe.

Signed-off-by: Paul Walmsley p...@pwsan.com
Cc: Felipe Balbi felipe.ba...@nokia.com
---
 arch/arm/mach-omap2/clock2xxx.c |   45 ---
 1 files changed, 37 insertions(+), 8 deletions(-)

diff --git a/arch/arm/mach-omap2/clock2xxx.c b/arch/arm/mach-omap2/clock2xxx.c
index ce6742f..3bfd045 100644
--- a/arch/arm/mach-omap2/clock2xxx.c
+++ b/arch/arm/mach-omap2/clock2xxx.c
@@ -449,14 +449,16 @@ int omap2_select_table_rate(struct clk *clk, unsigned 
long rate)
 #ifdef CONFIG_CPU_FREQ
 /*
  * Walk PRCM rate table and fillout cpufreq freq_table
+ * XXX This should be replaced by an OPP layer in the near future
  */
-static struct cpufreq_frequency_table freq_table[ARRAY_SIZE(rate_table)];
+static struct cpufreq_frequency_table *freq_table;
 
 void omap2_clk_init_cpufreq_table(struct cpufreq_frequency_table **table)
 {
-   struct prcm_config *prcm;
+   const struct prcm_config *prcm;
long sys_ck_rate;
int i = 0;
+   int tbl_sz = 0;
 
sys_ck_rate = clk_get_rate(sclk);
 
@@ -470,17 +472,44 @@ void omap2_clk_init_cpufreq_table(struct 
cpufreq_frequency_table **table)
if (prcm-dpll_speed == prcm-xtal_speed)
continue;
 
-   freq_table[i].index = i;
-   freq_table[i].frequency = prcm-mpu_speed / 1000;
-   i++;
+   tbl_sz++;
}
 
-   if (i == 0) {
-   printk(KERN_WARNING %s: failed to initialize frequency 
-  table\n, __func__);
+   /*
+* XXX Ensure that we're doing what CPUFreq expects for this error
+* case and the following one
+*/
+   if (tbl_sz == 0) {
+   pr_warning(%s: no matching entries in rate_table\n,
+  __func__);
return;
}
 
+   /* Include the CPUFREQ_TABLE_END terminator entry */
+   tbl_sz++;
+
+   freq_table = kzalloc(sizeof(struct cpufreq_frequency_table) * tbl_sz,
+GFP_KERNEL);
+   if (!freq_table) {
+   pr_err(%s: could not kzalloc frequency table\n, __func__);
+   return;
+   }
+
+   for (prcm = rate_table; prcm-mpu_speed; prcm++) {
+   if (!(prcm-flags  cpu_mask))
+   continue;
+   if (prcm-xtal_speed != sys_ck_rate)
+   continue;
+
+   /* don't put bypass rates in table */
+   if (prcm-dpll_speed == prcm-xtal_speed)
+   continue;
+
+   freq_table[i].index = i;
+   freq_table[i].frequency = prcm-mpu_speed / 1000;
+   i++;
+   }
+
freq_table[i].index = i;
freq_table[i].frequency = CPUFREQ_TABLE_END;
 


--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2 4/4] OMAP clock/CPUFreq: avoid leaking the CPUFreq frequency table

2010-01-05 Thread Paul Walmsley
OMAP2xxx uses a dynamically-allocated cpufreq_frequency_table array,
so this patch ensures that it is freed if CPUFreq terminates.

Signed-off-by: Paul Walmsley p...@pwsan.com
---
 arch/arm/mach-omap2/clock2xxx.c |7 +++
 arch/arm/plat-omap/clock.c  |   10 ++
 arch/arm/plat-omap/cpu-omap.c   |1 +
 arch/arm/plat-omap/include/plat/clock.h |2 ++
 4 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/clock2xxx.c b/arch/arm/mach-omap2/clock2xxx.c
index 3bfd045..74f5586 100644
--- a/arch/arm/mach-omap2/clock2xxx.c
+++ b/arch/arm/mach-omap2/clock2xxx.c
@@ -515,6 +515,12 @@ void omap2_clk_init_cpufreq_table(struct 
cpufreq_frequency_table **table)
 
*table = freq_table[0];
 }
+
+void omap2_clk_exit_cpufreq_table(struct cpufreq_frequency_table **table)
+{
+   kfree(freq_table);
+}
+
 #endif
 
 struct clk_functions omap2_clk_functions = {
@@ -526,6 +532,7 @@ struct clk_functions omap2_clk_functions = {
.clk_disable_unused = omap2_clk_disable_unused,
 #ifdef CONFIG_CPU_FREQ
.clk_init_cpufreq_table = omap2_clk_init_cpufreq_table,
+   .clk_exit_cpufreq_table = omap2_clk_exit_cpufreq_table,
 #endif
 };
 
diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c
index a64d84c..d9f8c84 100644
--- a/arch/arm/plat-omap/clock.c
+++ b/arch/arm/plat-omap/clock.c
@@ -329,6 +329,16 @@ void clk_init_cpufreq_table(struct cpufreq_frequency_table 
**table)
arch_clock-clk_init_cpufreq_table(table);
spin_unlock_irqrestore(clockfw_lock, flags);
 }
+
+void clk_exit_cpufreq_table(struct cpufreq_frequency_table **table)
+{
+   unsigned long flags;
+
+   spin_lock_irqsave(clockfw_lock, flags);
+   if (arch_clock-clk_exit_cpufreq_table)
+   arch_clock-clk_exit_cpufreq_table(table);
+   spin_unlock_irqrestore(clockfw_lock, flags);
+}
 #endif
 
 /*-*/
diff --git a/arch/arm/plat-omap/cpu-omap.c b/arch/arm/plat-omap/cpu-omap.c
index f8ddbdd..6d3d333 100644
--- a/arch/arm/plat-omap/cpu-omap.c
+++ b/arch/arm/plat-omap/cpu-omap.c
@@ -134,6 +134,7 @@ static int __init omap_cpu_init(struct cpufreq_policy 
*policy)
 
 static int omap_cpu_exit(struct cpufreq_policy *policy)
 {
+   clk_exit_cpufreq_table(freq_table);
clk_put(mpu_clk);
return 0;
 }
diff --git a/arch/arm/plat-omap/include/plat/clock.h 
b/arch/arm/plat-omap/include/plat/clock.h
index 309b6d1..94fe2a0 100644
--- a/arch/arm/plat-omap/include/plat/clock.h
+++ b/arch/arm/plat-omap/include/plat/clock.h
@@ -119,6 +119,7 @@ struct clk_functions {
void(*clk_disable_unused)(struct clk *clk);
 #ifdef CONFIG_CPU_FREQ
void(*clk_init_cpufreq_table)(struct 
cpufreq_frequency_table **);
+   void(*clk_exit_cpufreq_table)(struct 
cpufreq_frequency_table **);
 #endif
 };
 
@@ -135,6 +136,7 @@ extern unsigned long followparent_recalc(struct clk *clk);
 extern void clk_enable_init_clocks(void);
 #ifdef CONFIG_CPU_FREQ
 extern void clk_init_cpufreq_table(struct cpufreq_frequency_table **table);
+extern void clk_exit_cpufreq_table(struct cpufreq_frequency_table **table);
 #endif
 
 extern const struct clkops clkops_null;


--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH v2 2/4] OMAP2xxx OPP: clean up comments in OPP data

2010-01-05 Thread Paul Walmsley
Revise some of the comments in the OMAP2xxx OPP data for clarity.

Signed-off-by: Paul Walmsley p...@pwsan.com
Cc: Richard Woodruff r-woodru...@ti.com
---
 arch/arm/mach-omap2/opp2420_data.c |   38 +++-
 arch/arm/mach-omap2/opp2430_data.c |   30 ++--
 2 files changed, 35 insertions(+), 33 deletions(-)

diff --git a/arch/arm/mach-omap2/opp2420_data.c 
b/arch/arm/mach-omap2/opp2420_data.c
index 126a939..e6dda69 100644
--- a/arch/arm/mach-omap2/opp2420_data.c
+++ b/arch/arm/mach-omap2/opp2420_data.c
@@ -9,45 +9,47 @@
  * The OMAP2 processor can be run at several discrete 'PRCM configurations'.
  * These configurations are characterized by voltage and speed for clocks.
  * The device is only validated for certain combinations. One way to express
- * these combinations is via the 'ratio's' which the clocks operate with
+ * these combinations is via the 'ratios' which the clocks operate with
  * respect to each other. These ratio sets are for a given voltage/DPLL
- * setting. All configurations can be described by a DPLL setting and a ratio
- * There are 3 ratio sets for the 2430 and X ratio sets for 2420.
- *
- * 2430 differs from 2420 in that there are no more phase synchronizers used.
- * They both have a slightly different clock domain setup. 2420(iva1,dsp) vs
- * 2430 (iva2.1, NOdsp, mdm)
+ * setting. All configurations can be described by a DPLL setting and a ratio.
  *
  * XXX Missing voltage data.
+ * XXX Missing 19.2MHz sys_clk rate sets (needed for N800/N810)
  *
  * THe format described in this file is deprecated.  Once a reasonable
  * OPP API exists, the data in this file should be converted to use it.
  *
  * This is technically part of the OMAP2xxx clock code.
+ *
+ * Considerable work is still needed to fully support dynamic frequency
+ * changes on OMAP2xxx-series chips.  Readers interested in such a
+ * project are encouraged to review the Maemo Diablo RX-34 and RX-44
+ * kernel source at:
+ * http://repository.maemo.org/pool/diablo/free/k/kernel-source-diablo/
  */
 
 #include opp2xxx.h
 #include sdrc.h
 #include clock.h
 
-/*-
- * Key dividers which make up a PRCM set. Ratio's for a PRCM are mandated.
+/*
+ * Key dividers which make up a PRCM set. Ratios for a PRCM are mandated.
  * xtal_speed, dpll_speed, mpu_speed, CM_CLKSEL_MPU,
  * CM_CLKSEL_DSP, CM_CLKSEL_GFX, CM_CLKSEL1_CORE, CM_CLKSEL1_PLL,
  * CM_CLKSEL2_PLL, CM_CLKSEL_MDM
  *
- * Filling in table based on H4 boards and 2430-SDPs variants available.
- * There are quite a few more rates combinations which could be defined.
+ * Filling in table based on H4 boards available.  There are quite a
+ * few more rate combinations which could be defined.
  *
- * When multiple values are defined the start up will try and choose the
- * fastest one. If a 'fast' value is defined, then automatically, the /2
- * one should be included as it can be used.   Generally having more that
- * one fast set does not make sense, as static timings need to be changed
- * to change the set.   The exception is the bypass setting which is
- * availble for low power bypass.
+ * When multiple values are defined the start up will try and choose
+ * the fastest one. If a 'fast' value is defined, then automatically,
+ * the /2 one should be included as it can be used.  Generally having
+ * more than one fast set does not make sense, as static timings need
+ * to be changed to change the set.  The exception is the bypass
+ * setting which is available for low power bypass.
  *
  * Note: This table needs to be sorted, fastest to slowest.
- *-*/
+ **/
 const struct prcm_config omap2420_rate_table[] = {
/* PRCM I - FAST */
{S12M, S660M, S330M, RI_CM_CLKSEL_MPU_VAL,  /* 330MHz ARM */
diff --git a/arch/arm/mach-omap2/opp2430_data.c 
b/arch/arm/mach-omap2/opp2430_data.c
index edb8167..1b9596a 100644
--- a/arch/arm/mach-omap2/opp2430_data.c
+++ b/arch/arm/mach-omap2/opp2430_data.c
@@ -1,5 +1,5 @@
 /*
- * opp2420_data.c - old-style OPP table for OMAP2420
+ * opp2430_data.c - old-style OPP table for OMAP2430
  *
  * Copyright (C) 2005-2009 Texas Instruments, Inc.
  * Copyright (C) 2004-2009 Nokia Corporation
@@ -9,16 +9,16 @@
  * The OMAP2 processor can be run at several discrete 'PRCM configurations'.
  * These configurations are characterized by voltage and speed for clocks.
  * The device is only validated for certain combinations. One way to express
- * these combinations is via the 'ratio's' which the clocks operate with
+ * these combinations is via the 'ratios' which the clocks operate with
  * respect to each other. These ratio sets are for a given voltage/DPLL
- * setting. All configurations can be described by a DPLL setting and a ratio
- * There are 3 ratio sets for the 2430 and X ratio sets for 2420.
+ * setting. All configurations can be 

Re: [PATCH v3 1/2] USB: Add empty functions in otg.h

2010-01-05 Thread Olof Johansson
On Tue, Jan 05, 2010 at 12:54:50PM +0200, Felipe Balbi wrote:
 On Tue, Jan 05, 2010 at 09:46:58AM +0100, ext Maulik Mankad wrote:
 USB : Add empty functions in otg.h

 Add empty functions for usb_nop_xceiv_register()
 and usb_nop_xceiv_unregister() in otg.h so that
 these functions can be called even when
 CONFIG_NOP_USB_XCEIV is not enabled.

 It allows to remove ifdef's from board file.

 Signed-off-by: Maulik Mankad x0082...@ti.com
 Cc: Tony Lindgren t...@atomide.com
 Cc: Felipe Balbi felipe.ba...@nokia.com

 Signed-off-by: Felipe Balbi felipe.ba...@nokia.com

 Now this patch looks ok.

Don't you mean Acked-by?

Anyway, also:

Acked-by: Olof Johansson o...@lixom.net


-Olof
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 2/2] ARM : OMAP : Remove #ifdef from board-omap3evm.c

2010-01-05 Thread Olof Johansson
On Tue, Jan 05, 2010 at 02:19:32PM +0530, Maulik Mankad wrote:
 ARM : OMAP : Remove #ifdef from board-omap3evm.c
 
 Remove #ifdef around usb_nop_xceiv_register() from
 board-omap3evm.c
 
 Signed-off-by: Maulik Mankad x0082...@ti.com
 Cc: Tony Lindgren t...@atomide.com
 Cc: Felipe Balbi felipe.ba...@nokia.com
 Cc: Greg Kroah-Hartman gre...@suse.de
 Cc: Olof Johansson o...@lixom.net

Acked-by: Olof Johansson o...@lixom.net

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/5] V7/Cortex/omap34xx fixes for 2.6.33-rc1: DCC, kexec, atags

2010-01-05 Thread Paul Walmsley
Hi, 

On Tue, 29 Dec 2009, Tony Lindgren wrote:

 Also, what's the Cortex version on your v7? It's rev r2p3 on
 omap3430.

Just a quick note - I think it is r1p3 on OMAP34xx ES3.1 and below, and 
r1p7 on ES3.1.2.


- Paul
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] omap: make serial_in_override() address the right uart port

2010-01-05 Thread Tony Lindgren
* Alexander Shishkin virtu...@slind.org [100105 08:56]:
 Commit f62349ee9788b1d94c55eb6c291d74a1f69bdd9e makes it possible to
 have some other than first uart port as ttyS0, which breaks the workaround
 serial_in_override() function which will try to address the first uart
 port (for ttyS0) and not the one that was initialized.

Nothing wrong with this patch.. But so we're back to having the ports move
around again? That sucks. I wonder if we can initialize dummy 8250 ports
somehow to keep the order correct to avoid confusion.

Regards,

Tony
 
 Signed-off-by: Alexander Shishkin virtu...@slind.org
 CC: Mika Westerberg ext-mika.1.westerb...@nokia.com
 CC: Kevin Hilman khil...@deeprootsystems.com
 ---
  arch/arm/mach-omap2/serial.c |   12 ++--
  1 files changed, 10 insertions(+), 2 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
 index 19805a7..8c964be 100644
 --- a/arch/arm/mach-omap2/serial.c
 +++ b/arch/arm/mach-omap2/serial.c
 @@ -125,6 +125,13 @@ static struct plat_serial8250_port 
 serial_platform_data3[] = {
   }
  };
  #endif
 +static inline unsigned int __serial_read_reg(struct uart_port *up,
 +int offset)
 +{
 + offset = up-regshift;
 + return (unsigned int)__raw_readb(up-membase + offset);
 +}
 +
  static inline unsigned int serial_read_reg(struct plat_serial8250_port *up,
  int offset)
  {
 @@ -583,11 +590,12 @@ static unsigned int serial_in_override(struct uart_port 
 *up, int offset)
  {
   if (UART_RX == offset) {
   unsigned int lsr;
 - lsr = serial_read_reg(omap_uart[up-line].p, UART_LSR);
 + lsr = __serial_read_reg(up, UART_LSR);
   if (!(lsr  UART_LSR_DR))
   return -EPERM;
   }
 - return serial_read_reg(omap_uart[up-line].p, offset);
 +
 + return __serial_read_reg(up, offset);
  }
  
  void __init omap_serial_early_init(void)
 -- 
 1.6.3.3
 
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 0/4] OMAP2xxx clock/CPUFreq: fix compilation errors; clean up

2010-01-05 Thread Tony Lindgren
* Paul Walmsley p...@pwsan.com [100105 09:35]:
 Hello,
 
 This series fixes several compilation errors for OMAP2xxx chips when
 CONFIG_CPU_FREQ is set.  These were reported and partially fixed
 by Felipe Balbi felipe.ba...@nokia.com.
 
 Considerable work is still needed to fully support dynamic frequency
 changes on OMAP2xxx-series chips.  Readers interested in such a
 project are encouraged to review the Maemo Diablo RX-34 and RX-44
 kernel source at:
 
 http://repository.maemo.org/pool/diablo/free/k/kernel-source-diablo/
 
 Boot-tested on N800 with n8x0_defconfig with CONFIG_CPU_FREQ; compile-tested
 for 2430SDP.
 
 This second version also incorporates some comments from Felipe.

These look good to me, can you please send them one more time with
LAKML Cc'd for a quick review there?

Regards,

Tony

 
 
 - Paul
 
 ---
 
 Felipe Balbi (1):
   OMAP2xxx clock: clk2xxx.c doesn't compile if CPUFREQ is enabled
 
 Paul Walmsley (3):
   OMAP2xxx OPP: clean up comments in OPP data
   OMAP2 clock: dynamically allocate CPUFreq frequency table
   OMAP clock/CPUFreq: avoid leaking the CPUFreq frequency table
 
 
  arch/arm/mach-omap2/clock2xxx.c |   57 
 ++-
  arch/arm/mach-omap2/opp2420_data.c  |   38 +++--
  arch/arm/mach-omap2/opp2430_data.c  |   30 
  arch/arm/plat-omap/clock.c  |   10 +
  arch/arm/plat-omap/cpu-omap.c   |1 +
  arch/arm/plat-omap/include/plat/clock.h |2 +
  6 files changed, 96 insertions(+), 42 deletions(-)
 
 
 --
 To unsubscribe from this list: send the line unsubscribe linux-omap in
 the body of a message to majord...@vger.kernel.org
 More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] omap: make serial_in_override() address the right uart port

2010-01-05 Thread Alexander Shishkin
On Tue, Jan 05, 2010 at 10:03:01 -0800, Tony Lindgren wrote:
 * Alexander Shishkin virtu...@slind.org [100105 08:56]:
  Commit f62349ee9788b1d94c55eb6c291d74a1f69bdd9e makes it possible to
  have some other than first uart port as ttyS0, which breaks the workaround
  serial_in_override() function which will try to address the first uart
  port (for ttyS0) and not the one that was initialized.
 
 Nothing wrong with this patch.. But so we're back to having the ports move
 around again? That sucks. I wonder if we can initialize dummy 8250 ports
 somehow to keep the order correct to avoid confusion.

It doesn't seem like any solution to this problem will suck less than the
current one, but let's think about it. My patch only addresses the issue I'm
having with the current solution.

Regards,
--
Alex
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] omap: make serial_in_override() address the right uart port

2010-01-05 Thread Tony Lindgren
* Alexander Shishkin virtu...@slind.org [100105 10:08]:
 On Tue, Jan 05, 2010 at 10:03:01 -0800, Tony Lindgren wrote:
  * Alexander Shishkin virtu...@slind.org [100105 08:56]:
   Commit f62349ee9788b1d94c55eb6c291d74a1f69bdd9e makes it possible to
   have some other than first uart port as ttyS0, which breaks the workaround
   serial_in_override() function which will try to address the first uart
   port (for ttyS0) and not the one that was initialized.
  
  Nothing wrong with this patch.. But so we're back to having the ports move
  around again? That sucks. I wonder if we can initialize dummy 8250 ports
  somehow to keep the order correct to avoid confusion.
 
 It doesn't seem like any solution to this problem will suck less than the
 current one, but let's think about it. My patch only addresses the issue I'm
 having with the current solution.

Agreed, we need to fix the problem first.

Regards,

Tony
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 0/4] OMAP2xxx clock/CPUFreq: fix compilation errors; clean up

2010-01-05 Thread Paul Walmsley
On Tue, 5 Jan 2010, Tony Lindgren wrote:

 * Paul Walmsley p...@pwsan.com [100105 09:35]:
  Hello,
  
  This series fixes several compilation errors for OMAP2xxx chips when
  CONFIG_CPU_FREQ is set.  These were reported and partially fixed
  by Felipe Balbi felipe.ba...@nokia.com.
  
  Considerable work is still needed to fully support dynamic frequency
  changes on OMAP2xxx-series chips.  Readers interested in such a
  project are encouraged to review the Maemo Diablo RX-34 and RX-44
  kernel source at:
  
  http://repository.maemo.org/pool/diablo/free/k/kernel-source-diablo/
  
  Boot-tested on N800 with n8x0_defconfig with CONFIG_CPU_FREQ; compile-tested
  for 2430SDP.
  
  This second version also incorporates some comments from Felipe.
 
 These look good to me, can you please send them one more time with
 LAKML Cc'd for a quick review there?

Yes, I plan to send them there along with some other queued fixes for 
another .33-rc fixes series.


- Paul
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 0/4] OMAP2xxx clock/CPUFreq: fix compilation errors; clean up

2010-01-05 Thread Tony Lindgren
* Paul Walmsley p...@pwsan.com [100105 10:20]:
 On Tue, 5 Jan 2010, Tony Lindgren wrote:
 
  * Paul Walmsley p...@pwsan.com [100105 09:35]:
   Hello,
   
   This series fixes several compilation errors for OMAP2xxx chips when
   CONFIG_CPU_FREQ is set.  These were reported and partially fixed
   by Felipe Balbi felipe.ba...@nokia.com.
   
   Considerable work is still needed to fully support dynamic frequency
   changes on OMAP2xxx-series chips.  Readers interested in such a
   project are encouraged to review the Maemo Diablo RX-34 and RX-44
   kernel source at:
   
   http://repository.maemo.org/pool/diablo/free/k/kernel-source-diablo/
   
   Boot-tested on N800 with n8x0_defconfig with CONFIG_CPU_FREQ; 
   compile-tested
   for 2430SDP.
   
   This second version also incorporates some comments from Felipe.
  
  These look good to me, can you please send them one more time with
  LAKML Cc'd for a quick review there?
 
 Yes, I plan to send them there along with some other queued fixes for 
 another .33-rc fixes series.

OK, thanks.

Tony
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC][PATCH] mfd: twl4030: Check for i2c error code in protect_pm_master function

2010-01-05 Thread Samuel Ortiz
Hi Balaji,

On Fri, Dec 11, 2009 at 09:59:18PM +0530, balaj...@ti.com wrote:
 From: Balaji T K balaj...@ti.com
 
 Warn about error messages immediately after i2c write to R_PROTECT_KEY
   in functions protect_pm_master/unprotect_pm_master
 
 Signed-off-by: Balaji T K balaj...@ti.com
 ---
  drivers/mfd/twl-core.c |   23 ++-
  1 files changed, 18 insertions(+), 5 deletions(-)
 
 diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c
 index 42af794..74f93ed 100644
 --- a/drivers/mfd/twl-core.c
 +++ b/drivers/mfd/twl-core.c
 @@ -804,6 +804,9 @@ static inline int __init protect_pm_master(void)
  
   e = twl_i2c_write_u8(TWL_MODULE_PM_MASTER, KEY_LOCK,
   R_PROTECT_KEY);
 + if (e  0)
 + pr_err(twl_core: Could not write value : %x to TWL
 + register %x err %d\n, KEY_LOCK, R_PROTECT_KEY, e);
   return e;
  }
  
 @@ -811,10 +814,17 @@ static inline int __init unprotect_pm_master(void)
  {
   int e = 0;
  
 - e |= twl_i2c_write_u8(TWL_MODULE_PM_MASTER, KEY_UNLOCK1,
 + e = twl_i2c_write_u8(TWL_MODULE_PM_MASTER, KEY_UNLOCK1,
   R_PROTECT_KEY);
 - e |= twl_i2c_write_u8(TWL_MODULE_PM_MASTER, KEY_UNLOCK2,
 + if (e  0)
 + pr_err(twl_core: Could not write value : %x to TWL
 + register %x err %d\n, KEY_UNLOCK1, R_PROTECT_KEY, e);
 +
Does it make sense to continue here ? If the key unlocking failed, shouldnt we
just return the error and leave ?


 + e = twl_i2c_write_u8(TWL_MODULE_PM_MASTER, KEY_UNLOCK2,
   R_PROTECT_KEY);
 + if (e  0)
 + pr_err(twl_core: Could not write value : %x to TWL
 + register %x err %d\n, KEY_UNLOCK1, R_PROTECT_KEY, e);
   return e;
  }
  
 @@ -865,10 +875,13 @@ static void clocks_init(struct device *dev)
   }
  
   ctrl |= HIGH_PERF_SQ;
 - e |= unprotect_pm_master();
 + e = unprotect_pm_master();
Same here: If the unprotection failed, the rest probably will fail as well,
right ?

Cheers,
Samuel.

   /* effect-MADC+USB ck en */
 - e |= twl_i2c_write_u8(TWL_MODULE_PM_MASTER, ctrl, R_CFG_BOOT);
 - e |= protect_pm_master();
 + e = twl_i2c_write_u8(TWL_MODULE_PM_MASTER, ctrl, R_CFG_BOOT);
 + if (e  0)
 + pr_err(twl_core: Could not write value : %x to TWL
 + register %x err %d\n, ctrl, R_CFG_BOOT, e);
 + e = protect_pm_master();
  
   if (e  0)
   pr_err(%s: clock init err [%d]\n, DRIVER_NAME, e);
 -- 
 1.5.4.7
 

-- 
Intel Open Source Technology Centre
http://oss.intel.com/
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: mfd: twl4030-irq: irq_desc-lock converted to raw_spinlock_t

2010-01-05 Thread Samuel Ortiz
Hi Tony,

On Mon, Dec 28, 2009 at 12:01:45PM -0800, Tony Lindgren wrote:
 * Felipe Balbi felipe.ba...@nokia.com [091228 03:04]:
  commit 239007b8440abff689632f50cdf0f2b9e895b534 converted
  the spinlock_t to raw_spinlock_t. Unfortunately twl4030-irq
  was left aside on the conversion.
  
  Cc: Tony Lindgren t...@atomide.com
  Cc: linux-omap@vger.kernel.org
  Acked-by: Thomas Gleixner t...@linutronix.de
  Signed-off-by: Felipe Balbi felipe.ba...@nokia.com
  
  ---
  
  resending because it wasn't applied before
 
 This should go via Samuel as it's MFD related.
Linus applied it to his tree directly.

Cheers,
Samuel.


 Acked-by: Tony Lindgren t...@atomide.com
 
  
  
   drivers/mfd/twl4030-irq.c |4 ++--
   1 files changed, 2 insertions(+), 2 deletions(-)
  
  diff --git a/drivers/mfd/twl4030-irq.c b/drivers/mfd/twl4030-irq.c
  index 20d29ba..9df9a5a 100644
  --- a/drivers/mfd/twl4030-irq.c
  +++ b/drivers/mfd/twl4030-irq.c
  @@ -568,12 +568,12 @@ static void twl4030_sih_do_edge(struct work_struct 
  *work)
   
  bytes[byte] = ~(0x03  off);
   
  -   spin_lock_irq(d-lock);
  +   raw_spin_lock_irq(d-lock);
  if (d-status  IRQ_TYPE_EDGE_RISING)
  bytes[byte] |= BIT(off + 1);
  if (d-status  IRQ_TYPE_EDGE_FALLING)
  bytes[byte] |= BIT(off + 0);
  -   spin_unlock_irq(d-lock);
  +   raw_spin_unlock_irq(d-lock);
   
  edge_change = ~BIT(i);
  }

-- 
Intel Open Source Technology Centre
http://oss.intel.com/
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [patch-v2.6.33-rc2+ 10/12] arm: omap: gpio: kill compile warning in gpio.c

2010-01-05 Thread Tony Lindgren
* Felipe Balbi felipe.ba...@nokia.com [091229 14:59]:
 when building linux-omap for omap1510, there will
 be a compile warning about the unused flags variable
 which is only used on 16xx and onwards.
 
 Signed-off-by: Felipe Balbi felipe.ba...@nokia.com
 ---
  arch/arm/plat-omap/gpio.c |3 +++
  1 files changed, 3 insertions(+), 0 deletions(-)
 
 diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c
 index 0484681..8c34b81 100644
 --- a/arch/arm/plat-omap/gpio.c
 +++ b/arch/arm/plat-omap/gpio.c
 @@ -1072,7 +1072,10 @@ static inline void _set_gpio_irqenable(struct 
 gpio_bank *bank, int gpio, int ena
   */
  static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
  {
 +#if defined(CONFIG_ARCH_OMAP16XX) || defined(CONFIG_ARCH_OMAP24XX) || \
 + defined(CONFIG_ARCH_OMAP34XX) || defined(CONFIG_ARCH_OMAP4)
   unsigned long flags;
 +#endif
  

Let's not add more ifdeffery to gpio.c.. How about
let's use uninitialized_var() instead? See the patch
below.

Regards,

Tony

From 62fc4a4ec588956979ef611da8753d8d1c02de8e Mon Sep 17 00:00:00 2001
From: Tony Lindgren t...@atomide.com
Date: Tue, 5 Jan 2010 12:17:06 -0800
Subject: [PATCH] omap: Remove uninitialized warning for gpio.c

Flags is not used on 15xx.

Signed-off-by: Tony Lindgren t...@atomide.com

diff --git a/arch/arm/plat-omap/gpio.c b/arch/arm/plat-omap/gpio.c
index 0484681..792be9f 100644
--- a/arch/arm/plat-omap/gpio.c
+++ b/arch/arm/plat-omap/gpio.c
@@ -1072,7 +1072,7 @@ static inline void _set_gpio_irqenable(struct gpio_bank *bank, int gpio, int ena
  */
 static int _set_gpio_wakeup(struct gpio_bank *bank, int gpio, int enable)
 {
-	unsigned long flags;
+	unsigned long uninitialized_var(flags);
 
 	switch (bank-method) {
 #ifdef CONFIG_ARCH_OMAP16XX


Re: [patch-v2.6.33-rc2+ 06/12] arm: omap: kill compile warning in irq.c

2010-01-05 Thread Tony Lindgren
* Felipe Balbi felipe.ba...@nokia.com [091229 14:54]:
 intc_context is only used when omap3 is to be built,
 so also put it under ifdef CONFIG_ARM_OMAP3 to avoid
 the compile warning.
 
 Signed-off-by: Felipe Balbi felipe.ba...@nokia.com
 ---
  arch/arm/mach-omap2/irq.c |2 ++
  1 files changed, 2 insertions(+), 0 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/irq.c b/arch/arm/mach-omap2/irq.c
 index e9bc782..d370052 100644
 --- a/arch/arm/mach-omap2/irq.c
 +++ b/arch/arm/mach-omap2/irq.c
 @@ -62,7 +62,9 @@ struct omap3_intc_regs {
   u32 mir[INTCPS_NR_MIR_REGS];
  };
  
 +#ifdef CONFIG_ARCH_OMAP3
  static struct omap3_intc_regs intc_context[ARRAY_SIZE(irq_banks)];
 +#endif
  
  /* INTC bank register get/set */

Can you please move the struct omap3_intc_regs intc_context into
to right above save_context function where we have the a block
already for ifdef CONFIG_ARCH_OMAP3?

That avoids adding a new ifdef block.

Regards,

Tony
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 0/5] V7/Cortex/omap34xx fixes for 2.6.33-rc1: DCC, kexec, atags

2010-01-05 Thread Tony Lindgren
* Paul Walmsley p...@pwsan.com [100105 09:52]:
 Hi, 
 
 On Tue, 29 Dec 2009, Tony Lindgren wrote:
 
  Also, what's the Cortex version on your v7? It's rev r2p3 on
  omap3430.
 
 Just a quick note - I think it is r1p3 on OMAP34xx ES3.1 and below, and 
 r1p7 on ES3.1.2.

Oops, sorry for posting wrong info. Yeah it's r1 not r2.

Regards,

Tony
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [rfc/rft/patch 4/9] arm: omap: io: kill compile warning

2010-01-05 Thread Paul Walmsley
Hi Felipe,

cc's trimmed,

On Tue, 1 Dec 2009, Felipe Balbi wrote:

 when building omap4 defconfigs, io.c will warn about unused
 _omap2_init_reprogram_sdrc, that's because that functio is
 only used ifndef CONFIG_ARCH_OMAP4, so add the missing
 ifndef CONFIG_ARCH_OMAP4 to _omap2_init_reprogram_sdrc
 definition.
 
 Signed-off-by: Felipe Balbi felipe.ba...@nokia.com
 ---
  arch/arm/mach-omap2/io.c |2 ++
  1 files changed, 2 insertions(+), 0 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
 index 6a4d8e4..a2be3ce 100644
 --- a/arch/arm/mach-omap2/io.c
 +++ b/arch/arm/mach-omap2/io.c
 @@ -278,6 +278,7 @@ void __init omap2_map_common_io(void)
   * -EINVAL if the dpll3_m2_ck cannot be found, 0 if called on OMAP2,
   * or passes along the return value of clk_set_rate().
   */
 +#ifndef CONFIG_ARCH_OMAP4
  static int __init _omap2_init_reprogram_sdrc(void)
  {
   struct clk *dpll3_m2_ck;
 @@ -301,6 +302,7 @@ static int __init _omap2_init_reprogram_sdrc(void)
  
   return v;
  }
 +#endif
  
  void __init omap2_init_common_hw(struct omap_sdrc_params *sdrc_cs0,
struct omap_sdrc_params *sdrc_cs1)
 -- 
 1.6.6.rc0
 

Let's do this a little differently - can you move this function into a 
mach-omap2/sdrc3xxx.c file, rename it to omap3_init_reprogram_sdrc(), set 
the file up in the Makefile to only build for OMAP3, and then in io.c, 
only call omap3_init_reprogram_sdrc() if cpu_is_omap34xx()?  This way, we 
avoid the ifdefs.

thanks

- Paul
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] AM35xx: Add clock support for new modules on AM35xx

2010-01-05 Thread Paul Walmsley
Hi Ranjith,

(please keep attribution lines in message replies, otherwise it becomes 
very difficult to keep track of who said what)

On Fri, 18 Dec 2009, Ranjith Lohithakshan wrote:

 On Fri, 18-Dec-09 7:12 AM +0530, Paul Walmsley wrote:
 
 +/* Clocks for AM35XX */
 +static struct clk emac_ick = {
 +.name   = emac_ick,
 +.ops= clkops_omap2_dflt,

  Shouldn't this clock use clkops_omap2_dflt_wait (or rather, some custom
  version that knows how to read the _ACK bits in IPSS_CLK_CTRL) and test
  CPGMAC_VBUSP_CLK_EN_ACK?  Same for the other IPSS VBUSP clocks?   (I
 guess
  VBUSP is a synonym for interface?)
 
 I will ad a custom clkops to address this. Do we need a find_companion
 to be defined?  The VBUSP clock ACK's do not depend on functional clocks
 and the functional clocks themselves don't have ant ACK or status bits.
 EMAC, VPFE amd MUSBOTG are initiators, but the their ACK bits are just
 for the target idle status.

I see four ACK bits marked as clock status bits in the TRM.  Are these 
interface clock status bits for initiator interfaces, or are they module 
target IdleAck bits?  If they are the former, then they are useless and 
there is no point waiting for these clocks.  If they are the latter, then 
yes, you'll need a find_companion, because the clock code must ensure that 
both the interface clock and main functional clock are both enabled before 
checking the module's target idle status, and the AM35xx IPSS does this in 
a completely different way than the OMAP35xx.  I guess the IPSS was just 
'bolted on' to the chip, rather than really integrated into the OMAP2 PRCM 
design.

 One of the issues on AM35xx is regarding the status indicator for new
 clocks. Here 1 indicates as enabled and 0 as not ready state, similar to
 24xx case but just opposite to 34xx clocks. And now we have a mix of
 these two on AM35xx. 

Wow, that's really craptacular.

 In omap2_cm_wait_idlest, I do not get a per clock granularity to
 decide what should be the status check for that particular
 clock. One of the approach I am thinking is to define a new clock
 flag (say INVERT_ENABLE_STATUS) and set it for the new AM35xx
 clocks. And in omap2_module_wait_ready I will do the cpu check and
 flag check on a per clock basis and determine the status that need
 to be checked and pass it to omap2_module_wait_ready to check what
 we want. omap2_module_wait_ready will not be doing any cpu checks as
 its done today. Let me know what you think.

(I guess you mean  omap2_cm_wait_module_ready() in the last two sentences?)

How about extending find_idlest to pass back whether to test against 0 or 
1?  The cpu code will then move into the find_idlest code, and you can 
just create a few new find_idlest functions for the AM35xx clocks.  Let's 
try to avoid creating new clock flags for this, I'm trying to move all of 
this module IDLEST testing code out of the clock code and into the hwmod 
code where it belongs.

  +static struct clk emac_fck = {
  +  .name   = emac_fck,
  +  .ops= clkops_omap2_dflt,
  +  .clkdm_name = core_l3_clkdm,
 
  Is this the correct clockdomain for this clock?  It seems unlikely that a
  50MHz functional clock would be in core_l3_clkdm.  Usually these are all
  interface clocks.  This applies for all the other functional clocks
 listed
  in this file also.
 
 Would it be OK if we just don't set clkdm_name. I am not sure whether we
 can map it to any existing OMAP3 clock domains that way

I'd like to see all new clocks added with a clockdomain, even if it is not 
a software-controllable clockdomain.  That makes it possible for others to 
understand what is really going on from a power management point of view.  
What is the clockdomain structure for these new clocks?

  +  .rate   = 5000,
 
  What's the parent of this clock?  Looking at TRM section 4.7.7.12 it
  appears that it gets this from an off-chip source, rmii_clk?  Guess
 that
  should probably be defined as the fixed source clock, and emac_fck should
  list rmii_clk as its parent?
 
  +  .enable_reg = OMAP343X_CTRL_REGADDR(AM35XX_CONTROL_IPSS_CLK_CTRL),
  +  .enable_bit = AM35XX_CPGMAC_FCLK_SHIFT,
  +  .recalc = omap2_clksel_recalc,
 
  This .recalc field is wrong, since there's no .clksel field defined.  If
  you define that parent, then this should be followparent_recalc.  The
  parent should have .flags = RATE_FIXED and no .recalc.
 
 Do we really need to define an rmii_ck? Can we make emac_fck itself as
 the root clock with no parent? Here is what I was thinking of. Let me
 know if you see any issues with this

Yes, please define the parent clocks appropriately.  They will probably be 
in different clockdomains from the downstream clocks.  Where does rmii_clk 
come from?  Is this an off-chip clock?  Is this coming from one of the 
on-chip DPLLs?  

 static struct clk emac_fck = {
 .name   = emac_fck,
 .ops= clkops_omap2_dflt,
 .flags  = RATE_FIXED,
 .rate   = 5000,
 

[PATCH 00/10] Series short description

2010-01-05 Thread Paul Walmsley

OMAP2/3/4 clockdomains/powerdomains: split shared dependencies and clean up

Hi,

This series moves wakeup and sleep dependencies on the OMAP2/3 chips from
the powerdomain layer to the clockdomain layer, where they belong.  It also
adds usecounting for clockdomain dependency usecounting, which fixes the
obvious problem that occurs when several different pieces of code need
to add clockdomain dependencies, and then one removes the dependency.
(To add usecounting, the dependencies that were shared between
clockdomains have been split into separate records.)  These changes should
prepare the clockdomain code for OMAP4 clockdomain dependencies.

The series also does some cleanup.  struct powerdomain is packed, the
dead function pwrdm_clk_state_switch() is removed, documentation is improved,
the nonexistent MDM clockdomain is removed from OMAP2420.

Boot-tested on N800, 2430SDP, and OMAP3 Beagle.  Compile-tested with
omap_osk_5912_defconfig.

Applies on the 'for_2.6.34' branch of git://git.pwsan.com/linux-2.6


- Paul

---

   textdata bss dec hex filename
3622921  198528  102984 3924433  3be1d1 vmlinux.beagle.orig
3623325  199168  102984 3925477  3be5e5 vmlinux.beagle


Paul Walmsley (10):
  OMAP2/3 clkdm/pwrdm: move wkdep/sleepdep handling from pwrdm to clkdm
  OMAP2/3 clockdomains: split shared structures so usecounting works
  OMAP2 clockdomain: modem clockdomain is only present on OMAP2430
  OMAP clockdomain/powerdomain: remove runtime register/unregister
  OMAP clockdomains: add usecounting for wakeup and sleep dependencies
  OMAP2/3/4 clockdomain: add clkdm_clear_all_{wkdep,sleepdep}s()
  OMAP powerdomain/PM: use symbolic constants for the max number of power 
states
  OMAP powerdomain: rearrange struct powerdomain to save some memory
  OMAP powerdomain: remove pwrdm_clk_state_switch
  OMAP clockdomain/powerdomain: improve documentation


 arch/arm/mach-omap2/clockdomain.c |  691 +++--
 arch/arm/mach-omap2/clockdomains.h|  474 +
 arch/arm/mach-omap2/io.c  |2 
 arch/arm/mach-omap2/omap_hwmod.c  |   10 
 arch/arm/mach-omap2/pm34xx.c  |   10 
 arch/arm/mach-omap2/powerdomain.c |  570 -
 arch/arm/mach-omap2/powerdomains.h|   88 ---
 arch/arm/mach-omap2/powerdomains24xx.h|   87 ---
 arch/arm/mach-omap2/powerdomains34xx.h|  145 -
 arch/arm/mach-omap2/prcm.c|   12 
 arch/arm/plat-omap/include/plat/clockdomain.h |   99 ++--
 arch/arm/plat-omap/include/plat/powerdomain.h |   78 +--
 arch/arm/plat-omap/include/plat/prcm.h|8 
 13 files changed, 1241 insertions(+), 1033 deletions(-)

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 02/10] OMAP2/3 clockdomains: split shared structures so usecounting works

2010-01-05 Thread Paul Walmsley
Previously some of the clockdomain wakeup/sleep dependency structures
were shared between several domains.  For the subsequent wakeup and sleep
dependency usecounting patch to work, these can no longer be
shared.  This patch splits the shared structures apart.

Signed-off-by: Paul Walmsley p...@pwsan.com
---
 arch/arm/mach-omap2/clockdomains.h |  163 
 1 files changed, 127 insertions(+), 36 deletions(-)

diff --git a/arch/arm/mach-omap2/clockdomains.h 
b/arch/arm/mach-omap2/clockdomains.h
index c7cc0e7..894973c 100644
--- a/arch/arm/mach-omap2/clockdomains.h
+++ b/arch/arm/mach-omap2/clockdomains.h
@@ -52,6 +52,8 @@
  * 2420/2430 PM_WKDEP_GFX: CORE, MPU, WKUP
  * 3430ES1 PM_WKDEP_GFX: adds IVA2, removes CORE
  * 3430ES2 PM_WKDEP_SGX: adds IVA2, removes CORE
+ * These can share data since they will never be present simultaneously
+ * on the same device.
  */
 static struct clkdm_dep gfx_sgx_wkdeps[] = {
{
@@ -86,11 +88,32 @@ static struct clkdm_dep gfx_sgx_wkdeps[] = {
 
 /* Wakeup dependency source arrays */
 
+/* 2420/2430 PM_WKDEP_DSP: CORE, MPU, WKUP */
+static struct clkdm_dep dsp_24xx_wkdeps[] = {
+   {
+   .clkdm_name = core_l3_clkdm,
+   .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
+   },
+   {
+   .clkdm_name = core_l4_clkdm,
+   .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
+   },
+   {
+   .clkdm_name = mpu_clkdm,
+   .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
+   },
+   {
+   .clkdm_name = wkup_clkdm,
+   .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
+   },
+   { NULL },
+};
+
 /*
- * 2420/2430 PM_WKDEP_DSP: CORE, MPU, WKUP
- * 2420/2430 PM_WKDEP_MDM: same as DSP
+ * 2420/2430 PM_WKDEP_MDM: CORE, MPU, WKUP
+ * XXX This is probably 2430-only; 2420 did not have a stacked modem config.
  */
-static struct clkdm_dep dsp_mdm_24xx_wkdeps[] = {
+static struct clkdm_dep mdm_24xx_wkdeps[] = {
{
.clkdm_name = core_l3_clkdm,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
@@ -172,11 +195,8 @@ static struct clkdm_dep core_24xx_wkdeps[] = {
 
 #ifdef CONFIG_ARCH_OMAP34XX
 
-/*
- * 3430: PM_WKDEP_{PER,USBHOST}: CORE, IVA2, MPU, WKUP
- * (USBHOST is ES2 only)
- */
-static struct clkdm_dep per_usbhost_wkdeps[] = {
+/* 3430: PM_WKDEP_PER: CORE, IVA2, MPU, WKUP */
+static struct clkdm_dep per_wkdeps[] = {
{
.clkdm_name = core_l3_clkdm,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
@@ -200,9 +220,32 @@ static struct clkdm_dep per_usbhost_wkdeps[] = {
{ NULL },
 };
 
-/*
- * 3430 PM_WKDEP_MPU: CORE, IVA2, DSS, PER
- */
+/* 3430ES2: PM_WKDEP_USBHOST: CORE, IVA2, MPU, WKUP */
+static struct clkdm_dep usbhost_wkdeps[] = {
+   {
+   .clkdm_name = core_l3_clkdm,
+   .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
+   },
+   {
+   .clkdm_name = core_l4_clkdm,
+   .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
+   },
+   {
+   .clkdm_name = iva2_clkdm,
+   .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
+   },
+   {
+   .clkdm_name = mpu_clkdm,
+   .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
+   },
+   {
+   .clkdm_name = wkup_clkdm,
+   .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
+   },
+   { NULL },
+};
+
+/* 3430 PM_WKDEP_MPU: CORE, IVA2, DSS, PER */
 static struct clkdm_dep mpu_34xx_wkdeps[] = {
{
.clkdm_name = core_l3_clkdm,
@@ -227,9 +270,7 @@ static struct clkdm_dep mpu_34xx_wkdeps[] = {
{ NULL },
 };
 
-/*
- * 3430 PM_WKDEP_IVA2: CORE, MPU, WKUP, DSS, PER
- */
+/* 3430 PM_WKDEP_IVA2: CORE, MPU, WKUP, DSS, PER */
 static struct clkdm_dep iva2_wkdeps[] = {
{
.clkdm_name = core_l3_clkdm,
@@ -259,8 +300,25 @@ static struct clkdm_dep iva2_wkdeps[] = {
 };
 
 
-/* 3430 PM_WKDEP_{CAM,DSS}: IVA2, MPU, WKUP */
-static struct clkdm_dep cam_dss_wkdeps[] = {
+/* 3430 PM_WKDEP_CAM: IVA2, MPU, WKUP */
+static struct clkdm_dep cam_wkdeps[] = {
+   {
+   .clkdm_name = iva2_clkdm,
+   .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
+   },
+   {
+   .clkdm_name = mpu_clkdm,
+   .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
+   },
+   {
+   .clkdm_name = wkup_clkdm,
+   .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
+   },
+   { NULL },
+};
+
+/* 3430 PM_WKDEP_DSS: IVA2, MPU, WKUP */
+static struct clkdm_dep dss_wkdeps[] = {
{
.clkdm_name = iva2_clkdm,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430)
@@ -288,11 +346,8 @@ static struct clkdm_dep neon_wkdeps[] = {
 
 /* Sleep dependency source arrays for 34xx-specific clkdms - 34XX only */
 
-/*
- * 3430: CM_SLEEPDEP_{DSS,PER}: MPU, IVA
- * 3430ES2: CM_SLEEPDEP_USBHOST: MPU, 

[PATCH 09/10] OMAP powerdomain: remove pwrdm_clk_state_switch

2010-01-05 Thread Paul Walmsley
Nothing calls pwrdm_clk_state_switch(), and the function that seems to be
its ideal use case calls pwrdm_clkdm_state_switch(clk-clkdm), so remove it.

Signed-off-by: Paul Walmsley p...@pwsan.com
Cc: Tero Kristo tero.kri...@nokia.com
Cc: Kevin Hilman khil...@deeprootsystems.com
---
 arch/arm/mach-omap2/powerdomain.c |6 --
 1 files changed, 0 insertions(+), 6 deletions(-)

diff --git a/arch/arm/mach-omap2/powerdomain.c 
b/arch/arm/mach-omap2/powerdomain.c
index df6446a..9d4b8f5 100644
--- a/arch/arm/mach-omap2/powerdomain.c
+++ b/arch/arm/mach-omap2/powerdomain.c
@@ -928,12 +928,6 @@ int pwrdm_clkdm_state_switch(struct clockdomain *clkdm)
 
return -EINVAL;
 }
-int pwrdm_clk_state_switch(struct clk *clk)
-{
-   if (clk != NULL  clk-clkdm != NULL)
-   return pwrdm_clkdm_state_switch(clk-clkdm);
-   return -EINVAL;
-}
 
 int pwrdm_pre_transition(void)
 {


--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 03/10] OMAP2 clockdomain: modem clockdomain is only present on OMAP2430

2010-01-05 Thread Paul Walmsley
For some reason, previously, we included the MDM clockdomain on all 24xx,
but the stacked die-on-die modem configuration (chassis mode) is only
available on OMAP2430.

Signed-off-by: Paul Walmsley p...@pwsan.com
---
 arch/arm/mach-omap2/clockdomains.h |   49 
 1 files changed, 27 insertions(+), 22 deletions(-)

diff --git a/arch/arm/mach-omap2/clockdomains.h 
b/arch/arm/mach-omap2/clockdomains.h
index 894973c..1df12c7 100644
--- a/arch/arm/mach-omap2/clockdomains.h
+++ b/arch/arm/mach-omap2/clockdomains.h
@@ -110,10 +110,10 @@ static struct clkdm_dep dsp_24xx_wkdeps[] = {
 };
 
 /*
- * 2420/2430 PM_WKDEP_MDM: CORE, MPU, WKUP
- * XXX This is probably 2430-only; 2420 did not have a stacked modem config.
+ * 2420 PM_WKDEP_MPU: CORE, DSP, WKUP
+ * 2430 adds MDM
  */
-static struct clkdm_dep mdm_24xx_wkdeps[] = {
+static struct clkdm_dep mpu_24xx_wkdeps[] = {
{
.clkdm_name = core_l3_clkdm,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
@@ -123,31 +123,35 @@ static struct clkdm_dep mdm_24xx_wkdeps[] = {
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
},
{
-   .clkdm_name = mpu_clkdm,
+   .clkdm_name = dsp_clkdm,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
},
{
.clkdm_name = wkup_clkdm,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
},
+   {
+   .clkdm_name = mdm_clkdm,
+   .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430)
+   },
{ NULL },
 };
 
 /*
- * 2420 PM_WKDEP_MPU: CORE, DSP, WKUP
+ * 2420 PM_WKDEP_CORE: DSP, GFX, MPU, WKUP
  * 2430 adds MDM
  */
-static struct clkdm_dep mpu_24xx_wkdeps[] = {
+static struct clkdm_dep core_24xx_wkdeps[] = {
{
-   .clkdm_name = core_l3_clkdm,
+   .clkdm_name = dsp_clkdm,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
},
{
-   .clkdm_name = core_l4_clkdm,
+   .clkdm_name = gfx_clkdm,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
},
{
-   .clkdm_name = dsp_clkdm,
+   .clkdm_name = mpu_clkdm,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
},
{
@@ -161,17 +165,21 @@ static struct clkdm_dep mpu_24xx_wkdeps[] = {
{ NULL },
 };
 
-/*
- * 2420 PM_WKDEP_CORE: DSP, GFX, MPU, WKUP
- * 2430 adds MDM
- */
-static struct clkdm_dep core_24xx_wkdeps[] = {
+#endif
+
+
+/* 2430-specific possible wakeup dependencies */
+
+#ifdef CONFIG_ARCH_OMAP2430
+
+/* 2430 PM_WKDEP_MDM: CORE, MPU, WKUP */
+static struct clkdm_dep mdm_2430_wkdeps[] = {
{
-   .clkdm_name = dsp_clkdm,
+   .clkdm_name = core_l3_clkdm,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
},
{
-   .clkdm_name = gfx_clkdm,
+   .clkdm_name = core_l4_clkdm,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
},
{
@@ -182,14 +190,11 @@ static struct clkdm_dep core_24xx_wkdeps[] = {
.clkdm_name = wkup_clkdm,
.omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP24XX)
},
-   {
-   .clkdm_name = mdm_clkdm,
-   .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP2430)
-   },
{ NULL },
 };
 
-#endif
+#endif /* CONFIG_ARCH_OMAP2430 */
+
 
 /* 34XX-specific possible dependencies */
 
@@ -549,7 +554,7 @@ static struct clockdomain mdm_clkdm = {
.clkstctrl_reg  = OMAP2430_CM_REGADDR(OMAP2430_MDM_MOD,
 OMAP2_CM_CLKSTCTRL),
.dep_bit= OMAP2430_PM_WKDEP_MPU_EN_MDM_SHIFT,
-   .wkdep_srcs = mdm_24xx_wkdeps,
+   .wkdep_srcs = mdm_2430_wkdeps,
.clktrctrl_mask = OMAP2430_AUTOSTATE_MDM_MASK,
.omap_chip  = OMAP_CHIP_INIT(CHIP_IS_OMAP2430),
 };


--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 10/10] OMAP clockdomain/powerdomain: improve documentation

2010-01-05 Thread Paul Walmsley
This patch only affects documentation; no functional changes are
included.

Clean up comments in the current clockdomain, powerdomain code and
header files.  This mostly involves conversion to kerneldoc format,
although some clarifications are also included.

Signed-off-by: Paul Walmsley p...@pwsan.com
---
 arch/arm/mach-omap2/clockdomain.c |   65 ++-
 arch/arm/mach-omap2/powerdomain.c |  149 +
 arch/arm/plat-omap/include/plat/clockdomain.h |   87 +++
 arch/arm/plat-omap/include/plat/powerdomain.h |   40 +++
 4 files changed, 167 insertions(+), 174 deletions(-)

diff --git a/arch/arm/mach-omap2/clockdomain.c 
b/arch/arm/mach-omap2/clockdomain.c
index f44d9ea..2f68c10 100644
--- a/arch/arm/mach-omap2/clockdomain.c
+++ b/arch/arm/mach-omap2/clockdomain.c
@@ -351,10 +351,10 @@ static void _init_sleepdep_usecount(struct clockdomain 
*clkdm)
  * @init_autodeps: optional pointer to an array of autodeps to register
  *
  * Set up internal state.  If a pointer to an array of clockdomains
- * was supplied, loop through the list of clockdomains, register all
- * that are available on the current platform. Similarly, if a pointer
- * to an array of clockdomain autodependencies was provided, register
- * those.  No return value.
+ * @clkdms was supplied, loop through the list of clockdomains,
+ * register all that are available on the current platform. Similarly,
+ * if a pointer to an array of clockdomain autodependencies
+ * @init_autodeps was provided, register those.  No return value.
  */
 void clkdm_init(struct clockdomain **clkdms,
struct clkdm_autodep *init_autodeps)
@@ -386,8 +386,8 @@ void clkdm_init(struct clockdomain **clkdms,
  * clkdm_lookup - look up a clockdomain by name, return a pointer
  * @name: name of clockdomain
  *
- * Find a registered clockdomain by its name.  Returns a pointer to the
- * struct clockdomain if found, or NULL otherwise.
+ * Find a registered clockdomain by its name @name.  Returns a pointer
+ * to the struct clockdomain if found, or NULL otherwise.
  */
 struct clockdomain *clkdm_lookup(const char *name)
 {
@@ -412,8 +412,8 @@ struct clockdomain *clkdm_lookup(const char *name)
  * clkdm_for_each - call function on each registered clockdomain
  * @fn: callback function *
  *
- * Call the supplied function for each registered clockdomain.
- * The callback function can return anything but 0 to bail
+ * Call the supplied function @fn for each registered clockdomain.
+ * The callback function @fn can return anything but 0 to bail
  * out early from the iterator.  The callback function is called with
  * the clkdm_mutex held, so no clockdomain structure manipulation
  * functions should be called from the callback, although hardware
@@ -446,7 +446,7 @@ int clkdm_for_each(int (*fn)(struct clockdomain *clkdm, 
void *user),
  * @clkdm: struct clockdomain *
  *
  * Return a pointer to the struct powerdomain that the specified clockdomain
- * 'clkdm' exists in, or returns NULL if clkdm argument is NULL.
+ * @clkdm exists in, or returns NULL if @clkdm is NULL.
  */
 struct powerdomain *clkdm_get_pwrdm(struct clockdomain *clkdm)
 {
@@ -759,10 +759,10 @@ int clkdm_clear_all_sleepdeps(struct clockdomain *clkdm)
 
 /**
  * omap2_clkdm_clktrctrl_read - read the clkdm's current state transition mode
- * @clk: struct clk * of a clockdomain
+ * @clkdm: struct clkdm * of a clockdomain
  *
- * Return the clockdomain's current state transition mode from the
- * corresponding domain OMAP2_CM_CLKSTCTRL register.   Returns -EINVAL if clk
+ * Return the clockdomain @clkdm current state transition mode from the
+ * corresponding domain CM_CLKSTCTRL register. Returns -EINVAL if @clkdm
  * is NULL or the current mode upon success.
  */
 static int omap2_clkdm_clktrctrl_read(struct clockdomain *clkdm)
@@ -784,7 +784,7 @@ static int omap2_clkdm_clktrctrl_read(struct clockdomain 
*clkdm)
  * @clkdm: struct clockdomain *
  *
  * Instruct the CM to force a sleep transition on the specified
- * clockdomain 'clkdm'.  Returns -EINVAL if clk is NULL or if
+ * clockdomain @clkdm.  Returns -EINVAL if @clkdm is NULL or if
  * clockdomain does not support software-initiated sleep; 0 upon
  * success.
  */
@@ -828,7 +828,7 @@ int omap2_clkdm_sleep(struct clockdomain *clkdm)
  * @clkdm: struct clockdomain *
  *
  * Instruct the CM to force a wakeup transition on the specified
- * clockdomain 'clkdm'.  Returns -EINVAL if clkdm is NULL or if the
+ * clockdomain @clkdm.  Returns -EINVAL if @clkdm is NULL or if the
  * clockdomain does not support software-controlled wakeup; 0 upon
  * success.
  */
@@ -871,7 +871,7 @@ int omap2_clkdm_wakeup(struct clockdomain *clkdm)
  * omap2_clkdm_allow_idle - enable hwsup idle transitions for clkdm
  * @clkdm: struct clockdomain *
  *
- * Allow the hardware to automatically switch the clockdomain into
+ * Allow the hardware to automatically switch the clockdomain @clkdm into
  * active or idle 

[PATCH 08/10] OMAP powerdomain: rearrange struct powerdomain to save some memory

2010-01-05 Thread Paul Walmsley
This patch rearranges the order of structure members in struct powerdomain
to avoid wasting memory due to alignment restrictions.

Signed-off-by: Paul Walmsley p...@pwsan.com
---
 arch/arm/plat-omap/include/plat/powerdomain.h |6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/arch/arm/plat-omap/include/plat/powerdomain.h 
b/arch/arm/plat-omap/include/plat/powerdomain.h
index c590e2f..87e13f8 100644
--- a/arch/arm/plat-omap/include/plat/powerdomain.h
+++ b/arch/arm/plat-omap/include/plat/powerdomain.h
@@ -73,12 +73,12 @@ struct powerdomain {
/* Powerdomain name */
const char *name;
 
-   /* the address offset from CM_BASE/PRM_BASE */
-   const s16 prcm_offs;
-
/* Used to represent the OMAP chip types containing this pwrdm */
const struct omap_chip_id omap_chip;
 
+   /* the address offset from CM_BASE/PRM_BASE */
+   const s16 prcm_offs;
+
/* Possible powerdomain power states */
const u8 pwrsts;
 


--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 07/10] OMAP powerdomain/PM: use symbolic constants for the max number of power states

2010-01-05 Thread Paul Walmsley
Replace some bare constants with symbolic constants.

Signed-off-by: Paul Walmsley p...@pwsan.com
Cc: Kevin Hilman khil...@deeprootsystems.com
---
 arch/arm/mach-omap2/powerdomain.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/powerdomain.c 
b/arch/arm/mach-omap2/powerdomain.c
index 411361f..df6446a 100644
--- a/arch/arm/mach-omap2/powerdomain.c
+++ b/arch/arm/mach-omap2/powerdomain.c
@@ -122,7 +122,7 @@ static int _pwrdm_register(struct powerdomain *pwrdm)
list_add(pwrdm-node, pwrdm_list);
 
/* Initialize the powerdomain's state counter */
-   for (i = 0; i  4; i++)
+   for (i = 0; i  PWRDM_MAX_PWRSTS; i++)
pwrdm-state_counter[i] = 0;
 
pwrdm_wait_transition(pwrdm);


--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 06/10] OMAP2/3/4 clockdomain: add clkdm_clear_all_{wkdep, sleepdep}s()

2010-01-05 Thread Paul Walmsley
Add clkdm_clear_all_wkdeps() and clkdm_clear_all_sleepdeps().  These functions
provide a fast way for code to clear all hardware clockdomain dependencies,
since accesses to these registers can be quite slow.  These functions
are currently targeted for use by PM branch code.

Signed-off-by: Paul Walmsley p...@pwsan.com
Cc: Kevin Hilman khil...@deeprootsystems.com
---
 arch/arm/mach-omap2/clockdomain.c |   68 +
 arch/arm/plat-omap/include/plat/clockdomain.h |2 +
 2 files changed, 70 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/clockdomain.c 
b/arch/arm/mach-omap2/clockdomain.c
index d039df7..f44d9ea 100644
--- a/arch/arm/mach-omap2/clockdomain.c
+++ b/arch/arm/mach-omap2/clockdomain.c
@@ -565,6 +565,38 @@ int clkdm_read_wkdep(struct clockdomain *clkdm1, struct 
clockdomain *clkdm2)
 }
 
 /**
+ * clkdm_clear_all_wkdeps - remove all wakeup dependencies from target clkdm
+ * @clkdm: struct clockdomain * to remove all wakeup dependencies from
+ *
+ * Remove all inter-clockdomain wakeup dependencies that could cause
+ * @clkdm to wake.  Intended to be used during boot to initialize the
+ * PRCM to a known state, after all clockdomains are put into swsup idle
+ * and woken up.  Returns -EINVAL if @clkdm pointer is invalid, or
+ * 0 upon success.
+ */
+int clkdm_clear_all_wkdeps(struct clockdomain *clkdm)
+{
+   struct clkdm_dep *cd;
+   u32 mask = 0;
+
+   if (!clkdm)
+   return -EINVAL;
+
+   for (cd = clkdm-wkdep_srcs; cd-clkdm_name; cd++) {
+   if (!omap_chip_is(cd-omap_chip))
+   continue;
+
+   /* PRM accesses are slow, so minimize them */
+   mask |= 1  cd-clkdm-dep_bit;
+   atomic_set(cd-wkdep_usecount, 0);
+   }
+
+   prm_clear_mod_reg_bits(mask, clkdm-pwrdm.ptr-prcm_offs, PM_WKDEP);
+
+   return 0;
+}
+
+/**
  * clkdm_add_sleepdep - add a sleep dependency from clkdm2 to clkdm1
  * @clkdm1: prevent this struct clockdomain * from sleeping (dependent)
  * @clkdm2: when this struct clockdomain * is active (source)
@@ -690,6 +722,42 @@ int clkdm_read_sleepdep(struct clockdomain *clkdm1, struct 
clockdomain *clkdm2)
 }
 
 /**
+ * clkdm_clear_all_sleepdeps - remove all sleep dependencies from target clkdm
+ * @clkdm: struct clockdomain * to remove all sleep dependencies from
+ *
+ * Remove all inter-clockdomain sleep dependencies that could prevent
+ * @clkdm from idling. Intended to be used during boot to initialize the
+ * PRCM to a known state, after all clockdomains are put into swsup idle
+ * and woken up.  Returns -EINVAL if @clkdm pointer is invalid, or
+ * 0 upon success.
+ */
+int clkdm_clear_all_sleepdeps(struct clockdomain *clkdm)
+{
+   struct clkdm_dep *cd;
+   u32 mask = 0;
+
+   if (!cpu_is_omap34xx())
+   return -EINVAL;
+
+   if (!clkdm)
+   return -EINVAL;
+
+   for (cd = clkdm-sleepdep_srcs; cd-clkdm_name; cd++) {
+   if (!omap_chip_is(cd-omap_chip))
+   continue;
+
+   /* PRM accesses are slow, so minimize them */
+   mask |= 1  cd-clkdm-dep_bit;
+   atomic_set(cd-sleepdep_usecount, 0);
+   }
+
+   prm_clear_mod_reg_bits(mask, clkdm-pwrdm.ptr-prcm_offs,
+  OMAP3430_CM_SLEEPDEP);
+
+   return 0;
+}
+
+/**
  * omap2_clkdm_clktrctrl_read - read the clkdm's current state transition mode
  * @clk: struct clk * of a clockdomain
  *
diff --git a/arch/arm/plat-omap/include/plat/clockdomain.h 
b/arch/arm/plat-omap/include/plat/clockdomain.h
index 192cc95..45b5deb 100644
--- a/arch/arm/plat-omap/include/plat/clockdomain.h
+++ b/arch/arm/plat-omap/include/plat/clockdomain.h
@@ -132,9 +132,11 @@ struct powerdomain *clkdm_get_pwrdm(struct clockdomain 
*clkdm);
 int clkdm_add_wkdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2);
 int clkdm_del_wkdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2);
 int clkdm_read_wkdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2);
+int clkdm_clear_all_wkdeps(struct clockdomain *clkdm);
 int clkdm_add_sleepdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2);
 int clkdm_del_sleepdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2);
 int clkdm_read_sleepdep(struct clockdomain *clkdm1, struct clockdomain 
*clkdm2);
+int clkdm_clear_all_sleepdeps(struct clockdomain *clkdm);
 
 void omap2_clkdm_allow_idle(struct clockdomain *clkdm);
 void omap2_clkdm_deny_idle(struct clockdomain *clkdm);


--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 05/10] OMAP clockdomains: add usecounting for wakeup and sleep dependencies

2010-01-05 Thread Paul Walmsley
Add usecounting for wakeup and sleep dependencies.  In the current
situation, if several functions add dependencies on the same clockdomains,
when the first dependency removal function is called, the dependency will
be incorrectly removed from the hardware.

Signed-off-by: Paul Walmsley p...@pwsan.com
---
 arch/arm/mach-omap2/clockdomain.c |  150 ++---
 arch/arm/plat-omap/include/plat/clockdomain.h |6 +
 2 files changed, 135 insertions(+), 21 deletions(-)

diff --git a/arch/arm/mach-omap2/clockdomain.c 
b/arch/arm/mach-omap2/clockdomain.c
index 2af9996..d039df7 100644
--- a/arch/arm/mach-omap2/clockdomain.c
+++ b/arch/arm/mach-omap2/clockdomain.c
@@ -113,7 +113,6 @@ static struct clkdm_dep *_clkdm_deps_lookup(struct 
clockdomain *clkdm,
return ERR_PTR(-EINVAL);
 
for (cd = deps; cd-clkdm_name; cd++) {
-
if (!omap_chip_is(cd-omap_chip))
continue;
 
@@ -122,7 +121,6 @@ static struct clkdm_dep *_clkdm_deps_lookup(struct 
clockdomain *clkdm,
 
if (cd-clkdm == clkdm)
break;
-
}
 
if (!cd-clkdm_name)
@@ -254,6 +252,96 @@ static void _omap2_clkdm_set_hwsup(struct clockdomain 
*clkdm, int enable)
 
 }
 
+/**
+ * _init_wkdep_usecount - initialize wkdep usecounts to match hardware
+ * @clkdm: clockdomain to initialize wkdep usecounts
+ *
+ * Initialize the wakeup dependency usecount variables for clockdomain @clkdm.
+ * If a wakeup dependency is present in the hardware, the usecount will be
+ * set to 1; otherwise, it will be set to 0.  Software should clear all
+ * software wakeup dependencies prior to calling this function if it wishes
+ * to ensure that all usecounts start at 0.  No return value.
+ */
+static void _init_wkdep_usecount(struct clockdomain *clkdm)
+{
+   u32 v;
+   struct clkdm_dep *cd;
+
+   if (!clkdm-wkdep_srcs)
+   return;
+
+   for (cd = clkdm-wkdep_srcs; cd-clkdm_name; cd++) {
+   if (!omap_chip_is(cd-omap_chip))
+   continue;
+
+   if (!cd-clkdm  cd-clkdm_name)
+   cd-clkdm = _clkdm_lookup(cd-clkdm_name);
+
+   if (!cd-clkdm) {
+   WARN(!cd-clkdm, clockdomain: %s: wkdep clkdm %s not 
+found\n, clkdm-name, cd-clkdm_name);
+   continue;
+   }
+
+   v = prm_read_mod_bits_shift(clkdm-pwrdm.ptr-prcm_offs,
+   PM_WKDEP,
+   (1  cd-clkdm-dep_bit));
+
+   if (v)
+   pr_debug(clockdomain: %s: wakeup dependency already 
+set to wake up when %s wakes\n,
+clkdm-name, cd-clkdm-name);
+
+   atomic_set(cd-wkdep_usecount, (v) ? 1 : 0);
+   }
+}
+
+/**
+ * _init_sleepdep_usecount - initialize sleepdep usecounts to match hardware
+ * @clkdm: clockdomain to initialize sleepdep usecounts
+ *
+ * Initialize the sleep dependency usecount variables for clockdomain @clkdm.
+ * If a sleep dependency is present in the hardware, the usecount will be
+ * set to 1; otherwise, it will be set to 0.  Software should clear all
+ * software sleep dependencies prior to calling this function if it wishes
+ * to ensure that all usecounts start at 0.  No return value.
+ */
+static void _init_sleepdep_usecount(struct clockdomain *clkdm)
+{
+   u32 v;
+   struct clkdm_dep *cd;
+
+   if (!cpu_is_omap34xx())
+   return;
+
+   if (!clkdm-sleepdep_srcs)
+   return;
+
+   for (cd = clkdm-sleepdep_srcs; cd-clkdm_name; cd++) {
+   if (!omap_chip_is(cd-omap_chip))
+   continue;
+
+   if (!cd-clkdm  cd-clkdm_name)
+   cd-clkdm = _clkdm_lookup(cd-clkdm_name);
+
+   if (!cd-clkdm) {
+   WARN(!cd-clkdm, clockdomain: %s: sleepdep clkdm %s 
+not found\n, clkdm-name, cd-clkdm_name);
+   continue;
+   }
+
+   v = prm_read_mod_bits_shift(clkdm-pwrdm.ptr-prcm_offs,
+   OMAP3430_CM_SLEEPDEP,
+   (1  cd-clkdm-dep_bit));
+
+   if (v)
+   pr_debug(clockdomain: %s: sleep dependency already 
+set to prevent from idling until %s 
+idles\n, clkdm-name, cd-clkdm-name);
+
+   atomic_set(cd-sleepdep_usecount, (v) ? 1 : 0);
+   }
+};
 
 /* Public functions */
 
@@ -272,6 +360,7 @@ void clkdm_init(struct clockdomain **clkdms,
struct clkdm_autodep *init_autodeps)
 {
struct clockdomain **c = NULL;
+   struct clockdomain *clkdm;
struct clkdm_autodep *autodep = NULL;
 
if (clkdms)
@@ -282,6 

Re: [PATCH] ARM: OMAP4 clock domains : Add the missing Clock Domain Structure

2010-01-05 Thread Paul Walmsley
On Wed, 30 Dec 2009, Abhijit Pagare wrote:

 One of the clock domains was missing from the auto-generated file.
 It has been added here.
 
 Signed-off-by: Abhijit Pagare abhijitpag...@ti.com
 Cc: Paul Walmsley p...@pwsan.com

Thanks, queued for 2.6.34.

- Paul

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] ARM: OMAP4 clock framework: Remove the checks preventing OMAP4 clockdomain validation

2010-01-05 Thread Paul Walmsley
On Wed, 30 Dec 2009, Abhijit Pagare wrote:

 The clockdomain related code being in place, it is not necessary to have
 some part of the clock code commented out. This would help the validation of
 the clockdomain functions using the clock level interfaces.
 
 Signed-off-by: Abhijit Pagare abhijitpag...@ti.com
 Cc: Paul Walmsley p...@pwsan.com

Thanks, queued for 2.6.34.


- Paul
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH 1/1] ARM: OMAP4: PM: Add check for avoiding dependency related update.

2010-01-05 Thread Paul Walmsley
On Wed, 30 Dec 2009, Pagare, Abhijit wrote:

  -Original Message-
  From: Paul Walmsley [mailto:p...@pwsan.com]
  Sent: Wednesday, December 30, 2009 2:02 PM
 
  But really, I'd rather not apply this patch.  The best way forward is to
  apply a patch that adds the OMAP4 wakeup and sleep dependencies
  themselves.  Have you had a chance to look at the series that I sent you a
  few weeks ago off-list that reorganizes the wakeup and sleep dependencies
  to determine if it is adequate for you to add the OMAP4 wakeup/sleep
  dependencies afterwards?
 
 I had a look at the dependency patches that you had sent to me earlier 
 and it seems feasible to add the OMAP4 related dependency data on top of 
 those patches. A small change exists but can be taken care of.

Great, I've just cleaned those up, rebased them, and posted them to the 
list.  If you prefer, you can also get from the 
'move_wkdeps_sleepdeps_to_clkdm' branch at git://git.pwsan.com/linux-2.6


- Paul
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 00/10] OMAP2/3/4 clockdomains/powerdomains: split shared dependencies and clean up

2010-01-05 Thread Paul Walmsley

The above is what the subject line 'should' have been...


- Paul
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


problem with n810 boot up

2010-01-05 Thread Francisco Alecrim
Luke-Jr wrote:

 Tested on Nokia N810 in Linux-OMAP tree. Mainline is not bootable yet.



Hi Luke,

I'm with some problems to boot-up latest l-o(commit
abb74381235a05f15a3b07e9e3831034942c67fb) with n810. The error message
can be found below and full boot output in the end of email.

dsme: No correct bootreason found, entering the malfunction state

I'm not sure if it's related with kernel or rootfs. I tried different
distros(Maemo,Angstrom,Mamona and Mer) and I got the same problem using
this kernel.

What rootfs do you use? Did you change initfs?

Any idea/help?

Thanks in advance,
Alecrim.

PS: 2.6.30-rc8 is the last kernel version that I got working
(http://www.natisbad.org/N810/index.html)



Uncompressing
Linux..
done, booting the kernel.
[0.00] Linux version 2.6.33-rc2-06901-gabb7438 (alec...@alecrim)
(gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72) ) #53 Tue Jan 5
18:35:16 AMT 2010
[0.00] CPU: ARMv6-compatible processor [4107b362] revision 2
(ARMv6TEJ), cr=00c5387f
[0.00] CPU: VIPT aliasing data cache, VIPT aliasing instruction
cache
[0.00] Machine: Nokia N810
[0.00] Ignoring unrecognised tag 0x414f4d50
[0.00] Memory policy: ECC disabled, Data cache writeback
[0.00] OMAP2420
[0.00]
[0.00] SRAM: Mapped pa 0x4020 to va 0xfe40 size: 0x10
[0.00] Built 1 zonelists in Zone order, mobility grouping on.
Total pages: 32512
[0.00] Kernel command line: root=1f03 rootfstype=jffs2
console=ttyS2,115200
[0.00] PID hash table entries: 512 (order: -1, 2048 bytes)
[0.00] Dentry cache hash table entries: 16384 (order: 4, 65536
bytes)
[0.00] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[0.00] Memory: 64MB 64MB = 128MB total
[0.00] Memory: 127316KB available (2088K code, 184K data, 96K
init, 0K highmem)
[0.00] SLUB: Genslabs=11, HWalign=32, Order=0-3, MinObjects=0,
CPUs=1, Nodes=1
[0.00] Hierarchical RCU implementation.
[0.00] NR_IRQS:368
[0.00] Clocking rate (Crystal/DPLL/MPU): 19.2/658/329 MHz
[0.00] GPMC revision 2.0
[0.00] IRQ: Found an INTC at 0xfa0fe000 (revision 2.0) with 96
interrupts
[0.00] Total of 96 interrupts on 1 active controller
[0.00] OMAP GPIO hardware version 1.8
[0.00] OMAP clockevent source: GPTIMER1 at 32000 Hz
[0.00] Console: colour dummy device 80x30
[0.00] Calibrating delay loop... 320.37 BogoMIPS (lpj=1253376)
[0.00] Mount-cache hash table entries: 512
[0.00] CPU: Testing write buffer coherency: ok
[0.00] NET: Registered protocol family 16
[  307.198364] OMAP DMA hardware revision 2.0
[  307.216583] bio: create slab bio-0 at 0
[  307.221252] usbcore: registered new interface driver usbfs
[  307.90] usbcore: registered new interface driver hub
[  307.222869] usbcore: registered new device driver usb
[  307.225250] Switching to clocksource 32k_counter
[  307.229980] musb_hdrc: version 6.0, tusb-omap-dma, peripheral, debug=0
[  307.230895] NET: Registered protocol family 2
[  307.231140] IP route cache hash table entries: 1024 (order: 0, 4096
bytes)
[  307.231597] TCP established hash table entries: 4096 (order: 3, 32768
bytes)
[  307.231872] TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
[  307.232116] TCP: Hash tables configured (established 4096 bind 4096)
[  307.232147] TCP reno registered
[  307.232177] UDP hash table entries: 256 (order: 0, 4096 bytes)
[  307.232238] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[  307.232513] NET: Registered protocol family 1
[  307.234924] NetWinder Floating Point Emulator V0.97 (double precision)
[  307.267059] JFFS2 version 2.2. (NAND) (SUMMARY)  © 2001-2006 Red Hat,
Inc.
[  307.269897] msgmni has been set to 248
[  307.270019] io scheduler noop registered
[  307.271697] io scheduler cfq registered (default)
[  307.310852] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[  307.334625] serial8250.0: ttyS0 at MMIO 0x4806a000 (irq = 72) is a
ST16654
[  307.355895] serial8250.1: ttyS1 at MMIO 0x4806c000 (irq = 73) is a
ST16654
[  307.376953] serial8250.2: ttyS2 at MMIO 0x4806e000 (irq = 74) is a
ST16654
[  307.685607] console [ttyS2] enabled
[  307.712738] brd: module loaded
[  307.716278] OneNAND driver initializing
[  307.720794] omap2-onenand omap2-onenand: initializing on CS0, phys
base 0x0400, virtual base c888
[  307.730560] Muxed OneNAND 256MB 1.8V 16-bit (0x40)
[  307.735382] OneNAND version = 0x0022
[  307.740570] Scanning device for bad blocks
[  307.754882] onenand_bbt_wait: ecc error = 0x, controller error 0x2440
[  307.761840] Bad eraseblock 183 at 0x016e
[  307.836791] onenand_bbt_wait: ecc error = 0x, controller error 0x2440
[  307.843658] Bad eraseblock 1461 at 0x0b6a
[  307.880462] Creating 5 MTD partitions on omap2-onenand:
[  307.885925] 

Re: [rfc/rft/patch-v2.6.32-omap1+ 2/2] arm: omap: add missing __initdata to omap_board_config_kernel

2010-01-05 Thread Tony Lindgren
Tomi,

* Ladislav Michl ladislav.mi...@seznam.cz [091216 14:40]:
 On Wed, Dec 16, 2009 at 11:52:35PM +0200, Felipe Balbi wrote:
  we still need to get rid of the OMAP_TAG_LCD, but while
  it's still there, let's kill the section mismatches.
 
 Hmm, couldn't we just simply remove all empty declarations first? As data 
 section
 is zeroed it should not cause any harm. Anyway, patch bellow is entirely 
 untested
 and posted for your convenience only :-)

Can you please queue this (and any other fb/dss related board fixes) into your 
dss fixes queue?
 
 Signed-off-by: Ladislav Michl la...@linux-mips.org

Acked-by: Tony Lindgren t...@atomide.com

 
 diff --git a/arch/arm/mach-omap1/board-generic.c 
 b/arch/arm/mach-omap1/board-generic.c
 index e1195a3..bea32cf 100644
 --- a/arch/arm/mach-omap1/board-generic.c
 +++ b/arch/arm/mach-omap1/board-generic.c
 @@ -57,9 +57,6 @@ static struct omap_usb_config generic1610_usb_config 
 __initdata = {
  };
  #endif
  
 -static struct omap_board_config_kernel generic_config[] __initdata = {
 -};
 -
  static void __init omap_generic_init(void)
  {
  #ifdef CONFIG_ARCH_OMAP15XX
 @@ -80,9 +77,6 @@ static void __init omap_generic_init(void)
   omap_usb_init(generic1610_usb_config);
   }
  #endif
 -
 - omap_board_config = generic_config;
 - omap_board_config_size = ARRAY_SIZE(generic_config);
   omap_serial_init();
   omap_register_i2c_bus(1, 100, NULL, 0);
  }
 diff --git a/arch/arm/mach-omap1/board-voiceblue.c 
 b/arch/arm/mach-omap1/board-voiceblue.c
 index 1691835..5a95391 100644
 --- a/arch/arm/mach-omap1/board-voiceblue.c
 +++ b/arch/arm/mach-omap1/board-voiceblue.c
 @@ -150,9 +150,6 @@ static struct omap_usb_config voiceblue_usb_config 
 __initdata = {
   .pins[2]= 6,
  };
  
 -static struct omap_board_config_kernel voiceblue_config[] = {
 -};
 -
  static void __init voiceblue_init_irq(void)
  {
   omap1_init_common_hw();
 @@ -194,8 +191,6 @@ static void __init voiceblue_init(void)
   set_irq_type(gpio_to_irq(15), IRQ_TYPE_EDGE_RISING);
  
   platform_add_devices(voiceblue_devices, ARRAY_SIZE(voiceblue_devices));
 - omap_board_config = voiceblue_config;
 - omap_board_config_size = ARRAY_SIZE(voiceblue_config);
   omap_serial_init();
   omap_usb_init(voiceblue_usb_config);
   omap_register_i2c_bus(1, 100, NULL, 0);
 diff --git a/arch/arm/mach-omap2/board-3430sdp.c 
 b/arch/arm/mach-omap2/board-3430sdp.c
 index c90b0d0..4bfd8e3 100644
 --- a/arch/arm/mach-omap2/board-3430sdp.c
 +++ b/arch/arm/mach-omap2/board-3430sdp.c
 @@ -298,13 +298,8 @@ static struct platform_device *sdp3430_devices[] 
 __initdata = {
   sdp3430_dss_device,
  };
  
 -static struct omap_board_config_kernel sdp3430_config[] __initdata = {
 -};
 -
  static void __init omap_3430sdp_init_irq(void)
  {
 - omap_board_config = sdp3430_config;
 - omap_board_config_size = ARRAY_SIZE(sdp3430_config);
   omap2_init_common_hw(hyb18m512160af6_sdrc_params, NULL);
   omap_init_irq();
   omap_gpio_init();
 diff --git a/arch/arm/mach-omap2/board-3630sdp.c 
 b/arch/arm/mach-omap2/board-3630sdp.c
 index 7390596..f460d4f 100755
 --- a/arch/arm/mach-omap2/board-3630sdp.c
 +++ b/arch/arm/mach-omap2/board-3630sdp.c
 @@ -72,13 +72,8 @@ static void __init omap_sdp_map_io(void)
   omap2_map_common_io();
  }
  
 -static struct omap_board_config_kernel sdp_config[] __initdata = {
 -};
 -
  static void __init omap_sdp_init_irq(void)
  {
 - omap_board_config = sdp_config;
 - omap_board_config_size = ARRAY_SIZE(sdp_config);
   omap2_init_common_hw(h8mbx00u0mer0em_sdrc_params,
   h8mbx00u0mer0em_sdrc_params);
   omap_init_irq();
 diff --git a/arch/arm/mach-omap2/board-am3517evm.c 
 b/arch/arm/mach-omap2/board-am3517evm.c
 index b4e6eca..c16cb3f 100644
 --- a/arch/arm/mach-omap2/board-am3517evm.c
 +++ b/arch/arm/mach-omap2/board-am3517evm.c
 @@ -35,17 +35,11 @@
  /*
   * Board initialization
   */
 -static struct omap_board_config_kernel am3517_evm_config[] __initdata = {
 -};
 -
  static struct platform_device *am3517_evm_devices[] __initdata = {
  };
  
  static void __init am3517_evm_init_irq(void)
  {
 - omap_board_config = am3517_evm_config;
 - omap_board_config_size = ARRAY_SIZE(am3517_evm_config);
 -
   omap2_init_common_hw(NULL, NULL);
   omap_init_irq();
   omap_gpio_init();
 diff --git a/arch/arm/mach-omap2/board-cm-t35.c 
 b/arch/arm/mach-omap2/board-cm-t35.c
 index 2626a9f..3ec2687 100644
 --- a/arch/arm/mach-omap2/board-cm-t35.c
 +++ b/arch/arm/mach-omap2/board-cm-t35.c
 @@ -462,14 +462,8 @@ static void __init cm_t35_init_i2c(void)
 ARRAY_SIZE(cm_t35_i2c_boardinfo));
  }
  
 -static struct omap_board_config_kernel cm_t35_config[] __initdata = {
 -};
 -
  static void __init cm_t35_init_irq(void)
  {
 - omap_board_config = cm_t35_config;
 - omap_board_config_size = ARRAY_SIZE(cm_t35_config);
 -
   

[APPLIED] [PATCH] OMAP: ZOOM2: Correcting key mapping for few keys

2010-01-05 Thread Tony Lindgren
This patch has been applied to the linux-omap
by youw fwiendly patch wobot.

Branch in linux-omap: omap-fixes

Initial commit ID (Likely to change): 736687cd70885a0c669da188902af713005a57ee

PatchWorks
http://patchwork.kernel.org/patch/68622/

Git (Likely to change, and takes a while to get mirrored)
http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=commit;h=736687cd70885a0c669da188902af713005a57ee


--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: problem with n810 boot up

2010-01-05 Thread Luke-Jr
On Tuesday 05 January 2010 05:24:56 pm Francisco Alecrim wrote:
 Luke-Jr wrote:
  Tested on Nokia N810 in Linux-OMAP tree. Mainline is not bootable yet.
 
 I'm with some problems to boot-up latest l-o(commit
 abb74381235a05f15a3b07e9e3831034942c67fb) with n810. The error message
 can be found below and full boot output in the end of email.
 
 dsme: No correct bootreason found, entering the malfunction state

That's DSME, part of Maemo userland. You can possibly write a LD_PRELOAD 
workaround if you want to run it anyway...

 What rootfs do you use? Did you change initfs?

Gentoo. I modified my initfs to chainload its init if a new kernel is running.

Unfortunately, I have come to the realisation that moving forward with the 
Linux port to N8x0 would take me more time than simply spending the same time 
doing paid work and buying a N900* or Pandora instead. So short some other 
reimbursement for porting Linux to N8x0 (like maybe a promise of BME sources 
or a N900 after the rest is done to finish the job), I'm probably not going to 
spend any more time on it. :(

Luke

* N900 is supposedly mostly mainlined already, and supposedly Nokia will 
actually finish the job with unlike N8x0; it also has nicer hardware, even if 
you just ignore the cellular capabilities
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCHv2 1/1] OMAP3: PM: Fix OTG autoidle workaround

2010-01-05 Thread Tony Lindgren
* Felipe Balbi felipe.ba...@nokia.com [091218 03:12]:
 Hi,
 
 On Fri, Dec 18, 2009 at 11:39:23AM +0100, Valentin Eduardo (Nokia-D/Helsinki) 
 wrote:
 From: Eduardo Valentin eduardo.valen...@nokia.com
 
 This patch fix the OTG autoidle workaround so now
 usb gadget modules can be properly loaded.
 
 Besides it also adds a cpu check, because this hardware
 but is present only in OMAP34xx chips.
 
 Signed-off-by: Eduardo Valentin eduardo.valen...@nokia.com
 
 looks like after this patch we can drop the workaround from
 omap2430.c and use whatever platform code configured.

FYI, tagging this for Kevin in patchwork as it's PM related.

Regards,

Tony
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[APPLIED] [PATCH] OMAP3: add missing parentheses

2010-01-05 Thread Tony Lindgren
This patch has been applied to the linux-omap
by youw fwiendly patch wobot.

Branch in linux-omap: omap-fixes

Initial commit ID (Likely to change): 0bc9c936162be8477229c929a65349c13cf28866

PatchWorks
http://patchwork.kernel.org/patch/69437/

Git (Likely to change, and takes a while to get mirrored)
http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=commit;h=0bc9c936162be8477229c929a65349c13cf28866


--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[APPLIED] [PATCH] OMAP3EVM: Choose OMAP_PACKAGE_CBB

2010-01-05 Thread Tony Lindgren
This patch has been applied to the linux-omap
by youw fwiendly patch wobot.

Branch in linux-omap: omap-fixes

Initial commit ID (Likely to change): a46b02659f8d2edff801441443ba85dec024d0f8

PatchWorks
http://patchwork.kernel.org/patch/70349/

Git (Likely to change, and takes a while to get mirrored)
http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=commit;h=a46b02659f8d2edff801441443ba85dec024d0f8


--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] OMAP3EVM: Choose OMAP_PACKAGE_CBB

2010-01-05 Thread Tony Lindgren
* hvaib...@ti.com hvaib...@ti.com [091230 22:22]:
 From: Vaibhav Hiremath hvaib...@ti.com
 
 Without this the kernel doesn't boot, it craches in
 omap_mux_package_fixup(), since the package_subset becomes NULL.
 
 Signed-off-by: Vaibhav Hiremath hvaib...@ti.com
 ---
  arch/arm/mach-omap2/Kconfig |1 +
  1 files changed, 1 insertions(+), 0 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
 index 10eafa7..606bf04 100644
 --- a/arch/arm/mach-omap2/Kconfig
 +++ b/arch/arm/mach-omap2/Kconfig
 @@ -80,6 +80,7 @@ config MACH_OVERO
  config MACH_OMAP3EVM
   bool OMAP 3530 EVM board
   depends on ARCH_OMAP3  ARCH_OMAP34XX
 + select OMAP_PACKAGE_CBB
  
  config MACH_OMAP3517EVM
   bool OMAP3517/ AM3517 EVM board

Also applying the following fix so uninitialized packages won't
cause problems.

Regards,

Tony
From a6f77c57a213d692ef61db8e7920390779960302 Mon Sep 17 00:00:00 2001
From: Tony Lindgren t...@atomide.com
Date: Tue, 5 Jan 2010 15:54:58 -0800
Subject: [PATCH] omap: Fix booting if package is uninitialized

Otherwise bringing up new boards can be harder:

Unable to handle kernel NULL pointer dereference at virtual address 
pgd = c0004000
[] *pgd=
Internal error: Oops: 5 [#1]
last sysfs file:
Modules linked in:
CPU: 0Not tainted  (2.6.33-rc2-00015-g0bc9c93-dirty #37)
PC is at omap_mux_init+0xa4/0x3d8
LR is at omap_mux_init+0x3c/0x3d8
...

Signed-off-by: Tony Lindgren t...@atomide.com

diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c
index e071b3f..459ef23 100644
--- a/arch/arm/mach-omap2/mux.c
+++ b/arch/arm/mach-omap2/mux.c
@@ -994,8 +994,10 @@ int __init omap_mux_init(u32 mux_pbase, u32 mux_size,
 	}
 
 #ifdef CONFIG_OMAP_MUX
-	omap_mux_package_fixup(package_subset, superset);
-	omap_mux_package_init_balls(package_balls, superset);
+	if (package_subset)
+		omap_mux_package_fixup(package_subset, superset);
+	if (package_balls)
+		omap_mux_package_init_balls(package_balls, superset);
 	omap_mux_set_cmdline_signals();
 	omap_mux_set_board_signals(board_mux);
 #endif


[APPLIED] [PATCH v3] [OMAP] gpio: Simultaneously requested rising and falling

2010-01-05 Thread Tony Lindgren
This patch has been applied to the linux-omap
by youw fwiendly patch wobot.

Branch in linux-omap: omap-fixes

Initial commit ID (Likely to change): 738321a2992ff49f96c5384feb28a94dff40b5d3

PatchWorks
http://patchwork.kernel.org/patch/67436/

Git (Likely to change, and takes a while to get mirrored)
http://git.kernel.org/?p=linux/kernel/git/tmlind/linux-omap-2.6.git;a=commit;h=738321a2992ff49f96c5384feb28a94dff40b5d3


--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCHv2 3/3] DSPBRIDGE: Validate Processor Handle from user.

2010-01-05 Thread Ramos Falcon, Ernesto
From 84b37fc98b56b91ab364c40114d9cf072bbef345 Mon Sep 17 00:00:00 2001
From: Ernesto Ramos erne...@ti.com
Date: Wed, 16 Dec 2009 18:09:14 -0600
Subject: [PATCH] DSPBRIDGE: Validate Processor Handle from user.

Add check to validate the Processor handle received
from user.

Signed-off-by: Ernesto Ramos erne...@ti.com
---
 drivers/dsp/bridge/pmgr/wcd.c  |   81 +++-
 drivers/dsp/bridge/rmgr/proc.c |  300 ++--
 2 files changed, 184 insertions(+), 197 deletions(-)

diff --git a/drivers/dsp/bridge/pmgr/wcd.c b/drivers/dsp/bridge/pmgr/wcd.c
index 917e549..55b436a 100644
--- a/drivers/dsp/bridge/pmgr/wcd.c
+++ b/drivers/dsp/bridge/pmgr/wcd.c
@@ -701,6 +701,7 @@ u32 PROCWRAP_Ctrl(union Trapped_Args *args, void *pr_ctxt)
args-ARGS_PROC_CTRL.pArgs;
u8 *pArgs = NULL;
DSP_STATUS status = DSP_SOK;
+   struct PROCESS_CONTEXT *pCtxt = pr_ctxt;

GT_3trace(WCD_debugMask, GT_ENTER,
 PROCWRAP_Ctrl: entered args:\n 0x%x
@@ -708,6 +709,10 @@ u32 PROCWRAP_Ctrl(union Trapped_Args *args, void *pr_ctxt)
 args-ARGS_PROC_CTRL.hProcessor,
 args-ARGS_PROC_CTRL.dwCmd,
 args-ARGS_PROC_CTRL.pArgs);
+   if (args-ARGS_PROC_CTRL.hProcessor != pCtxt-hProcessor) {
+   status = DSP_EHANDLE;
+   goto func_end;
+   }
if (pSize) {
if (get_user(cbDataSize, pSize)) {
status = DSP_EFAIL;
@@ -759,6 +764,7 @@ u32 PROCWRAP_EnumNode_Info(union Trapped_Args *args, void 
*pr_ctxt)
DSP_HNODE aNodeTab[MAX_NODES];
u32 uNumNodes;
u32 uAllocated;
+   struct PROCESS_CONTEXT *pCtxt = pr_ctxt;

GT_5trace(WCD_debugMask, GT_ENTER,
 PROCWRAP_EnumNode_Info:entered args:\n0x
@@ -770,6 +776,9 @@ u32 PROCWRAP_EnumNode_Info(union Trapped_Args *args, void 
*pr_ctxt)
 args-ARGS_PROC_ENUMNODE_INFO.puNumNodes,
 args-ARGS_PROC_ENUMNODE_INFO.puAllocated);

+   if (args-ARGS_PROC_ENUMNODE_INFO.hProcessor != pCtxt-hProcessor)
+   return DSP_EHANDLE;
+
if (!args-ARGS_PROC_ENUMNODE_INFO.uNodeTabSize)
return DSP_ESIZE;

@@ -792,9 +801,13 @@ u32 PROCWRAP_EnumNode_Info(union Trapped_Args *args, void 
*pr_ctxt)
 u32 PROCWRAP_FlushMemory(union Trapped_Args *args, void *pr_ctxt)
 {
DSP_STATUS status;
+   struct PROCESS_CONTEXT *pCtxt = pr_ctxt;

GT_0trace(WCD_debugMask, GT_ENTER, PROCWRAP_FlushMemory: entered\n);

+   if (args-ARGS_PROC_FLUSHMEMORY.hProcessor != pCtxt-hProcessor)
+   return DSP_EHANDLE;
+
if (args-ARGS_PROC_FLUSHMEMORY.ulFlags  PROC_WRBK_INV_ALL)
return DSP_EINVALIDARG;

@@ -812,10 +825,14 @@ u32 PROCWRAP_FlushMemory(union Trapped_Args *args, void 
*pr_ctxt)
 u32 PROCWRAP_InvalidateMemory(union Trapped_Args *args, void *pr_ctxt)
 {
DSP_STATUS status;
+   struct PROCESS_CONTEXT *pCtxt = pr_ctxt;

GT_0trace(WCD_debugMask, GT_ENTER,
 PROCWRAP_InvalidateMemory:entered\n);

+   if (args-ARGS_PROC_INVALIDATEMEMORY.hProcessor != pCtxt-hProcessor)
+   return DSP_EHANDLE;
+
status = PROC_InvalidateMemory(
  args-ARGS_PROC_INVALIDATEMEMORY.hProcessor,
  args-ARGS_PROC_INVALIDATEMEMORY.pMpuAddr,
@@ -831,6 +848,7 @@ u32 PROCWRAP_EnumResources(union Trapped_Args *args, void 
*pr_ctxt)
 {
DSP_STATUS status = DSP_SOK;
struct DSP_RESOURCEINFO pResourceInfo;
+   struct PROCESS_CONTEXT *pCtxt = pr_ctxt;

GT_4trace(WCD_debugMask, GT_ENTER,
 PROCWRAP_EnumResources: entered args:\n
@@ -841,6 +859,9 @@ u32 PROCWRAP_EnumResources(union Trapped_Args *args, void 
*pr_ctxt)
 args-ARGS_PROC_ENUMRESOURCES.pResourceInfo,
 args-ARGS_PROC_ENUMRESOURCES.uResourceInfoSize);

+   if (args-ARGS_PROC_ENUMRESOURCES.hProcessor != pCtxt-hProcessor)
+   return DSP_EHANDLE;
+
if (args-ARGS_PROC_ENUMRESOURCES.uResourceInfoSize 
sizeof(struct DSP_RESOURCEINFO))
return DSP_ESIZE;
@@ -864,8 +885,13 @@ u32 PROCWRAP_GetState(union Trapped_Args *args, void 
*pr_ctxt)
 {
DSP_STATUS status;
struct DSP_PROCESSORSTATE procStatus;
+   struct PROCESS_CONTEXT *pCtxt = pr_ctxt;
+
GT_0trace(WCD_debugMask, GT_ENTER, PROCWRAP_GetState: entered\n);

+   if (args-ARGS_PROC_GETSTATE.hProcessor != pCtxt-hProcessor)
+   return DSP_EHANDLE;
+
if (args-ARGS_PROC_GETSTATE.uStateInfoSize 
sizeof(struct DSP_PROCESSORSTATE))
return DSP_ESIZE;
@@ -884,9 +910,13 @@ u32 PROCWRAP_GetTrace(union Trapped_Args *args, void 
*pr_ctxt)
 {
DSP_STATUS status;
u8 *pBuf;
+   struct PROCESS_CONTEXT *pCtxt = pr_ctxt;

GT_0trace(WCD_debugMask, GT_ENTER, PROCWRAP_GetTrace: 

Re: [PATCH 1/4] OMAP2: Fix compile breaks

2010-01-05 Thread Tony Lindgren
Hi,

* Rajendra Nayak rna...@ti.com [091214 01:11]:
 Fixes a couple of implicit function definition errors
 for functions defined only for omap3 and called in omap2/3
 common code, and one function argument mismatch.

Looks like this needs to be refreshed to apply. Also
please fix the few cosmetic issues below :)
 
 Signed-off-by: Rajendra Nayak rna...@ti.com
 ---
  arch/arm/mach-omap2/board-2430sdp.c |2 +-
  arch/arm/mach-omap2/serial.c|1 +
  arch/arm/plat-omap/i2c.c|2 ++
  3 files changed, 4 insertions(+), 1 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/board-2430sdp.c 
 b/arch/arm/mach-omap2/board-2430sdp.c
 index db9374b..dea1425 100644
 --- a/arch/arm/mach-omap2/board-2430sdp.c
 +++ b/arch/arm/mach-omap2/board-2430sdp.c
 @@ -147,7 +147,7 @@ static void __init omap_2430sdp_init_irq(void)
  {
   omap_board_config = sdp2430_config;
   omap_board_config_size = ARRAY_SIZE(sdp2430_config);
 - omap2_init_common_hw(NULL, NULL);
 + omap2_init_common_hw(NULL, NULL, NULL, NULL, NULL);
   omap_init_irq();
   omap_gpio_init();
  }
 diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c
 index c067416..5c65d2d 100644
 --- a/arch/arm/mach-omap2/serial.c
 +++ b/arch/arm/mach-omap2/serial.c
 @@ -500,6 +500,7 @@ DEVICE_ATTR(sleep_timeout, 0644, sleep_timeout_show, 
 sleep_timeout_store);
  #define DEV_CREATE_FILE(dev, attr) WARN_ON(device_create_file(dev, attr))
  #else
  static inline void omap_uart_idle_init(struct omap_uart_state *uart) {}
 +static inline void omap_uart_block_sleep(struct omap_uart_state *uart){}

Should be like this for new entries:

static inline void omap_uart_block_sleep(struct omap_uart_state *uart)
{
}

Maybe also update the omap_uart_idle_init the same way?

  
 diff --git a/arch/arm/plat-omap/i2c.c b/arch/arm/plat-omap/i2c.c
 index fb447c1..f8eb3a0 100644
 --- a/arch/arm/plat-omap/i2c.c
 +++ b/arch/arm/plat-omap/i2c.c
 @@ -117,6 +117,8 @@ static void omap_i2c_set_wfc_mpu_wkup_lat(struct device 
 *dev, int val)
  {
   omap_pm_set_max_mpu_wakeup_lat(dev, val);
  }
 +#else
 +static inline void omap_i2c_set_wfc_mpu_wkup_lat(struct device *dev, int 
 val){}
  #endif

Here too.

Regards,

Tony
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH] OMAP3: hwmod: Adding flag to prevent caching of sysconfig register.

2010-01-05 Thread Paul Walmsley
On Wed, 23 Dec 2009, Gopinath, Thara wrote:

 Hi Paul,Kevin.. Does this patch look ok?

Hello Thara,

looking over this patch.  Nice job on the descriptive patch comment; 
it explains the problem well.  What do you think about a slightly 
different approach -- that is, to add a hook to the hwmod code to 
invalidate the cache if the module's powerdomain has lost context?


- Paul
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: regression: crash from 'ls /sys/modules/wl1251_spi/notes'

2010-01-05 Thread Andrew Morton
On Thu, 31 Dec 2009 22:15:08 +0100
Helge Deller del...@gmx.de wrote:

 On 12/30/2009 04:49 PM, James Bottomley wrote:
  A better, and more comprehensive patch would be to try not to count the
  empty text sections when we're building the notes section (and actually
  anywhere else in the file).  This patch actually relies on the fact that
  if sh_size is zero for the text section it should be for the
  corresponding notes section.  If that doesn't work, we'd actually have
  to do the matching in the construction piece.
 
  Can you try it to see if it works for you?  If it doesn't, I'll try
  matching notes to text.  It works fine on parisc, but as we don't have a
  notes section, that's not saying much ...
 
  Thanks,
 
  James
 
 
 Ben Hutchings already sent a similar patch.
 See: http://patchwork.kernel.org/patch/68925/
 
 IMHO James patch below seems better since it
 checks if a section will be allocated at a few more
 places...
 

Ben's patch (which is below) is currently in linux-next, via a Rusty
tree.  It is marked for -stable backporting.

If James's patch is preferable then there's an opportunity to do the
swap if we move promptly.




commit 9e9b48a89ed43c73d7355ff999b8e87b0628e1cd
Author: Ben Hutchings b...@decadent.org.uk
AuthorDate: Sat Dec 19 14:43:01 2009 +
Commit: Stephen Rothwell s...@canb.auug.org.au
CommitDate: Tue Jan 5 08:44:50 2010 +1100

modules: Skip empty sections when exporting section notes

Commit 35dead4 modules: don't export section names of empty sections
via sysfs changed the set of sections that have attributes, but did
not change the iteration over these attributes in add_notes_attrs().
This can lead to add_notes_attrs() creating attributes with the wrong
names or with null name pointers.

Introduce a sect_empty() function and use it in both add_sect_attrs()
and add_notes_attrs().

Reported-by: Martin Michlmayr t...@cyrius.com
Signed-off-by: Ben Hutchings b...@decadent.org.uk
Tested-by: Martin Michlmayr t...@cyrius.com
Cc: sta...@kernel.org
Signed-off-by: Rusty Russell ru...@rustcorp.com.au

diff --git a/kernel/module.c b/kernel/module.c
index e96b8ed..f82386b 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -1010,6 +1010,12 @@ static const struct kernel_symbol 
*resolve_symbol(Elf_Shdr *sechdrs,
  * J. Corbet cor...@lwn.net
  */
 #if defined(CONFIG_KALLSYMS)  defined(CONFIG_SYSFS)
+
+static inline bool sect_empty(const Elf_Shdr *sect)
+{
+   return !(sect-sh_flags  SHF_ALLOC) || sect-sh_size == 0;
+}
+
 struct module_sect_attr
 {
struct module_attribute mattr;
@@ -1051,8 +1057,7 @@ static void add_sect_attrs(struct module *mod, unsigned 
int nsect,
 
/* Count loaded sections and allocate structures */
for (i = 0; i  nsect; i++)
-   if (sechdrs[i].sh_flags  SHF_ALLOC
-sechdrs[i].sh_size)
+   if (!sect_empty(sechdrs[i]))
nloaded++;
size[0] = ALIGN(sizeof(*sect_attrs)
+ nloaded * sizeof(sect_attrs-attrs[0]),
@@ -1070,9 +1075,7 @@ static void add_sect_attrs(struct module *mod, unsigned 
int nsect,
sattr = sect_attrs-attrs[0];
gattr = sect_attrs-grp.attrs[0];
for (i = 0; i  nsect; i++) {
-   if (! (sechdrs[i].sh_flags  SHF_ALLOC))
-   continue;
-   if (!sechdrs[i].sh_size)
+   if (sect_empty(sechdrs[i]))
continue;
sattr-address = sechdrs[i].sh_addr;
sattr-name = kstrdup(secstrings + sechdrs[i].sh_name,
@@ -1156,7 +1159,7 @@ static void add_notes_attrs(struct module *mod, unsigned 
int nsect,
/* Count notes sections and allocate structures.  */
notes = 0;
for (i = 0; i  nsect; i++)
-   if ((sechdrs[i].sh_flags  SHF_ALLOC) 
+   if (!sect_empty(sechdrs[i]) 
(sechdrs[i].sh_type == SHT_NOTE))
++notes;
 
@@ -1172,7 +1175,7 @@ static void add_notes_attrs(struct module *mod, unsigned 
int nsect,
notes_attrs-notes = notes;
nattr = notes_attrs-attrs[0];
for (loaded = i = 0; i  nsect; ++i) {
-   if (!(sechdrs[i].sh_flags  SHF_ALLOC))
+   if (sect_empty(sechdrs[i]))
continue;
if (sechdrs[i].sh_type == SHT_NOTE) {
nattr-attr.name = mod-sect_attrs-attrs[loaded].name;

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: problem with n810 boot up

2010-01-05 Thread Francisco Alecrim
Hi Luke,

Luke-Jr wrote:
 On Tuesday 05 January 2010 05:24:56 pm Francisco Alecrim wrote:
 Luke-Jr wrote:
 Tested on Nokia N810 in Linux-OMAP tree. Mainline is not bootable yet.
 I'm with some problems to boot-up latest l-o(commit
 abb74381235a05f15a3b07e9e3831034942c67fb) with n810. The error message
 can be found below and full boot output in the end of email.

 dsme: No correct bootreason found, entering the malfunction state
 
 That's DSME, part of Maemo userland. You can possibly write a LD_PRELOAD 
 workaround if you want to run it anyway...

I tried but it doesn't work. I included a line to print the
/proc/bootreason value and there is no bootreason. :P

cat: /proc/bootreason: No such file or directory

I guess that's the problem.

 
 What rootfs do you use? Did you change initfs?
 
 Gentoo. I modified my initfs to chainload its init if a new kernel is running.

I don't know how to do it. Could you send me yours?
 
 Unfortunately, I have come to the realisation that moving forward with the 
 Linux port to N8x0 would take me more time than simply spending the same time 
 doing paid work and buying a N900* or Pandora instead. So short some other 
 reimbursement for porting Linux to N8x0 (like maybe a promise of BME sources 
 or a N900 after the rest is done to finish the job), I'm probably not going 
 to 
 spend any more time on it. :(

Maybe, you're right. Or they can produce something using a SoC cheaper
than OMAP3.

 
 Luke
 
 * N900 is supposedly mostly mainlined already, and supposedly Nokia will 
 actually finish the job with unlike N8x0; it also has nicer hardware, even if 
 you just ignore the cellular capabilities

Thank you! :)
Alecrim
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: problem with n810 boot up

2010-01-05 Thread Luke-Jr
On Tuesday 05 January 2010 08:46:27 pm Francisco Alecrim wrote:
 Luke-Jr wrote:
  On Tuesday 05 January 2010 05:24:56 pm Francisco Alecrim wrote:
  Luke-Jr wrote:
  Tested on Nokia N810 in Linux-OMAP tree. Mainline is not bootable yet.
 
  I'm with some problems to boot-up latest l-o(commit
  abb74381235a05f15a3b07e9e3831034942c67fb) with n810. The error message
  can be found below and full boot output in the end of email.
 
  dsme: No correct bootreason found, entering the malfunction state
 
  That's DSME, part of Maemo userland. You can possibly write a LD_PRELOAD
  workaround if you want to run it anyway...
 
 I tried but it doesn't work. I included a line to print the
 /proc/bootreason value and there is no bootreason. :P
 
 cat: /proc/bootreason: No such file or directory
 
 I guess that's the problem.

Yeah, that file isn't supposed to exist. It was a Nokia-specific hack.

  What rootfs do you use? Did you change initfs?
 
  Gentoo. I modified my initfs to chainload its init if a new kernel is
  running.
 
 I don't know how to do it. Could you send me yours?

special=false
if echo -n /writetest; then
exec /$(uname -r).log
exec 21
/dmesg.static
ls -lh /dev
#   ifconfig usb0 192.168.1.2
#   mount -t proc proc proc
#   ifconfig -a
#   umount proc
#   sync

if true; then

echo A
mount -t proc proc proc
mount /dev/mmcblk0p1 /mnt/new_root || exec /bin/sh
echo B
cd /mnt/new_root
mkdir -p mnt/initfs
echo C
pivot_root . mnt/initfs
echo D
cd /
mount
sync
echo E
exec /usr/bin/chroot / /sbin/init

fi

special=true
fi
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html