[PATCH] OMAP3 EVM: remove out-of-bounds array access of gpio_leds.

2012-02-13 Thread Arnout Vandecappelle (Essensium/Mind)
From: Arnout Vandecappelle (Essensium/Mind) arn...@mind.be

The omap3evm BSP enables a GPIO LED on the twl4030 chip.  However,
the static gpio_leds array doesn't have an entry for it.  This is
most likely a copy-and-paste error, because it has been in there
since the first commit of the omap3evm BSP (53c5ec31).

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) arn...@mind.be
---
Please CC me, I'm not on the list.

Since I don't have access to an OMAP3EVM board or schematics, I
couldn't actually test if my fix is correct.  I discovered the error
because I'm using this BSP for an AM37xEVM board - which has the
LED connected to a different GPIO.  It works on the AM37xEVM board
if I replace the assignment with the correct GPIO number (8).
---
 arch/arm/mach-omap2/board-omap3evm.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/board-omap3evm.c 
b/arch/arm/mach-omap2/board-omap3evm.c
index ec00b2e..f6f5cd4 100644
--- a/arch/arm/mach-omap2/board-omap3evm.c
+++ b/arch/arm/mach-omap2/board-omap3evm.c
@@ -381,7 +381,7 @@ static int omap3evm_twl_gpio_setup(struct device *dev,
gpio_request_one(gpio + 7, GPIOF_OUT_INIT_LOW, EN_DVI);
 
/* TWL4030_GPIO_MAX + 1 == ledB (out, active low LED) */
-   gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
+   gpio_leds[0].gpio = gpio + TWL4030_GPIO_MAX + 1;
 
platform_device_register(leds_gpio);
 
-- 
1.7.8.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


[PATCH] OMAP2 PM: do RCU locking for opp_get_voltage()

2012-02-13 Thread Arnout Vandecappelle (Essensium/Mind)
From: Arnout Vandecappelle (Essensium/Mind) arn...@mind.be

According to the documentation of opp_get_voltage(), it must be called
with rcu_read_lock() held.  The OMAP2 power manager doesn't do this.
The locking error is caught by PROVE_RCU.

Signed-off-by: Arnout Vandecappelle (Essensium/Mind) arn...@mind.be
---
Please CC me, I'm not on the list.

I was very surprised by this error, because this is the only user of
opp_get_voltage().

Regards,
Arnout
---
 arch/arm/mach-omap2/pm.c |3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c
index 00bff46..bce2bdc 100644
--- a/arch/arm/mach-omap2/pm.c
+++ b/arch/arm/mach-omap2/pm.c
@@ -174,14 +174,17 @@ static int __init omap2_set_init_voltage(char *vdd_name, 
char *clk_name,
freq = clk-rate;
clk_put(clk);
 
+   rcu_read_lock();
opp = opp_find_freq_ceil(dev, freq);
if (IS_ERR(opp)) {
pr_err(%s: unable to find boot up OPP for vdd_%s\n,
__func__, vdd_name);
+   rcu_read_unlock();
goto exit;
}
 
bootup_volt = opp_get_voltage(opp);
+   rcu_read_unlock();
if (!bootup_volt) {
pr_err(%s: unable to find voltage corresponding 
to the bootup OPP for vdd_%s\n, __func__, vdd_name);
-- 
1.7.8.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 2/3 v5] arm: omap: am335x: enable phy controls

2012-02-13 Thread Gupta, Ajay Kumar
Hi,
 On Mon, Feb 13, 2012 at 04:26:19AM +, Gupta, Ajay Kumar wrote:
  Hi,
   * Ajay Kumar Gupta ajay.gu...@ti.com [120207 19:55]:
Switch on the phy for am335x.
   
Signed-off-by: Ajay Kumar Gupta ajay.gu...@ti.com
---
 arch/arm/mach-omap2/omap_phy_internal.c |   21 ++
 ---
 1 files changed, 14 insertions(+), 7 deletions(-)
   
diff --git a/arch/arm/mach-omap2/omap_phy_internal.c
b/arch/arm/mach-
   omap2/omap_phy_internal.c
index 4c90477..7129408 100644
--- a/arch/arm/mach-omap2/omap_phy_internal.c
+++ b/arch/arm/mach-omap2/omap_phy_internal.c
@@ -266,7 +266,11 @@ void ti81xx_musb_phy_power(u8 on)
void __iomem *scm_base = NULL;
u32 usbphycfg;
   
-   scm_base = ioremap(TI81XX_SCM_BASE, SZ_2K);
+   if (cpu_is_ti81xx())
+   scm_base = ioremap(TI81XX_SCM_BASE, SZ_2K);
+   else if (cpu_is_am33xx())
+   scm_base = ioremap(AM33XX_SCM_BASE, SZ_2K);
+
if (!scm_base) {
pr_err(system control module ioremap failed\n);
return;
@@ -278,16 +282,19 @@ void ti81xx_musb_phy_power(u8 on)
if (cpu_is_ti816x()) {
usbphycfg |= TI816X_USBPHY0_NORMAL_MODE;
usbphycfg = ~TI816X_USBPHY_REFCLK_OSC;
-   } else if (cpu_is_ti814x()) {
-   usbphycfg = ~(USBPHY_CM_PWRDN |
 USBPHY_OTG_PWRDN
-   | USBPHY_DPINPUT | USBPHY_DMINPUT);
-   usbphycfg |= (USBPHY_OTGVDET_EN |
 USBPHY_OTGSESSEND_EN
-   | USBPHY_DPOPBUFCTL | 
USBPHY_DMOPBUFCTL);
+   } else if (cpu_is_ti814x() || cpu_is_am33xx()) {
+   usbphycfg = ~(USBPHY_CM_PWRDN |
 USBPHY_OTG_PWRDN);
+   usbphycfg |= USBPHY_OTGVDET_EN |
 USBPHY_OTGSESSEND_EN;
+   if (cpu_is_ti814x()) {
+   usbphycfg = ~(USBPHY_DPINPUT |
   USBPHY_DMINPUT);
+   usbphycfg |= USBPHY_DPOPBUFCTL
+   | USBPHY_DMOPBUFCTL;
+   }
}
} else {
if (cpu_is_ti816x())
usbphycfg = ~TI816X_USBPHY0_NORMAL_MODE;
-   else if (cpu_is_ti814x())
+   else if (cpu_is_ti814x() || cpu_is_am33xx())
usbphycfg |= USBPHY_CM_PWRDN |
 USBPHY_OTG_PWRDN;
   
  
   Please remove all the cpu_is_ calls from the *_phy_power
 functions.
   You should need those only in *_phy_init to set the right flags
   once, not every time you enable or disable the phy.
 
  Tony,
 
  This is a common function used by ti814x, ti816x and am335x and they
  have mostly the same bit map but a few bits are different so we would
  need to have cpu_is_.
 
  We use this *_phy_power(1) for phy on/init and *_phy_power(0) for phy
  off and don't have separate *_phy_init(). Even in that case we would
  require
  cpu_is_() as phy power down bit is different for ti816x and same
  for ti814x and am335x.
 
  Please let me know how should we handle this.
 
 use cpu_is_() to set a flag, and check on the flag.

Are you saying save the flags once in a local static flag and use
the same later on?

Ajay

 
 --
 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 2/3 v5] arm: omap: am335x: enable phy controls

2012-02-13 Thread Felipe Balbi
On Mon, Feb 13, 2012 at 09:40:26AM +, Gupta, Ajay Kumar wrote:
 Hi,
  On Mon, Feb 13, 2012 at 04:26:19AM +, Gupta, Ajay Kumar wrote:
   Hi,
* Ajay Kumar Gupta ajay.gu...@ti.com [120207 19:55]:
 Switch on the phy for am335x.

 Signed-off-by: Ajay Kumar Gupta ajay.gu...@ti.com
 ---
  arch/arm/mach-omap2/omap_phy_internal.c |   21 ++
  ---
  1 files changed, 14 insertions(+), 7 deletions(-)

 diff --git a/arch/arm/mach-omap2/omap_phy_internal.c
 b/arch/arm/mach-
omap2/omap_phy_internal.c
 index 4c90477..7129408 100644
 --- a/arch/arm/mach-omap2/omap_phy_internal.c
 +++ b/arch/arm/mach-omap2/omap_phy_internal.c
 @@ -266,7 +266,11 @@ void ti81xx_musb_phy_power(u8 on)
   void __iomem *scm_base = NULL;
   u32 usbphycfg;

 - scm_base = ioremap(TI81XX_SCM_BASE, SZ_2K);
 + if (cpu_is_ti81xx())
 + scm_base = ioremap(TI81XX_SCM_BASE, SZ_2K);
 + else if (cpu_is_am33xx())
 + scm_base = ioremap(AM33XX_SCM_BASE, SZ_2K);
 +
   if (!scm_base) {
   pr_err(system control module ioremap failed\n);
   return;
 @@ -278,16 +282,19 @@ void ti81xx_musb_phy_power(u8 on)
   if (cpu_is_ti816x()) {
   usbphycfg |= TI816X_USBPHY0_NORMAL_MODE;
   usbphycfg = ~TI816X_USBPHY_REFCLK_OSC;
 - } else if (cpu_is_ti814x()) {
 - usbphycfg = ~(USBPHY_CM_PWRDN |
  USBPHY_OTG_PWRDN
 - | USBPHY_DPINPUT | USBPHY_DMINPUT);
 - usbphycfg |= (USBPHY_OTGVDET_EN |
  USBPHY_OTGSESSEND_EN
 - | USBPHY_DPOPBUFCTL | 
 USBPHY_DMOPBUFCTL);
 + } else if (cpu_is_ti814x() || cpu_is_am33xx()) {
 + usbphycfg = ~(USBPHY_CM_PWRDN |
  USBPHY_OTG_PWRDN);
 + usbphycfg |= USBPHY_OTGVDET_EN |
  USBPHY_OTGSESSEND_EN;
 + if (cpu_is_ti814x()) {
 + usbphycfg = ~(USBPHY_DPINPUT |
USBPHY_DMINPUT);
 + usbphycfg |= USBPHY_DPOPBUFCTL
 + | USBPHY_DMOPBUFCTL;
 + }
   }
   } else {
   if (cpu_is_ti816x())
   usbphycfg = ~TI816X_USBPHY0_NORMAL_MODE;
 - else if (cpu_is_ti814x())
 + else if (cpu_is_ti814x() || cpu_is_am33xx())
   usbphycfg |= USBPHY_CM_PWRDN |
  USBPHY_OTG_PWRDN;

   
Please remove all the cpu_is_ calls from the *_phy_power
  functions.
You should need those only in *_phy_init to set the right flags
once, not every time you enable or disable the phy.
  
   Tony,
  
   This is a common function used by ti814x, ti816x and am335x and they
   have mostly the same bit map but a few bits are different so we would
   need to have cpu_is_.
  
   We use this *_phy_power(1) for phy on/init and *_phy_power(0) for phy
   off and don't have separate *_phy_init(). Even in that case we would
   require
   cpu_is_() as phy power down bit is different for ti816x and same
   for ti814x and am335x.
  
   Please let me know how should we handle this.
  
  use cpu_is_() to set a flag, and check on the flag.
 
 Are you saying save the flags once in a local static flag and use
 the same later on?

that's correct.

-- 
balbi


signature.asc
Description: Digital signature


Re: [PATCH v2] usb: musb: fix pm_runtime mismatch

2012-02-13 Thread Grazvydas Ignotas
On Thu, Jan 12, 2012 at 5:40 PM, Felipe Contreras
felipe.contre...@gmail.com wrote:
 On Thu, Jan 12, 2012 at 1:56 PM, Grazvydas Ignotas nota...@gmail.com wrote:
 On Mon, Dec 19, 2011 at 10:01 PM, Felipe Contreras
 felipe.contre...@nokia.com wrote:
 From: Felipe Contreras felipe.contre...@gmail.com

 In musb_init_controller() there's a pm_runtime_put(), but there's no
 pm_runtime_get(), which creates a mismatch that causes the driver to
 sleep when it shouldn't.

 This patch is causing problems here, the device never suspends, I've
 verified musb_runtime_suspend and omap2430_runtime_suspend are never
 called in my setup, unless I revert this patch. I'm using musb with
 ethernet gadget; cable removal also doesn't suspend musb.

 It seems pm_runtime_put() that was removed was balancing out
 pm_runtime_get in musb_platform_init(), which is called at the
 beginning of musb_init_controller(). I think this pm_runtime_get()
 from musb_platform_init() should be moved to musb_init_controller() to
 stop confusing people and pm_runtime_put() needs to be brought back. I
 can do a patch if nobody objects.

 You mean have both get and put in musb_init_controller()? That's OK,
 it would be balanced then, but you would have to remove the
 pm_runtime_put() from omap2430_remove() that presumably was balancing
 the pm_runtime_get_sync() in omap2430_musb_init().

 This was introduced in 7acc619[1], but it wasn't triggered in my setup
 until 18a2689[2] was merged to Linus' branch at point df0914[3]. IOW;
 when PM is working as it was supposed to.

 However, it seems most of the time this is used in a way that keeps the
 counter above 0, so nobody noticed. Also, it seems to depend on the
 configuration used in versions before 3.1, but not later (or in it).

 I found the problem by loading isp1704_charger before any usb gadgets:
 http://article.gmane.org/gmane.linux.kernel/1226122

 isp1704_charger seems to be doing otg_io_read(), and it's perfectly
 normal that musb can be suspended at the time isp1704 decides to do
 this. I think proper fix is to wake up must on musb_ulpi_read() and
 musb_ulpi_write() instead.

 I guess so. If you send these patches I can give them a try.

Sent them a week ago, would be nice if you tried them.


-- 
Gražvydas
--
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/9] usb: gadget: generic map/unmap routines

2012-02-13 Thread Felipe Balbi
Hi,

On Tue, Jan 24, 2012 at 01:45:21PM +0200, Felipe Balbi wrote:
 Hi all,
 
 here's a rebased version of generic map/unmap patchset.
 
 Also available on generic-map-unmap branch of my tree, some
 of the patches have been tested before and already have a
 Tested-by tag.
 
 Felipe Balbi (9):
   usb: gadget: add generic map/unmap request utilities
   usb: dwc3: gadget: use generic map/unmap routines
   usb: gadget: langwell: use generic map/unmap functions
   usb: renesas: gadget: use generic map/unmap routines
   usb: gadget: amd5536: use generic map/unmap routines
   usb: gadget: r8a66597: use generic map/unmap routines
   usb: gadget: net2272: use generic map/umap routines
   usb: gadget: net2280: use generic map/unmap routines
   usb: gadget: goku: use generic map/unmap routines

Tomorrow, will complete 3 weeks since I re-sent these patches. Since
nobody has had any issues with them, I'm considering people are happy,
so I'll queued them up for v3.4 merge window.

-- 
balbi


signature.asc
Description: Digital signature


Re: [PATCH 4/5] OMAPDSS: Export functions to enable dynamic linking

2012-02-13 Thread Tomi Valkeinen
Hi,

On Sat, 2012-02-11 at 17:55 -0600, Ricardo Neri wrote:
 The functions dss_init_hdmi_ip_ops and dss_has_feature are used by
 the ASoC HDMI codec. Both the ASoC codec and DSS may be built
 as separate kernel modules. Hence, these two functions need to be
 available for dynamic linking.

Neither of those functions should be exported, they are omapdss
internal. And you had to hack around to make those usable by adding
drivers/video/omap2/dss into the include path.

Anything that is exported from omapdss should be added to
include/video/omapdss.h. Users of omapdss should never include anything
from drivers/video/omap2/dss.

But as I said, neither of those functions should be exported, they are
clearly omapdss internal functions. For dss_has_feature we probably need
a new function to convey the information about the hdmi features that
the audio side needs. Or perhaps it can be in the ip_data.

For dss_init_hdmi_ip_ops I don't see why the audio part should see it.
Initializing the ops should clearly be done by omapdss automatically.

 Tomi



signature.asc
Description: This is a digitally signed message part


Re: [PATCH v2 2/2] ARM: OMAP: sram: Add am33xx SRAM support (minimal)

2012-02-13 Thread Peter Korsgaard
 Afzal == Afzal Mohammed af...@ti.com writes:

 Afzal From: Vaibhav Bedia vaibhav.be...@ti.com
 Afzal Update SRAM start  size for am33xx SoC's.

 Afzal Note: cpu_is_34xx() is true for am33xx also. Doing
 Afzal cpu_is_am33xx() check after cpu_is_34xx() will not
 Afzal achieve what we want due to the above reason.
 Afzal Hence cpu_is_am33xx() is done before cpu_is_34xx()

 Afzal } else {
 Afzal -   if (cpu_is_omap34xx()) {
 Afzal +   if (cpu_is_am33xx()) {
 Afzal +   omap_sram_start = AM33XX_SRAM_PA;
 Afzal +   omap_sram_size = 0x1; /* 64K */
 Afzal +   } else if (cpu_is_omap34xx()) {
 Afzal omap_sram_start = OMAP3_SRAM_PA;
 Afzal omap_sram_size = 0x1; /* 64K */

I don't particular know the omap sram stuff, but doesn't the 33xx have
2x 64K blocks of SRAM?

 
 Afzal +static inline int am33xx_sram_init(void)
 Afzal +{
 Afzal +   return 0;


I know you mentioned it in the commit message, but it might be good with
a comment here as well that this dummy function is needed to not get the 34xx
init function called for 33xx, so it doesn't get removed when somebody
decides to cleanup.

 Afzal +}
 Afzal +
 Afzal  int __init omap_sram_init(void)
 Afzal  {
 Afzal omap_detect_sram();
 Afzal @@ -379,6 +387,8 @@ int __init omap_sram_init(void)
 Afzal omap242x_sram_init();
 Afzal else if (cpu_is_omap2430())
 Afzal omap243x_sram_init();
 Afzal +   else if (cpu_is_am33xx())
 Afzal +   am33xx_sram_init();
 Afzal else if (cpu_is_omap34xx())
 Afzal omap34xx_sram_init();
 

-- 
Bye, Peter Korsgaard
--
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: Possible circular locking dependency (3.3-rc2)

2012-02-13 Thread Ming Lei
Hi,

On Wed, Feb 8, 2012 at 8:41 PM, Felipe Balbi ba...@ti.com wrote:
 Hi guys,

 I have just triggered the folllowing:

 [   84.860321] ==
 [   84.860321] [ INFO: possible circular locking dependency detected ]
 [   84.860321] 3.3.0-rc2-00026-ge4e8a39 #474 Not tainted
 [   84.860321] ---
 [   84.860321] bash/949 is trying to acquire lock:
 [   84.860321]  (sysfs_lock){+.+.+.}, at: [c0275358] 
 gpio_value_store+0x24/0xcc
 [   84.860321]
 [   84.860321] but task is already holding lock:
 [   84.860321]  (s_active#22){.+}, at: [c016996c] 
 sysfs_write_file+0xdc/0x184
 [   84.911468]
 [   84.911468] which lock already depends on the new lock.
 [   84.911468]
 [   84.920043]
 [   84.920043] the existing dependency chain (in reverse order) is:
 [   84.920043]
 [   84.927886] - #1 (s_active#22){.+}:
 [   84.927886]        [c008f640] check_prevs_add+0xdc/0x150
 [   84.927886]        [c008fc18] validate_chain.clone.24+0x564/0x694
 [   84.927886]        [c0090cdc] __lock_acquire+0x49c/0x980
 [   84.951660]        [c0091838] lock_acquire+0x98/0x100
 [   84.951660]        [c016a8e8] sysfs_deactivate+0xb0/0x100
 [   84.962982]        [c016b1b4] sysfs_addrm_finish+0x2c/0x6c
 [   84.962982]        [c016b8bc] sysfs_remove_dir+0x84/0x98
 [   84.962982]        [c02590d8] kobject_del+0x10/0x78
 [   84.974670]        [c02c29e8] device_del+0x140/0x170
 [   84.974670]        [c02c2a24] device_unregister+0xc/0x18
 [   84.985382]        [c0276894] gpio_unexport+0xbc/0xdc
 [   84.985382]        [c02768c8] gpio_free+0x14/0xfc
 [   85.001708]        [c0276a28] unexport_store+0x78/0x8c
 [   85.001708]        [c02c5af8] class_attr_store+0x18/0x24
 [   85.007293]        [c0169990] sysfs_write_file+0x100/0x184
 [   85.018981]        [c0109d48] vfs_write+0xb4/0x148
 [   85.018981]        [c0109fd0] sys_write+0x40/0x70
 [   85.018981]        [c0013cc0] ret_fast_syscall+0x0/0x3c
 [   85.035003]
 [   85.035003] - #0 (sysfs_lock){+.+.+.}:
 [   85.035003]        [c008f54c] check_prev_add+0x680/0x698
 [   85.035003]        [c008f640] check_prevs_add+0xdc/0x150
 [   85.052093]        [c008fc18] validate_chain.clone.24+0x564/0x694
 [   85.052093]        [c0090cdc] __lock_acquire+0x49c/0x980
 [   85.052093]        [c0091838] lock_acquire+0x98/0x100
 [   85.069885]        [c047e280] mutex_lock_nested+0x3c/0x2f4
 [   85.069885]        [c0275358] gpio_value_store+0x24/0xcc
 [   85.069885]        [c02c18dc] dev_attr_store+0x18/0x24
 [   85.087158]        [c0169990] sysfs_write_file+0x100/0x184
 [   85.087158]        [c0109d48] vfs_write+0xb4/0x148
 [   85.098297]        [c0109fd0] sys_write+0x40/0x70
 [   85.098297]        [c0013cc0] ret_fast_syscall+0x0/0x3c
 [   85.109069]
 [   85.109069] other info that might help us debug this:
 [   85.109069]
 [   85.117462]  Possible unsafe locking scenario:
 [   85.117462]
 [   85.117462]        CPU0                    CPU1
 [   85.128417]                            
 [   85.128417]   lock(s_active#22);
 [   85.128417]                                lock(sysfs_lock);
 [   85.128417]                                lock(s_active#22);
 [   85.142486]   lock(sysfs_lock);
 [   85.151794]
 [   85.151794]  *** DEADLOCK ***
 [   85.151794]
 [   85.151794] 2 locks held by bash/949:
 [   85.158020]  #0:  (buffer-mutex){+.+.+.}, at: [c01698b8] 
 sysfs_write_file+0x28/0x184
 [   85.170349]  #1:  (s_active#22){.+}, at: [c016996c] 
 sysfs_write_file+0xdc/0x184
 [   85.170349]
 [   85.178588] stack backtrace:
 [   85.178588] [c001b824] (unwind_backtrace+0x0/0xf0) from [c008de64] 
 (print_circular_bug+0x100/0x114)
 [   85.193023] [c008de64] (print_circular_bug+0x100/0x114) from 
 [c008f54c] (check_prev_add+0x680/0x698)
 [   85.193023] [c008f54c] (check_prev_add+0x680/0x698) from [c008f640] 
 (check_prevs_add+0xdc/0x150)
 [   85.212524] [c008f640] (check_prevs_add+0xdc/0x150) from [c008fc18] 
 (validate_chain.clone.24+0x564/0x694)
 [   85.212524] [c008fc18] (validate_chain.clone.24+0x564/0x694) from 
 [c0090cdc] (__lock_acquire+0x49c/0x980)
 [   85.233306] [c0090cdc] (__lock_acquire+0x49c/0x980) from [c0091838] 
 (lock_acquire+0x98/0x100)
 [   85.233306] [c0091838] (lock_acquire+0x98/0x100) from [c047e280] 
 (mutex_lock_nested+0x3c/0x2f4)
 [   85.242614] [c047e280] (mutex_lock_nested+0x3c/0x2f4) from [c0275358] 
 (gpio_value_store+0x24/0xcc)
 [   85.261840] [c0275358] (gpio_value_store+0x24/0xcc) from [c02c18dc] 
 (dev_attr_store+0x18/0x24)
 [   85.261840] [c02c18dc] (dev_attr_store+0x18/0x24) from [c0169990] 
 (sysfs_write_file+0x100/0x184)
 [   85.271240] [c0169990] (sysfs_write_file+0x100/0x184) from [c0109d48] 
 (vfs_write+0xb4/0x148)
 [   85.290008] [c0109d48] (vfs_write+0xb4/0x148) from [c0109fd0] 
 (sys_write+0x40/0x70)
 [   85.298400] [c0109fd0] (sys_write+0x40/0x70) from [c0013cc0] 
 (ret_fast_syscall+0x0/0x3c)
 -bash: echo: write error: Operation not permitted

 the way to trigger is:


 

Re: [PATCH v2] usb: musb: fix pm_runtime mismatch

2012-02-13 Thread Felipe Contreras
On Mon, Feb 13, 2012 at 2:54 PM, Grazvydas Ignotas nota...@gmail.com wrote:
 On Thu, Jan 12, 2012 at 5:40 PM, Felipe Contreras
 felipe.contre...@gmail.com wrote:
 On Thu, Jan 12, 2012 at 1:56 PM, Grazvydas Ignotas nota...@gmail.com wrote:
 On Mon, Dec 19, 2011 at 10:01 PM, Felipe Contreras
 felipe.contre...@nokia.com wrote:
 From: Felipe Contreras felipe.contre...@gmail.com

 In musb_init_controller() there's a pm_runtime_put(), but there's no
 pm_runtime_get(), which creates a mismatch that causes the driver to
 sleep when it shouldn't.

 This patch is causing problems here, the device never suspends, I've
 verified musb_runtime_suspend and omap2430_runtime_suspend are never
 called in my setup, unless I revert this patch. I'm using musb with
 ethernet gadget; cable removal also doesn't suspend musb.

 It seems pm_runtime_put() that was removed was balancing out
 pm_runtime_get in musb_platform_init(), which is called at the
 beginning of musb_init_controller(). I think this pm_runtime_get()
 from musb_platform_init() should be moved to musb_init_controller() to
 stop confusing people and pm_runtime_put() needs to be brought back. I
 can do a patch if nobody objects.

 You mean have both get and put in musb_init_controller()? That's OK,
 it would be balanced then, but you would have to remove the
 pm_runtime_put() from omap2430_remove() that presumably was balancing
 the pm_runtime_get_sync() in omap2430_musb_init().

 This was introduced in 7acc619[1], but it wasn't triggered in my setup
 until 18a2689[2] was merged to Linus' branch at point df0914[3]. IOW;
 when PM is working as it was supposed to.

 However, it seems most of the time this is used in a way that keeps the
 counter above 0, so nobody noticed. Also, it seems to depend on the
 configuration used in versions before 3.1, but not later (or in it).

 I found the problem by loading isp1704_charger before any usb gadgets:
 http://article.gmane.org/gmane.linux.kernel/1226122

 isp1704_charger seems to be doing otg_io_read(), and it's perfectly
 normal that musb can be suspended at the time isp1704 decides to do
 this. I think proper fix is to wake up must on musb_ulpi_read() and
 musb_ulpi_write() instead.

 I guess so. If you send these patches I can give them a try.

 Sent them a week ago, would be nice if you tried them.

Sorry, I just started hacking with my N900 again. I will probably test
them later today.

Cheers.

-- 
Felipe Contreras
--
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 2/2] ARM: OMAP: sram: Add am33xx SRAM support (minimal)

2012-02-13 Thread Bedia, Vaibhav
On Mon, Feb 13, 2012 at 19:54:05, Peter Korsgaard wrote:
  Afzal == Afzal Mohammed af...@ti.com writes:
 
  Afzal From: Vaibhav Bedia vaibhav.be...@ti.com
  Afzal Update SRAM start  size for am33xx SoC's.
 

This is a really awkward quoting style :|

 
 I don't particular know the omap sram stuff, but doesn't the 33xx have
 2x 64K blocks of SRAM?
 

Yes, but since the lower 64KB will not be available on non-GP device and
only A8 can access it, for now we make use of the higher 64KB which is referred
to as the OCMC RAM in the TRM. This will also enable SRAM usage by other drivers
like PRU and McASP.

  
  Afzal +static inline int am33xx_sram_init(void)
  Afzal +{
  Afzal + return 0;
 
 
 I know you mentioned it in the commit message, but it might be good with
 a comment here as well that this dummy function is needed to not get the 34xx
 init function called for 33xx, so it doesn't get removed when somebody
 decides to cleanup.

You are right in saying that the dummy function is needed to avoid 34xx SRAM 
init.
We'll have some PM related code coming in soon and hopefully the SRAM code 
won't change
Without us noticing ;)

Regards,
Vaibhav B.
--
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/4] ARM: OMAP2+: board-generic: Remove un-needed .atag_offset for DT_MACHINE

2012-02-13 Thread Benoit Cousson
Some .atag_offset entries were wrongly added during a merge conflict
resolution in 3.3.
Remove them all, since DT boot does not use that attribute anymore.

Replace as well the #if... by #ifdef for consistency.

Signed-off-by: Benoit Cousson b-cous...@ti.com
Cc: Tony Lindgren t...@atomide.com
---
 arch/arm/mach-omap2/board-generic.c |   12 
 1 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/arch/arm/mach-omap2/board-generic.c 
b/arch/arm/mach-omap2/board-generic.c
index ad49762..d32b593 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -91,14 +91,13 @@ static void __init omap3_init(void)
 }
 #endif
 
-#if defined(CONFIG_SOC_OMAP2420)
+#ifdef CONFIG_SOC_OMAP2420
 static const char *omap242x_boards_compat[] __initdata = {
ti,omap2420,
NULL,
 };
 
 DT_MACHINE_START(OMAP242X_DT, Generic OMAP2420 (Flattened Device Tree))
-   .atag_offset= 0x100,
.reserve= omap_reserve,
.map_io = omap242x_map_io,
.init_early = omap2420_init_early,
@@ -111,14 +110,13 @@ DT_MACHINE_START(OMAP242X_DT, Generic OMAP2420 
(Flattened Device Tree))
 MACHINE_END
 #endif
 
-#if defined(CONFIG_SOC_OMAP2430)
+#ifdef CONFIG_SOC_OMAP2430
 static const char *omap243x_boards_compat[] __initdata = {
ti,omap2430,
NULL,
 };
 
 DT_MACHINE_START(OMAP243X_DT, Generic OMAP2430 (Flattened Device Tree))
-   .atag_offset= 0x100,
.reserve= omap_reserve,
.map_io = omap243x_map_io,
.init_early = omap2430_init_early,
@@ -131,14 +129,13 @@ DT_MACHINE_START(OMAP243X_DT, Generic OMAP2430 
(Flattened Device Tree))
 MACHINE_END
 #endif
 
-#if defined(CONFIG_ARCH_OMAP3)
+#ifdef CONFIG_ARCH_OMAP3
 static const char *omap3_boards_compat[] __initdata = {
ti,omap3,
NULL,
 };
 
 DT_MACHINE_START(OMAP3_DT, Generic OMAP3 (Flattened Device Tree))
-   .atag_offset= 0x100,
.reserve= omap_reserve,
.map_io = omap3_map_io,
.init_early = omap3430_init_early,
@@ -151,14 +148,13 @@ DT_MACHINE_START(OMAP3_DT, Generic OMAP3 (Flattened 
Device Tree))
 MACHINE_END
 #endif
 
-#if defined(CONFIG_ARCH_OMAP4)
+#ifdef CONFIG_ARCH_OMAP4
 static const char *omap4_boards_compat[] __initdata = {
ti,omap4,
NULL,
 };
 
 DT_MACHINE_START(OMAP4_DT, Generic OMAP4 (Flattened Device Tree))
-   .atag_offset= 0x100,
.reserve= omap_reserve,
.map_io = omap4_map_io,
.init_early = omap4430_init_early,
-- 
1.7.0.4

--
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/4] ARM: OMAP2+: omap_device: Replace dev_warn by dev_dbg in omap_device_build_from_dt

2012-02-13 Thread Benoit Cousson
This warning becomes a little bit too verbose with the increase of
device nodes in some DTS files.

Change it to debug only.

Signed-off-by: Benoit Cousson b-cous...@ti.com
Cc: Kevin Hilman khil...@ti.com
---
 arch/arm/plat-omap/omap_device.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/arm/plat-omap/omap_device.c b/arch/arm/plat-omap/omap_device.c
index 80d5e4c..125de17 100644
--- a/arch/arm/plat-omap/omap_device.c
+++ b/arch/arm/plat-omap/omap_device.c
@@ -343,7 +343,7 @@ static int omap_device_build_from_dt(struct platform_device 
*pdev)
 
oh_cnt = of_property_count_strings(node, ti,hwmods);
if (!oh_cnt || IS_ERR_VALUE(oh_cnt)) {
-   dev_warn(pdev-dev, No 'hwmods' to build omap_device\n);
+   dev_dbg(pdev-dev, No 'hwmods' to build omap_device\n);
return -ENODEV;
}
 
-- 
1.7.0.4

--
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 3/4] ARM: OMAP2+: pm: Do not init statically the SR and voltage layer with DT

2012-02-13 Thread Benoit Cousson
In the case of DT, the PMIC and SR initialization will be done using
a completely different mechanism.

Disable this part if a DT blob is available.

Signed-off-by: Benoit Cousson b-cous...@ti.com
Acked-by: Kevin Hilman khil...@ti.com
Acked-by: Rob Herring rob.herr...@calxeda.com
Acked-by: Grant Likely grant.lik...@secretlab.ca
---
 arch/arm/mach-omap2/pm.c |8 
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c
index 1881fe9..ad4f693 100644
--- a/arch/arm/mach-omap2/pm.c
+++ b/arch/arm/mach-omap2/pm.c
@@ -227,6 +227,14 @@ postcore_initcall(omap2_common_pm_init);
 
 static int __init omap2_common_pm_late_init(void)
 {
+   /*
+* In the case of DT, the PMIC and SR initialization will be done using
+* a completely different mechanism.
+* Disable this part if a DT blob is available.
+*/
+   if (of_have_populated_dt())
+   return 0;
+
/* Init the voltage layer */
omap_pmic_late_init();
omap_voltage_late_init();
-- 
1.7.0.4

--
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 4/4] ARM: OMAP1: kconfig: Enable IRQ_DOMAIN by default for OMAP1 platforms

2012-02-13 Thread Benoit Cousson
The devices that can act as an interrupt controller like the
GPIO are going to be handled using the IRQ domain mechanism
in order to avoid the static IRQ mapping done so far inside
plat-omap/irqs.h.

Enable IRQ_DOMAIN by default to allow the drivers shared with
OMAP2+ to compile properly on OMAP1 platforms.

Signed-off-by: Benoit Cousson b-cous...@ti.com
Cc: Tony Lindgren t...@atomide.com
---
 arch/arm/plat-omap/Kconfig |1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
index 734009a..e289dd2 100644
--- a/arch/arm/plat-omap/Kconfig
+++ b/arch/arm/plat-omap/Kconfig
@@ -14,6 +14,7 @@ config ARCH_OMAP1
select CLKDEV_LOOKUP
select CLKSRC_MMIO
select GENERIC_IRQ_CHIP
+   select IRQ_DOMAIN
select HAVE_IDE
select NEED_MACH_MEMORY_H
help
-- 
1.7.0.4

--
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: OMAP34xx

2012-02-13 Thread Rex Feany
Thus spake Tony Lindgren (t...@atomide.com):

 * Paul Walmsley p...@pwsan.com [120209 17:48]:
  
  Kevin and I just doublechecked OMAP37xx BeagleBoard xM here with Tony's 
  testing branch; it works.
 
 Rex, care to confirm this is also the case for you with
 your custom .config?

Yes, it works. Thanks!

take care!
/rex.
--
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] ARM: OMAP2+: gpmc-smsc911x: add required smsc911x regulators

2012-02-13 Thread Matt Porter
This fixes smsc911x support on platforms using gpmc_smsc911x_init().
Commit c7e963f616f04d1f5da0e07bec4e0092f227 added the requirement
that platforms provide vdd33a and vddvario supplies.

Signed-off-by: Matt Porter mpor...@ti.com
---
 arch/arm/mach-omap2/gpmc-smsc911x.c |   44 +++
 1 files changed, 44 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/gpmc-smsc911x.c 
b/arch/arm/mach-omap2/gpmc-smsc911x.c
index 9970331..da8399e 100644
--- a/arch/arm/mach-omap2/gpmc-smsc911x.c
+++ b/arch/arm/mach-omap2/gpmc-smsc911x.c
@@ -19,6 +19,8 @@
 #include linux/interrupt.h
 #include linux/io.h
 #include linux/smsc911x.h
+#include linux/regulator/fixed.h
+#include linux/regulator/machine.h
 
 #include plat/board.h
 #include plat/gpmc.h
@@ -42,6 +44,43 @@ static struct smsc911x_platform_config gpmc_smsc911x_config 
= {
.flags  = SMSC911X_USE_16BIT,
 };
 
+static struct regulator_consumer_supply gpmc_smsc911x_supply[] = {
+   REGULATOR_SUPPLY(vddvario, smsc911x.0),
+   REGULATOR_SUPPLY(vdd33a, smsc911x.0),
+};
+
+/* Generic regulator definition to satisfy smsc911x */
+static struct regulator_init_data gpmc_smsc911x_reg_init_data = {
+   .constraints = {
+   .min_uV = 330,
+   .max_uV = 330,
+   .valid_modes_mask   = REGULATOR_MODE_NORMAL
+   | REGULATOR_MODE_STANDBY,
+   .valid_ops_mask = REGULATOR_CHANGE_MODE
+   | REGULATOR_CHANGE_STATUS,
+   },
+   .num_consumer_supplies  = ARRAY_SIZE(gpmc_smsc911x_supply),
+   .consumer_supplies  = gpmc_smsc911x_supply,
+};
+
+static struct fixed_voltage_config gpmc_smsc911x_fixed_reg_data = {
+   .supply_name= gpmc_smsc911x,
+   .microvolts = 330,
+   .gpio   = -EINVAL,
+   .startup_delay  = 0,
+   .enable_high= 0,
+   .enabled_at_boot= 1,
+   .init_data  = gpmc_smsc911x_reg_init_data,
+};
+
+static struct platform_device gpmc_smsc911x_regulator = {
+   .name   = reg-fixed-voltage,
+   .id = 0,
+   .dev = {
+   .platform_data  = gpmc_smsc911x_fixed_reg_data,
+   },
+};
+
 /*
  * Initialize smsc911x device connected to the GPMC. Note that we
  * assume that pin multiplexing is done in the board-*.c file,
@@ -55,6 +94,11 @@ void __init gpmc_smsc911x_init(struct 
omap_smsc911x_platform_data *board_data)
 
gpmc_cfg = board_data;
 
+   if (platform_device_register(gpmc_smsc911x_regulator)  0) {
+   pr_err(Unable to register smsc911x regulators\n);
+   return;
+   }
+
if (gpmc_cs_request(gpmc_cfg-cs, SZ_16M, cs_mem_base)  0) {
pr_err(Failed to request GPMC mem region\n);
return;
-- 
1.7.5.4

--
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: board-omap3evm: add required smsc911x regulators

2012-02-13 Thread Matt Porter
On Fri, Feb 10, 2012 at 02:53:41PM -0800, Tony Lindgren wrote:
 * Matt Porter mpor...@ti.com [120210 10:19]:
  On Fri, Feb 10, 2012 at 09:40:47AM -0800, Tony Lindgren wrote:
   * Matt Porter m...@ohporter.com [120208 13:35]:
This fixes smsc911x support on omap3evm that has been broken since
the smsc911x driver was updated to require the existence of vdd33a
and vddvario supplies.
   
   Great. Few comments:
   
   1. Could you please include the smsc911x commit and subject here too
  so it clearly shows the regression?
  
  Sure. Will do for v2.
  
   2. Also, why don't you add this fixed regulator to gpmc-smsc911.c?
   
   That way it gets fixed for other too, like zoom2/3.
  
  Ok, so I considered that at first and had two concerns that made me just
  do it in the omap3evm specific way and see what the feedback was.
  
  1) If we do a generic implementation in gpmc-smsc911x.c, there needs to
  be a way to override it. Another board may have a variable supply that
  feeds this consumer.
  
  2) Technically, this omap3evm specific implementation matches the hardware
  in that the osk_3v3 rail is software controllable. Granted, I commented
  that we simply don't hook up the gpio at this time since this real
  hardware regulator has always been silently asserted on by the nature of
  the reset state of the TWL GPIOs and the board level pull downs as well.
 
 OK
  
  So that said, I don't need #2 to make omap3evm work and I don't think
  anybody cares yet to actually turn that regulator off (as it will kill
  other things that appear to not have regulator support anyway). It looks
  like you talked me into respinning it as a generic implementation. Only
  question is whether I should bother consider not-yet-existing boards that
  may not want that generic regulator.
 
 Well for future boards the regulator should come from device tree,
 so for now it should be safe to add it to gpmc-smsc911.c.

Ok, sounds good. Posted an updated version.

-Matt
--
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: OMAP2+: gpmc-smsc911x: add required smsc911x regulators

2012-02-13 Thread Russell King - ARM Linux
On Mon, Feb 13, 2012 at 11:43:42AM -0500, Matt Porter wrote:
 This fixes smsc911x support on platforms using gpmc_smsc911x_init().
 Commit c7e963f616f04d1f5da0e07bec4e0092f227 added the requirement
 that platforms provide vdd33a and vddvario supplies.

Thanks.  Only one comment on this.

 +static struct platform_device gpmc_smsc911x_regulator = {
 + .name   = reg-fixed-voltage,
 + .id = 0,

$ grep -A1 reg-fixed-voltage arch/arm/*omap* -r
arch/arm/mach-omap2/board-omap3evm.c:   .name   = reg-fixed-voltage,
arch/arm/mach-omap2/board-omap3evm.c-   .id = 1,
--
arch/arm/mach-omap2/board-zoom-peripherals.c:   .name   = 
reg-fixed-voltage,
arch/arm/mach-omap2/board-zoom-peripherals.c-   .id = 1,
--
arch/arm/mach-omap2/board-overo.c:  .name   = reg-fixed-voltage,
arch/arm/mach-omap2/board-overo.c-  .id = 1,
--
arch/arm/mach-omap2/board-omap4panda.c: .name   = reg-fixed-voltage,
arch/arm/mach-omap2/board-omap4panda.c- .id = 1,
--
arch/arm/mach-omap2/board-rm680.c:  .name   = 
reg-fixed-voltage,
arch/arm/mach-omap2/board-rm680.c-  .dev= {
--
arch/arm/mach-omap2/board-igep0020.c:   .name   = reg-fixed-voltage,
arch/arm/mach-omap2/board-igep0020.c-   .id = 0,
--
arch/arm/mach-omap2/board-4430sdp.c:.name   = reg-fixed-voltage,
arch/arm/mach-omap2/board-4430sdp.c-.id = -1,
--
arch/arm/mach-omap2/board-4430sdp.c:.name   = reg-fixed-voltage,
arch/arm/mach-omap2/board-4430sdp.c-.id = 1,
--
arch/arm/mach-omap2/board-omap3pandora.c:   .name   = 
reg-fixed-voltage,
arch/arm/mach-omap2/board-omap3pandora.c-   .id = 1,

igep0020.c does this:

static struct omap_smsc911x_platform_data smsc911x_cfg = {
.cs = IGEP2_SMSC911X_CS,
.gpio_irq   = IGEP2_SMSC911X_GPIO,
.gpio_reset = -EINVAL,
.flags  = SMSC911X_USE_32BIT | SMSC911X_SAVE_MAC_ADDRESS,
};

static inline void __init igep2_init_smsc911x(void)
{
gpmc_smsc911x_init(smsc911x_cfg);
}

so it seems to use the gpmc_smsc stuff as well.  So we're ending up with
two reg-fixed-voltage devices both with ID 0.  That's not going to work,
and the driver model/sysfs will give you a nice warning there about that.

I think OMAP (or even the reg-fixed-voltage folk) needs to create an enum
similar to what I did for 8250 to control the allocation of platform
device IDs for this, otherwise we're going to keep on running over this
problem.

/*
 * Allocate 8250 platform device IDs.  Nothing is implied by
 * the numbering here, except for the legacy entry being -1.
 */
enum {
PLAT8250_DEV_LEGACY = -1,
PLAT8250_DEV_PLATFORM,
PLAT8250_DEV_PLATFORM1,
PLAT8250_DEV_PLATFORM2,
PLAT8250_DEV_FOURPORT,
PLAT8250_DEV_ACCENT,
PLAT8250_DEV_BOCA,
PLAT8250_DEV_EXAR_ST16C554,
PLAT8250_DEV_HUB6,
PLAT8250_DEV_MCA,
PLAT8250_DEV_AU1X00,
PLAT8250_DEV_SM501,
};

Added Mark for his comment.
--
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: OMAP2+: gpmc-smsc911x: add required smsc911x regulators

2012-02-13 Thread Mark Brown
On Mon, Feb 13, 2012 at 04:52:09PM +, Russell King - ARM Linux wrote:

 I think OMAP (or even the reg-fixed-voltage folk) needs to create an enum
 similar to what I did for 8250 to control the allocation of platform
 device IDs for this, otherwise we're going to keep on running over this
 problem.

 Added Mark for his comment.

Hrm, seems slightly icky but the enum will work if we can decide how to
add elements to the enum since it'll be easy to bloat a lot it if it's
central.  It's tempting to suggest just using a random number to assign
the IDs randomly rather than have a central registry but obviously
there's no guarantees there.


signature.asc
Description: Digital signature


[PATCH] ks8851: Fix NOHZ local_softirq_pending 08 warning

2012-02-13 Thread Benoit Cousson
This fix a similar problem as in 72092cc45378176ba700034c91b7af2db524df26
and 481a8199142c050b72bff8a1956a49fd0a75bbe0 (can:
fix NOHZ local_softirq_pending 08 warning). This fix replaces netif_rx()
with netif_rx_ni() which has to be used from process/softirq context.

Signed-off-by: Benoit Cousson b-cous...@ti.com
Cc: David S. Miller da...@davemloft.net
---
 drivers/net/ethernet/micrel/ks8851.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/ethernet/micrel/ks8851.c 
b/drivers/net/ethernet/micrel/ks8851.c
index 6b35e7d..0c3e400 100644
--- a/drivers/net/ethernet/micrel/ks8851.c
+++ b/drivers/net/ethernet/micrel/ks8851.c
@@ -583,7 +583,7 @@ static void ks8851_rx_pkts(struct ks8851_net *ks)
ks8851_dbg_dumpkkt(ks, rxpkt);
 
skb-protocol = eth_type_trans(skb, ks-netdev);
-   netif_rx(skb);
+   netif_rx_ni(skb);
 
ks-netdev-stats.rx_packets++;
ks-netdev-stats.rx_bytes += rxlen;
-- 
1.7.0.4

--
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


[GIT PULL] omap fixes for v3.3-rc3

2012-02-13 Thread Tony Lindgren
Hi Arnd and Olof,

Please pull omap fixes from:

git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap fixes

This contains a DT boot fix that was found sitting in the omap DT branch,
omap2 related PM fix for serial port, and few compile and warning fixes.

Note that Russell also has a series of omap fixes queued up that will get
merged via his tree. There should not be any conflicts between these
two series.

Regards,

Tony


The following changes since commit d65b4e98d7ea3038b767b70fe8be959b2913f16d:
  Linus Torvalds (1):
Linux 3.3-rc3

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap fixes

Benoit Cousson (1):
  ARM: OMAP2+: board-generic: Add missing handle_irq callbacks

Igor Grinberg (1):
  ARM: OMAP3: cm-t35: fix section mismatch warning

Paul Walmsley (1):
  ARM: OMAP2xxx: PM: fix OMAP2xxx-specific UART idle bug in v3.3

Santosh Shilimkar (1):
  ARM: OMAP2: Fix the OMAP2 only build break seen with 2011+ ARM tool-chains

Tony Lindgren (1):
  Merge branch 'fixes-dt' into fixes

 arch/arm/mach-omap2/Makefile  |4 ++--
 arch/arm/mach-omap2/board-cm-t35.c|2 +-
 arch/arm/mach-omap2/board-generic.c   |4 
 arch/arm/mach-omap2/pm24xx.c  |8 +---
 arch/arm/plat-omap/include/plat/omap-secure.h |2 +-
 5 files changed, 9 insertions(+), 11 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


Re: [PATCH] ARM: OMAP2+: gpmc-smsc911x: add required smsc911x regulators

2012-02-13 Thread Tony Lindgren
* Mark Brown broo...@opensource.wolfsonmicro.com [120213 08:25]:
 On Mon, Feb 13, 2012 at 04:52:09PM +, Russell King - ARM Linux wrote:
 
  I think OMAP (or even the reg-fixed-voltage folk) needs to create an enum
  similar to what I did for 8250 to control the allocation of platform
  device IDs for this, otherwise we're going to keep on running over this
  problem.
 
  Added Mark for his comment.
 
 Hrm, seems slightly icky but the enum will work if we can decide how to
 add elements to the enum since it'll be easy to bloat a lot it if it's
 central.  It's tempting to suggest just using a random number to assign
 the IDs randomly rather than have a central registry but obviously
 there's no guarantees there.

Can't we just leave out the .id and have it automatically assigned?

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: OMAP34xx

2012-02-13 Thread Tony Lindgren
* Russell King - ARM Linux li...@arm.linux.org.uk [120212 03:13]:
 Here's another issue which kautobuildv2 just found, as I've now added
 randconfig to the suite of OMAP4430 SDP builds.  Obviously, as it's
 using a different configuration each time, it's going to find different
 issues on each run.
 
 For this, the seed config has the following extra lines compared with
 allnoconfig:
 
 CONFIG_ARM_PATCH_PHYS_VIRT=y
 CONFIG_THUMB2_KERNEL=n
 
 The reason for the last line is that -mauto-it is not supported by my
 toolchain, so if it were to be enabled, it would cause an immediate
 build failure.  The second to late line ensures that we don't end up
 with randconfig having to dream up a value for CONFIG_PHYS_OFFSET,
 which it can't do.
 
 The seed configs can now be viewed or downloaded from the build site.
 8
 From: Russell King rmk+ker...@arm.linux.org.uk
 ARM: OMAP: fix missing __devexit_p() annotations
 
 Missing __devexit_p() annotations in driver structures for remove functions
 marked with __devexit is waiting for build errors to happen, such as:
 
 `omap_system_dma_remove' referenced in section `.data' of 
 arch/arm/plat-omap/built-in.o: defined in discarded section `.devexit.text' 
 of arch/arm/plat-omap/built-in.o
 
 Add the necessary annotation, and as a result of audit, fix others which
 are also missing in arch/arm/*omap*.
 
 Signed-off-by: Russell King rmk+ker...@arm.linux.org.uk

Acked-by: Tony Lindgren t...@atomide.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] ARM: OMAP2+: gpmc-smsc911x: add required smsc911x regulators

2012-02-13 Thread Russell King - ARM Linux
On Mon, Feb 13, 2012 at 09:52:34AM -0800, Tony Lindgren wrote:
 * Mark Brown broo...@opensource.wolfsonmicro.com [120213 08:25]:
  On Mon, Feb 13, 2012 at 04:52:09PM +, Russell King - ARM Linux wrote:
  
   I think OMAP (or even the reg-fixed-voltage folk) needs to create an enum
   similar to what I did for 8250 to control the allocation of platform
   device IDs for this, otherwise we're going to keep on running over this
   problem.
  
   Added Mark for his comment.
  
  Hrm, seems slightly icky but the enum will work if we can decide how to
  add elements to the enum since it'll be easy to bloat a lot it if it's
  central.  It's tempting to suggest just using a random number to assign
  the IDs randomly rather than have a central registry but obviously
  there's no guarantees there.
 
 Can't we just leave out the .id and have it automatically assigned?

Unfortunately, there's no such infrastructure in the driver model.
--
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: OMAP2+: gpmc-smsc911x: add required smsc911x regulators

2012-02-13 Thread Tony Lindgren
* Russell King - ARM Linux li...@arm.linux.org.uk [120213 09:31]:
 On Mon, Feb 13, 2012 at 09:52:34AM -0800, Tony Lindgren wrote:
  * Mark Brown broo...@opensource.wolfsonmicro.com [120213 08:25]:
   On Mon, Feb 13, 2012 at 04:52:09PM +, Russell King - ARM Linux wrote:
   
I think OMAP (or even the reg-fixed-voltage folk) needs to create an 
enum
similar to what I did for 8250 to control the allocation of platform
device IDs for this, otherwise we're going to keep on running over this
problem.
   
Added Mark for his comment.
   
   Hrm, seems slightly icky but the enum will work if we can decide how to
   add elements to the enum since it'll be easy to bloat a lot it if it's
   central.  It's tempting to suggest just using a random number to assign
   the IDs randomly rather than have a central registry but obviously
   there's no guarantees there.
  
  Can't we just leave out the .id and have it automatically assigned?
 
 Unfortunately, there's no such infrastructure in the driver model.

Hmm OK, -1 seems to be just used for name in platform_device_add().

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] ARM: OMAP2+: gpmc-smsc911x: add required smsc911x regulators

2012-02-13 Thread Matt Porter
On Mon, Feb 13, 2012 at 08:56:18AM -0800, Mark Brown wrote:
 On Mon, Feb 13, 2012 at 04:52:09PM +, Russell King - ARM Linux wrote:
 
  I think OMAP (or even the reg-fixed-voltage folk) needs to create an enum
  similar to what I did for 8250 to control the allocation of platform
  device IDs for this, otherwise we're going to keep on running over this
  problem.
 
  Added Mark for his comment.
 
 Hrm, seems slightly icky but the enum will work if we can decide how to
 add elements to the enum since it'll be easy to bloat a lot it if it's
 central.  It's tempting to suggest just using a random number to assign
 the IDs randomly rather than have a central registry but obviously
 there's no guarantees there.

Another option might be to provide a generic platform device helper
that instantiates a per-named-platform-device id list that simply
provides the next available id sequentially as requests for platform
device registration arrive.

arch init:

platform_create_id_list_create(reg-fixed-voltage); 

platform init:

/* I = 0..N, .id filled in by _autoid() registration */
static struct platform_device my_fixed_regulatorN = {
.name   = reg-fixed-voltage,
.dev = ...
}

platform_device_register_autoid(my_fixed_regulator0); 
platform_device_register_autoid(my_fixed_regulator1); 
platform_device_register_autoid(my_fixed_regulator2); 
...
platform_device_register_autoid(my_fixed_regulatorN); 

Something like this might be able to solve this once for the platform
device users don't need a fixed enum id. It would require changes to
platform_device_register() to update the list as static assignment
of ids occurs so those will not be used by the _autoid() method.

-Matt
--
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: OMAP2+: gpmc-smsc911x: add required smsc911x regulators

2012-02-13 Thread Mark Brown
On Mon, Feb 13, 2012 at 10:14:10AM -0800, Tony Lindgren wrote:
 * Russell King - ARM Linux li...@arm.linux.org.uk [120213 09:31]:
  On Mon, Feb 13, 2012 at 09:52:34AM -0800, Tony Lindgren wrote:

   Can't we just leave out the .id and have it automatically assigned?

It'd be nice but...

  Unfortunately, there's no such infrastructure in the driver model.

 Hmm OK, -1 seems to be just used for name in platform_device_add().

-1 is a valid ID also, it means there's only one of these things so
don't display a number.  Which is sad but there we are.  I'm at ELC/ABS
so I might try and find Greg in person here to see if we can come up
with something better, it seems like this is something the core ought to
be able to help with in much the same way that the USB stuff can.


signature.asc
Description: Digital signature


Re: [PATCH 2/2] pinctrl: Add simple pinmux driver using device tree data

2012-02-13 Thread Tony Lindgren
* Dong Aisheng donga...@gmail.com [120210 16:02]:
 Hi Tony,
 
 On Fri, Feb 10, 2012 at 12:05:03PM -0800, Tony Lindgren wrote:
  Hi Dong,
 
  * Dong Aisheng donga...@gmail.com [120207 17:22]:
   On 2/4/12, Tony Lindgren t...@atomide.com wrote:
  
   The most difference may be the function enable due to hw difference.
   But i see that for DT case, it seems function and group creation may
   also be a problem.
 
  What all do you see as a problem with group creation? Just the
  naming?
 I said from different SoC's pointer of view.
 Not only naming, but also if group and function created in driver or dt file
 and their map parsing.
 
+ sprintf(name, %lx,
+ (unsigned long)smux-res-start + offset);
+ pin-name = name;
   I'm wondering how about other people do not want the reg address to be 
   PIN name?
   It's less meaningful.
 
  How about try adding optional pinctrl-simple,pin-name entry that you
  can add to each mux entry?
 
 Put it in pinctrl device node?
 Then how do we name each pin?
 And for IMX, currently we name all pins in driver.
 I still can not find a good reason that i should name all pins in dt file.

But do you actually need the pin names in kernel? :)

 Yes, we indeed have such a case.
 For IMX, some special pins mux still need a setting called 'select input' 
 which
 is controlled in other registers.
 But a rough idea in my mind that may choose different way to fix this issue.
 It's a little like:
 pinctrl_usdhc4: pinconfig-usdhc4 {
mux =
MX6Q_SD4_CMD  0 SELECT_INPUT
MX6Q_SD4_CLK  0 0
MX6Q_SD4_DAT0 1 0
MX6Q_SD4_DAT1 1 0
MX6Q_SD4_DAT2 1 SELECT_INPUT
MX6Q_SD4_DAT3 1 0
MX6Q_SD4_DAT4 1 0
MX6Q_SD4_DAT5 1 0
MX6Q_SD4_DAT6 1 0
MX6Q_SD4_DAT7 1 0;
 }
 This format would not make the dts writer to take too much care of
 register address
 and value. For this case, the #pinmux-cells would be 3;
 It is a little different from OMAP.

If you don't want to keep the extra register entry around, then you
could have a custom .data entry in the pinctrl driver that contains
the mapping of these special registers.

 For your proposal, I'm afraid it is a little too much depend on the SoC 
 register
 layout. We need to find a flexible enough way to cover all possible
 register layout
 difference for all SoCs.
 (Considering one register controls multi muxs?)

Most likely those special cases are best handled in hardware specific
drivers.
 
  Note that for more complex mapping you may want to add a hardware
  specific .data entry that corresponds to the compatible flag, let's
  say for conf range offset to mux range offset.
 
+ res = smux_rename_function(function, np-full_name);
   A little unclear for rename here.
   Can we find a better way?
 
  You might want to play with parsing optional names from .dts file.
  I don't need the names and they slow down the parsing. For the names,
  we can show them with userspace tools using debugfs.
 
  For reference, this is what I get under debugfs function entry
  after the rename:
 
  function: /ocp/serial@0x4802, groups = [ pinconfig-uart3 ]
 
 The name looks reasonable to me.
 
+static int __init smux_parse_one_pinctrl_entry(struct smux_device 
*smux,
+   struct device_node *np)
+{
+   int count = 0;
+
+   do {
 
  ...
 
+ } while (++count);
   This 'while' is for what? Define multi pinctrl properties?
 
  Yes each client device might request multiple muxes, let's say
  two pingroups from two different pinctrl driver instances.
 
 You mean like this?
 serial@4802 {
   pinctrl = pmx_uart3_x;
   pinctrl = pmx_uart3_y;
 };
 
 Did i misunderstand?
 I still can not understand why need this.
 The pinctrl properly in device node can support multi pinmuxs .
 serial@4802 {
   pinctrl = pmx_uart3_x pmx_uart3_y;
 It's good to me that the consensus we reached at Linaro Connect is much like
 my proposal in above URL. :)

I meant like what you have in the second option here, the count is
used to parse each entry.
 
+ val = of_get_property(pdev-dev.of_node,
+ pinctrl-simple,function-off, len);
+ if (!val || len != 4) {
+ dev_err(smux-dev, function off mode not specified\n);
+ ret = -EINVAL;
   How about other SoCs not support function off mode?
 
  Maybe disable should not do anything if function-off is not specified?
 
 IIRC currently pinctrl must need a disable function, if that, yes.
 However i think we may change it in the future that make .disable function
 optinal.

Sounds good to me.
 
+free:
+ devm_kfree(smux-dev, smux);
+
   For devm_* routines, do you still need this error checking?
   IIRC, the resource will be automatically released if probe failed.
 
  I guess, are there some recommendations somewhere for that?
 I 

Re: How do I get slimbus hwmod information?

2012-02-13 Thread Marc Butler
Paul,

Sorry it has taken so long reply. Unavoidable and sudden interruption.

On Mon, Jan 30, 2012 at 02:43:34PM -0700, Paul Walmsley wrote:
 On Mon, 30 Jan 2012, Marc Butler wrote:
  On Wed, Jan 25, 2012 at 12:46:50PM -0700, Paul Walmsley wrote:
   The driver shouldn't have any hwmod code in it.  Any 
  
  I believe I came to the conclusion that I need the hwmod support,
  inorder to build out the platform_* infrastructure the driver needs,
  to query/configure resources. The driver itself does not call hwmod
  directly.
 
 That sounds right.  The other thing that the omap_device/hwmod 
 infrastructure is good for is device reset and power management.  
 Device reset probably won't need any driver modifications; the driver can 
 just start under the assumption that everything has been reset to the POR 
 values documented in the TRM.  In terms of power management, your driver 
 should use the pm_runtime*() functions to play nicely with the rest of the 
 system :-)  pm_runtime*() will call into omap_device*() which will call 
 into omap_hwmod*() to ensure that clocks and other PM infrastructure are 
 appropriately disabled, enabled, etc.

I'm delaying all but the simplest power management for the time being.
The complexity is staggering, without even considering interaction the
ABE, etc. I'm new to OMAP and need to stay in the wading pool for the
time being, lest I drown. :)

 Yes.  N.B., AFAIK Tony Lindgren isn't taking any more board_*.c patches 
 for mainline - the goal is to move all of that stuff to DT eventually.  
 So if you're interested in submitting to mainline (which I hope you are 
 :-) ) you might want to writethe driver to be able to use either 
 platform_data or DT data for configuration.  This might involve working on 
 DT bindings; it might be worth including Liam Girdwood l...@ti.com and 
 Peter Ujfalusi peter.ujfal...@ti.com on those discussions.  They would 
 also know if someone inside TI may have already written Slimbus drivers 
 that haven't yet made it to mainline, but which may have wound up in some 
 Android-related tree.

Based on your suggestion, we are looking at DT, however we may also
need hwmod support for older trees. There is no mention of Slimbus in
any of the Android trees, so far AFIAK. Thanks for the contacts. This
is definitely intended to be submitted to the mainline. There is
however a huge amount of work to be done. :)

 One other brief note is that there are some very interesting power 
 management options that may be possible in the audio path that we may not 
 have full support for in the PM infrastructure layers.  Stuff like DPLL 
 chaining and IP blocks with externally-driven functional clocks.  I 
 believe Mike Turquette mturque...@ti.com may have explored this area a 
 bit, although perhaps not specifically with Slimbus. If there is any 
 interaction of these features with Slimbus (which there may not be), I'd 
 suggest pushing support for those features off to a second phase, and we 
 should probably have a group discussion about how to handle those cases 
 cleanly :-)

As mentioned earlier, I am deferring all but the simplest PM this
without ignoring it outright.
--
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] ks8851: Fix NOHZ local_softirq_pending 08 warning

2012-02-13 Thread David Miller
From: Benoit Cousson b-cous...@ti.com
Date: Mon, 13 Feb 2012 18:37:12 +0100

 This fix a similar problem as in 72092cc45378176ba700034c91b7af2db524df26
 and 481a8199142c050b72bff8a1956a49fd0a75bbe0 (can:
 fix NOHZ local_softirq_pending 08 warning). This fix replaces netif_rx()
 with netif_rx_ni() which has to be used from process/softirq context.
 
 Signed-off-by: Benoit Cousson b-cous...@ti.com

Applied.
--
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: OMAP34xx

2012-02-13 Thread Tony Lindgren
Hi,

* Tony Lindgren t...@atomide.com [120207 21:01]:
 * Russell King - ARM Linux li...@arm.linux.org.uk [120207 01:39]:
  On Mon, Feb 06, 2012 at 10:13:15AM -0800, Tony Lindgren wrote:
   FYI, I'm now seeing the same warning as Igor posted with
   omap2plus_defconfig using the same compiler as Igor:
   
   gcc version 4.4.1 (Sourcery G++ Lite 2010q1-202) 
   
   Still no other warnings though.
  
  If you're not getting the twl4030_power_init() you still need to
  investigate why.  For example, are you sure you're building with
  CONFIG_TWL4030_POWER enabled?
 
 Yes it's enabled in omap2plus_defconfig. Same results with one
 of your defconfigs. Below is the output from compiler above.
  
  Secondly, check what you're actually getting:
  
  $ arm-linux-objdump -t ../build/omap4/drivers/mfd/twl4030-power.o | grep 
  twl4030_power_init
  00c0 g F .init.text 066c twl4030_power_init
  0650 g F .init.text 01a0 twl4030_power_init
 
  $ arm-linux-objdump -r ../build/omap4/drivers/mfd/twl-core.o | grep 
  'twl4030_power_init\|^RELOC'
  RELOCATION RECORDS FOR [.text]:
  RELOCATION RECORDS FOR [.init.text]:
  RELOCATION RECORDS FOR [.exit.text]:
  RELOCATION RECORDS FOR [.devinit.text]:
  0258 R_ARM_PC24twl4030_power_init

I'll post a patch to fix this, it's caused by missing
handling in modpost.c.
 
  then, quite simply, your build setup is broken and can't be relied
  upon to give proper warnings.
 
 Right, no luck yet getting crosstool-ng built plain gcc working..
 Yesterday ftp.gnu.org was down and the script is using that. Have
 to continue with that when I get a chance.

The gnu.org ftp issue was a firewall issue on my build box..

Got the compiler build going further with the following fix to
crosstool-ng in case others are having similar issues. Will send
that separately to crosstool-ng mailing list.

Regards,

Tony


--- a/scripts/build/debug/200-duma.sh   Thu Feb 02 22:43:18 2012 +0100
+++ b/scripts/build/debug/200-duma.sh   Mon Feb 13 12:36:06 2012 -0800
@@ -4,7 +4,7 @@
 # Downloading an non-existing file from sourceforge will give you an
 # HTML file containing an error message, instead of returning a 404.
 # Sigh...
-CT_GetFile duma_${CT_DUMA_VERSION} .tar.gz 
http://mesh.dl.sourceforge.net/sourceforge/duma/
+CT_GetFile duma_${CT_DUMA_VERSION} .tar.gz 
http://dfn.dl.sourceforge.net/sourceforge/duma/
 # Downloading from sourceforge may leave garbage, cleanup
 CT_DoExecLog ALL rm -f ${CT_TARBALLS_DIR}/showfiles.php*
 }
--- a/scripts/build/debug/300-gdb.shThu Feb 02 22:43:18 2012 +0100
+++ b/scripts/build/debug/300-gdb.shMon Feb 13 12:36:06 2012 -0800
@@ -62,7 +62,7 @@
 
 if [ ${do_expat} = y ]; then
 CT_GetFile expat-${CT_DEBUG_GDB_EXPAT_VERSION} .tar.gz\
-   
http://mesh.dl.sourceforge.net/sourceforge/expat/expat/${CT_DEBUG_GDB_EXPAT_VERSION}
+   
http://dfn.dl.sourceforge.net/sourceforge/expat/expat/${CT_DEBUG_GDB_EXPAT_VERSION}
 fi
 }
 
--- a/scripts/build/debug/500-strace.sh Thu Feb 02 22:43:18 2012 +0100
+++ b/scripts/build/debug/500-strace.sh Mon Feb 13 12:36:06 2012 -0800
@@ -1,7 +1,7 @@
 # Build script for strace
 
 do_debug_strace_get() {
-CT_GetFile strace-${CT_STRACE_VERSION} 
http://mesh.dl.sourceforge.net/sourceforge/strace/
+CT_GetFile strace-${CT_STRACE_VERSION} 
http://dfn.dl.sourceforge.net/sourceforge/strace/
 # Downloading from sourceforge leaves garbage, cleanup
 CT_DoExecLog ALL rm -f ${CT_TARBALLS_DIR}/showfiles.php*
 }
--
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] modpost: Fix section warnings for ARM for many compilers

2012-02-13 Thread Tony Lindgren
It turns out that many compilers don't show section warnings on ARM
currently because handling for ARM_CALL relocs are missing from
modpost.c.

Based on commit c2e26114 ([ARM] 3205/1: Handle new EABI relocations when
loading kernel modules) it seems that R_ARM_PC24, R_ARM_CALL and
R_ARM_JUMP24 can be handled the same way.

As modpost.c includes elf.h, we need to also consider that at least
Debian libc6-dev is missing defines for both R_ARM_CALL and R_ARM_JUMP24
in /usr/include/elf.h.

So for now let's just use the numbers in modpost.c.

Cc: Rusty Russell ru...@rustcorp.com.au
Cc: Ben Hutchings b...@decadent.org.uk
Cc: Anders Kaseorg ande...@ksplice.com
Cc: Greg KH gre...@linuxfoundation.org
Cc: Russell King rmk+ker...@arm.linux.org.uk
Signed-off-by: Tony Lindgren t...@atomide.com

---

Anybody got better ideas for dealing with the missing elf.h
defines?

--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -1505,6 +1505,8 @@ static int addend_arm_rel(struct elf_info *elf, Elf_Shdr 
*sechdr, Elf_Rela *r)
  (elf-symtab_start + ELF_R_SYM(r-r_info));
break;
case R_ARM_PC24:
+   case 28:/* R_ARM_CALL */
+   case 29:/* R_ARM_JUMP24 */
/* From ARM ABI: ((S + A) | T) - P */
r-r_addend = (int)(long)(elf-hdr +
  sechdr-sh_offset +
--
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] modpost: Fix section warnings for ARM for many compilers

2012-02-13 Thread Uwe Kleine-König
On Mon, Feb 13, 2012 at 01:24:01PM -0800, Tony Lindgren wrote:
 It turns out that many compilers don't show section warnings on ARM
 currently because handling for ARM_CALL relocs are missing from
 modpost.c.
 
 Based on commit c2e26114 ([ARM] 3205/1: Handle new EABI relocations when
 loading kernel modules) it seems that R_ARM_PC24, R_ARM_CALL and
 R_ARM_JUMP24 can be handled the same way.
 
 As modpost.c includes elf.h, we need to also consider that at least
 Debian libc6-dev is missing defines for both R_ARM_CALL and R_ARM_JUMP24
 in /usr/include/elf.h.
Huh, even unstable's /usr/include/elf.h doesn't have these symbols.

 So for now let's just use the numbers in modpost.c.
 
 Cc: Rusty Russell ru...@rustcorp.com.au
 Cc: Ben Hutchings b...@decadent.org.uk
 Cc: Anders Kaseorg ande...@ksplice.com
 Cc: Greg KH gre...@linuxfoundation.org
 Cc: Russell King rmk+ker...@arm.linux.org.uk
 Signed-off-by: Tony Lindgren t...@atomide.com
 
 ---
 
 Anybody got better ideas for dealing with the missing elf.h
 defines?
Maybe:

#ifndef R_ARM_CALL
#warning you're elf.h include is outdated
#define R_ARM_CALL 28
#endif

Best regards
Uwe

 --- a/scripts/mod/modpost.c
 +++ b/scripts/mod/modpost.c
 @@ -1505,6 +1505,8 @@ static int addend_arm_rel(struct elf_info *elf, 
 Elf_Shdr *sechdr, Elf_Rela *r)
 (elf-symtab_start + ELF_R_SYM(r-r_info));
   break;
   case R_ARM_PC24:
 + case 28:/* R_ARM_CALL */
 + case 29:/* R_ARM_JUMP24 */
   /* From ARM ABI: ((S + A) | T) - P */
   r-r_addend = (int)(long)(elf-hdr +
 sechdr-sh_offset +

-- 
Pengutronix e.K.   | Uwe Kleine-König|
Industrial Linux Solutions | http://www.pengutronix.de/  |
--
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] modpost: Fix section warnings for ARM for many compilers

2012-02-13 Thread Russell King - ARM Linux
On Mon, Feb 13, 2012 at 11:26:52PM +0100, Uwe Kleine-König wrote:
 On Mon, Feb 13, 2012 at 01:24:01PM -0800, Tony Lindgren wrote:
  It turns out that many compilers don't show section warnings on ARM
  currently because handling for ARM_CALL relocs are missing from
  modpost.c.
  
  Based on commit c2e26114 ([ARM] 3205/1: Handle new EABI relocations when
  loading kernel modules) it seems that R_ARM_PC24, R_ARM_CALL and
  R_ARM_JUMP24 can be handled the same way.
  
  As modpost.c includes elf.h, we need to also consider that at least
  Debian libc6-dev is missing defines for both R_ARM_CALL and R_ARM_JUMP24
  in /usr/include/elf.h.
 Huh, even unstable's /usr/include/elf.h doesn't have these symbols.
 
  So for now let's just use the numbers in modpost.c.
  
  Cc: Rusty Russell ru...@rustcorp.com.au
  Cc: Ben Hutchings b...@decadent.org.uk
  Cc: Anders Kaseorg ande...@ksplice.com
  Cc: Greg KH gre...@linuxfoundation.org
  Cc: Russell King rmk+ker...@arm.linux.org.uk
  Signed-off-by: Tony Lindgren t...@atomide.com
  
  ---
  
  Anybody got better ideas for dealing with the missing elf.h
  defines?
 Maybe:
 
 #ifndef R_ARM_CALL
 #warning you're elf.h include is outdated

You are elf.h include is outdated does not make sense.

Why are you calling Tony an elf.h include?
--
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: [GIT PULL] omap fixes for v3.3-rc3

2012-02-13 Thread Arnd Bergmann
On Monday 13 February 2012, Tony Lindgren wrote:
 Hi Arnd and Olof,
 
 Please pull omap fixes from:
 
 git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap fixes
 
 This contains a DT boot fix that was found sitting in the omap DT branch,
 omap2 related PM fix for serial port, and few compile and warning fixes.
 
 Note that Russell also has a series of omap fixes queued up that will get
 merged via his tree. There should not be any conflicts between these
 two series.

Thanks, merged into the fixes branch.

Arnd

--
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.3 v2] I2C: OMAP: fix build breakage when CONFIG_OF is not set

2012-02-13 Thread Ben Dooks
On Wed, Feb 08, 2012 at 01:18:21PM +0200, Luciano Coelho wrote:
 Since commit 6145197 (i2c: OMAP: Add DT support for i2c controller),
 building i2c_omap.c breaks if CONFIG_OF is not set:
 
 drivers/i2c/busses/i2c-omap.c: In function 'omap_i2c_probe':
 drivers/i2c/busses/i2c-omap.c:1021: error: 'omap_i2c_of_match' undeclared 
 (first use in this function)
 drivers/i2c/busses/i2c-omap.c:1021: error: (Each undeclared identifier is 
 reported only once
 drivers/i2c/busses/i2c-omap.c:1021: error: for each function it appears in.)
 
 This is because the definition of omap_i2c_of_match is #ifdef'd on
 CONFIG_OF, but the usage of it is not.
 
 Since the places where omap_ic2_of_match are prepared to get NULL
 pointers if CONFIG_OF is not defined, we can simply define it to NULL.
 
 Cc: Benoit Cousson b-cous...@ti.com
 Signed-off-by: Luciano Coelho coe...@ti.com
 Reviewed-by: Felipe Balbi ba...@ti.com
 ---
 v2: changed the commit log to use abbrev sha and include the commit subject
 
  drivers/i2c/busses/i2c-omap.c |2 ++
  1 files changed, 2 insertions(+), 0 deletions(-)
 
 diff --git a/drivers/i2c/busses/i2c-omap.c b/drivers/i2c/busses/i2c-omap.c
 index f713eac..fd200eb 100644
 --- a/drivers/i2c/busses/i2c-omap.c
 +++ b/drivers/i2c/busses/i2c-omap.c
 @@ -979,6 +979,8 @@ static const struct of_device_id omap_i2c_of_match[] = {
   { },
  };
  MODULE_DEVICE_TABLE(of, omap_i2c_of_match);
 +#else
 +static const struct of_device_id *omap_i2c_of_match = NULL;
  #endif

of_match_ptr(_ptr) will go to NULL if CONFIG_OF is not set, use that please.
--
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/3] ARM: OMAP2+: Move SDRC related functions from io.h into local common.h

2012-02-13 Thread Tony Lindgren
These should be local to omap2/3/4.

Signed-off-by: Tony Lindgren t...@atomide.com
---
 arch/arm/mach-omap2/common.h |5 +
 arch/arm/plat-omap/include/plat/io.h |4 
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
index febffde..5aa1acb 100644
--- a/arch/arm/mach-omap2/common.h
+++ b/arch/arm/mach-omap2/common.h
@@ -235,5 +235,10 @@ static inline u32 omap4_mpuss_read_prev_context_state(void)
return 0;
 }
 #endif
+
+struct omap_sdrc_params;
+extern void omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0,
+ struct omap_sdrc_params *sdrc_cs1);
+
 #endif /* __ASSEMBLER__ */
 #endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */
diff --git a/arch/arm/plat-omap/include/plat/io.h 
b/arch/arm/plat-omap/include/plat/io.h
index 0696bae..f5b386b 100644
--- a/arch/arm/plat-omap/include/plat/io.h
+++ b/arch/arm/plat-omap/include/plat/io.h
@@ -266,10 +266,6 @@ extern void omap_writeb(u8 v, u32 pa);
 extern void omap_writew(u16 v, u32 pa);
 extern void omap_writel(u32 v, u32 pa);
 
-struct omap_sdrc_params;
-extern void omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0,
- struct omap_sdrc_params *sdrc_cs1);
-
 extern void __init omap_init_consistent_dma_size(void);
 
 #endif

--
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 0/3] Move most of omap io.h into omap-iomap.h

2012-02-13 Thread Tony Lindgren
Hi all,

This is intended as clean-up before we apply Rob Herring's series
to remove mach/io.h.

Regards,

Tony

---

Tony Lindgren (3):
  ARM: OMAP2+: Move SDRC related functions from io.h into local common.h
  ARM: OMAP: Introduce omap-iomap.h and convert files depending on current 
io.h to use it
  ARM: OMAP: Move most of io.h to omap-iomap.h


 arch/arm/mach-omap1/ams-delta-fiq-handler.S|1 
 arch/arm/mach-omap1/ams-delta-fiq.c|3 
 arch/arm/mach-omap1/board-ams-delta.c  |7 +
 arch/arm/mach-omap1/board-fsample.c|7 +
 arch/arm/mach-omap1/board-h2.c |7 -
 arch/arm/mach-omap1/board-h3.c |9 +
 arch/arm/mach-omap1/board-htcherald.c  |5 -
 arch/arm/mach-omap1/board-innovator.c  |7 +
 arch/arm/mach-omap1/board-nokia770.c   |7 +
 arch/arm/mach-omap1/board-osk.c|8 -
 arch/arm/mach-omap1/board-palmte.c |5 -
 arch/arm/mach-omap1/board-palmtt.c |   10 +
 arch/arm/mach-omap1/board-palmz71.c|   10 +
 arch/arm/mach-omap1/board-perseus2.c   |7 +
 arch/arm/mach-omap1/board-sx1.c|7 +
 arch/arm/mach-omap1/board-voiceblue.c  |7 +
 arch/arm/mach-omap1/clock.c|1 
 arch/arm/mach-omap1/clock_data.c   |1 
 arch/arm/mach-omap1/devices.c  |8 +
 arch/arm/mach-omap1/dma.c  |1 
 arch/arm/mach-omap1/flash.c|1 
 arch/arm/mach-omap1/fpga.c |4 
 arch/arm/mach-omap1/id.c   |2 
 arch/arm/mach-omap1/include/mach/entry-macro.S |4 
 arch/arm/mach-omap1/io.c   |2 
 arch/arm/mach-omap1/irq.c  |5 -
 arch/arm/mach-omap1/lcd_dma.c  |4 
 arch/arm/mach-omap1/mcbsp.c|4 
 arch/arm/mach-omap1/pm.c   |6 -
 arch/arm/mach-omap1/reset.c|4 
 arch/arm/mach-omap1/sleep.S|5 +
 arch/arm/mach-omap1/sram.S |4 
 arch/arm/mach-omap1/time.c |4 
 arch/arm/mach-omap1/timer32k.c |8 +
 arch/arm/mach-omap1/usb.c  |1 
 arch/arm/mach-omap2/board-flash.c  |1 
 arch/arm/mach-omap2/clock2420_data.c   |1 
 arch/arm/mach-omap2/clock2430.c|1 
 arch/arm/mach-omap2/clock2430_data.c   |1 
 arch/arm/mach-omap2/clock3xxx_data.c   |1 
 arch/arm/mach-omap2/clock44xx_data.c   |2 
 arch/arm/mach-omap2/cm2xxx_3xxx.c  |3 
 arch/arm/mach-omap2/cm44xx.c   |3 
 arch/arm/mach-omap2/cminst44xx.c   |3 
 arch/arm/mach-omap2/common.c   |3 
 arch/arm/mach-omap2/common.h   |5 +
 arch/arm/mach-omap2/control.c  |1 
 arch/arm/mach-omap2/devices.c  |1 
 arch/arm/mach-omap2/io.c   |3 
 arch/arm/mach-omap2/irq.c  |5 -
 arch/arm/mach-omap2/omap-smp.c |4 
 arch/arm/mach-omap2/pm24xx.c   |4 
 arch/arm/mach-omap2/prcm_mpu44xx.c |3 
 arch/arm/mach-omap2/prm44xx.c  |3 
 arch/arm/mach-omap2/prminst44xx.c  |3 
 arch/arm/mach-omap2/sdrc2xxx.c |5 -
 arch/arm/mach-omap2/sleep34xx.S|4 
 arch/arm/mach-omap2/sram242x.S |4 
 arch/arm/mach-omap2/sram243x.S |4 
 arch/arm/mach-omap2/sram34xx.S |5 -
 arch/arm/plat-omap/devices.c   |4 
 arch/arm/plat-omap/dma.c   |6 -
 arch/arm/plat-omap/dmtimer.c   |1 
 arch/arm/plat-omap/include/plat/io.h   |  226 
 arch/arm/plat-omap/include/plat/omap-iomap.h   |  221 +++
 arch/arm/plat-omap/ocpi.c  |2 
 arch/arm/plat-omap/sram.c  |2 
 arch/arm/plat-omap/usb.c   |1 
 drivers/gpio/gpio-omap.c   |7 +
 drivers/pcmcia/omap_cf.c   |4 
 drivers/spi/spi-omap-uwire.c   |4 
 drivers/usb/host/ohci-omap.c   |6 -
 drivers/usb/otg/isp1301_omap.c |7 -
 drivers/video/omap/lcd_ams_delta.c |2 
 drivers/video/omap/lcd_inn1510.c   |2 
 drivers/video/omap/lcd_osk.c   |3 
 drivers/video/omap/lcdc.c  |7 -
 drivers/video/omap/sossi.c |1 
 78 files changed, 449 insertions(+), 306 deletions(-)
 create mode 100644 arch/arm/plat-omap/include/plat/omap-iomap.h

-- 
Signature
--
To unsubscribe from this list: send the line 

[PATCH 2/3] ARM: OMAP: Introduce omap-iomap.h and convert files depending on current io.h to use it

2012-02-13 Thread Tony Lindgren
Introduce omap-iomap.h and convert files depending on current io.h
to use it.

This is needed to move most of io.h into omap-iomap.h in two smaller
patches without breaking build and booting.

While at it, clean-up the include ordering to separate asm, plat, mach
and local includes as the ordering has gotten confusing after earlier
search and replace changes to introduce the local common.h header.

Signed-off-by: Tony Lindgren t...@atomide.com
---
 arch/arm/mach-omap1/ams-delta-fiq-handler.S|1 +
 arch/arm/mach-omap1/ams-delta-fiq.c|3 +++
 arch/arm/mach-omap1/board-ams-delta.c  |7 +--
 arch/arm/mach-omap1/board-fsample.c|7 +--
 arch/arm/mach-omap1/board-h2.c |7 ---
 arch/arm/mach-omap1/board-h3.c |9 +
 arch/arm/mach-omap1/board-htcherald.c  |5 +++--
 arch/arm/mach-omap1/board-innovator.c  |7 +--
 arch/arm/mach-omap1/board-nokia770.c   |7 +--
 arch/arm/mach-omap1/board-osk.c|8 
 arch/arm/mach-omap1/board-palmte.c |5 -
 arch/arm/mach-omap1/board-palmtt.c |   10 ++
 arch/arm/mach-omap1/board-palmz71.c|   10 ++
 arch/arm/mach-omap1/board-perseus2.c   |7 +--
 arch/arm/mach-omap1/board-sx1.c|7 +--
 arch/arm/mach-omap1/board-voiceblue.c  |7 +--
 arch/arm/mach-omap1/clock.c|1 +
 arch/arm/mach-omap1/clock_data.c   |1 +
 arch/arm/mach-omap1/devices.c  |8 +---
 arch/arm/mach-omap1/dma.c  |1 +
 arch/arm/mach-omap1/flash.c|1 +
 arch/arm/mach-omap1/fpga.c |4 +++-
 arch/arm/mach-omap1/id.c   |2 ++
 arch/arm/mach-omap1/include/mach/entry-macro.S |4 +++-
 arch/arm/mach-omap1/io.c   |2 ++
 arch/arm/mach-omap1/irq.c  |5 -
 arch/arm/mach-omap1/lcd_dma.c  |4 +++-
 arch/arm/mach-omap1/mcbsp.c|4 +++-
 arch/arm/mach-omap1/pm.c   |6 --
 arch/arm/mach-omap1/reset.c|4 +++-
 arch/arm/mach-omap1/sleep.S|5 +
 arch/arm/mach-omap1/sram.S |4 
 arch/arm/mach-omap1/time.c |4 +++-
 arch/arm/mach-omap1/timer32k.c |8 ++--
 arch/arm/mach-omap1/usb.c  |1 +
 arch/arm/mach-omap2/board-flash.c  |1 +
 arch/arm/mach-omap2/clock2420_data.c   |1 +
 arch/arm/mach-omap2/clock2430.c|1 +
 arch/arm/mach-omap2/clock2430_data.c   |1 +
 arch/arm/mach-omap2/clock3xxx_data.c   |1 +
 arch/arm/mach-omap2/clock44xx_data.c   |2 ++
 arch/arm/mach-omap2/cm2xxx_3xxx.c  |3 ++-
 arch/arm/mach-omap2/cm44xx.c   |3 ++-
 arch/arm/mach-omap2/cminst44xx.c   |3 ++-
 arch/arm/mach-omap2/common.c   |3 ++-
 arch/arm/mach-omap2/control.c  |1 +
 arch/arm/mach-omap2/devices.c  |1 +
 arch/arm/mach-omap2/io.c   |3 ++-
 arch/arm/mach-omap2/irq.c  |5 -
 arch/arm/mach-omap2/omap-smp.c |4 +++-
 arch/arm/mach-omap2/pm24xx.c   |4 +++-
 arch/arm/mach-omap2/prcm_mpu44xx.c |3 ++-
 arch/arm/mach-omap2/prm44xx.c  |3 ++-
 arch/arm/mach-omap2/prminst44xx.c  |3 ++-
 arch/arm/mach-omap2/sdrc2xxx.c |5 +++--
 arch/arm/mach-omap2/sleep34xx.S|4 
 arch/arm/mach-omap2/sram242x.S |4 
 arch/arm/mach-omap2/sram243x.S |4 
 arch/arm/mach-omap2/sram34xx.S |5 -
 arch/arm/plat-omap/devices.c   |4 +++-
 arch/arm/plat-omap/dma.c   |6 --
 arch/arm/plat-omap/dmtimer.c   |1 +
 arch/arm/plat-omap/include/plat/omap-iomap.h   |0 
 arch/arm/plat-omap/ocpi.c  |2 ++
 arch/arm/plat-omap/sram.c  |2 +-
 arch/arm/plat-omap/usb.c   |1 +
 drivers/gpio/gpio-omap.c   |7 +--
 drivers/pcmcia/omap_cf.c   |4 +++-
 drivers/spi/spi-omap-uwire.c   |4 +++-
 drivers/usb/host/ohci-omap.c   |6 --
 drivers/usb/otg/isp1301_omap.c |7 ---
 drivers/video/omap/lcd_ams_delta.c |2 ++
 drivers/video/omap/lcd_inn1510.c   |2 ++
 drivers/video/omap/lcd_osk.c   |3 +++
 drivers/video/omap/lcdc.c  |7 ---
 drivers/video/omap/sossi.c  

[PATCH 3/3] ARM: OMAP: Move most of io.h to omap-iomap.h

2012-02-13 Thread Tony Lindgren
Move most of io.h to omap-iomap.h. This is needed
for the ARM generic removal of io.h files.

Signed-off-by: Tony Lindgren t...@atomide.com
---
 arch/arm/plat-omap/include/plat/io.h |  222 --
 arch/arm/plat-omap/include/plat/omap-iomap.h |  221 ++
 2 files changed, 221 insertions(+), 222 deletions(-)

diff --git a/arch/arm/plat-omap/include/plat/io.h 
b/arch/arm/plat-omap/include/plat/io.h
index f5b386b..6a3c700 100644
--- a/arch/arm/plat-omap/include/plat/io.h
+++ b/arch/arm/plat-omap/include/plat/io.h
@@ -48,226 +48,4 @@
 #define __io(a)__typesafe_io(a)
 #define __mem_pci(a)   (a)
 
-/*
- * 
- * I/O mapping
- * 
- */
-
-#ifdef __ASSEMBLER__
-#define IOMEM(x)   (x)
-#else
-#define IOMEM(x)   ((void __force __iomem *)(x))
-#endif
-
-#define OMAP1_IO_OFFSET0x0100  /* Virtual IO = 
0xfefb */
-#define OMAP1_IO_ADDRESS(pa)   IOMEM((pa) - OMAP1_IO_OFFSET)
-
-#define OMAP2_L3_IO_OFFSET 0x9000
-#define OMAP2_L3_IO_ADDRESS(pa)IOMEM((pa) + OMAP2_L3_IO_OFFSET) /* L3 
*/
-
-
-#define OMAP2_L4_IO_OFFSET 0xb200
-#define OMAP2_L4_IO_ADDRESS(pa)IOMEM((pa) + OMAP2_L4_IO_OFFSET) /* L4 
*/
-
-#define OMAP4_L3_IO_OFFSET 0xb400
-#define OMAP4_L3_IO_ADDRESS(pa)IOMEM((pa) + OMAP4_L3_IO_OFFSET) /* L3 
*/
-
-#define AM33XX_L4_WK_IO_OFFSET 0xb500
-#define AM33XX_L4_WK_IO_ADDRESS(pa)IOMEM((pa) + AM33XX_L4_WK_IO_OFFSET)
-
-#define OMAP4_L3_PER_IO_OFFSET 0xb110
-#define OMAP4_L3_PER_IO_ADDRESS(pa)IOMEM((pa) + OMAP4_L3_PER_IO_OFFSET)
-
-#define OMAP4_GPMC_IO_OFFSET   0xa900
-#define OMAP4_GPMC_IO_ADDRESS(pa)  IOMEM((pa) + OMAP4_GPMC_IO_OFFSET)
-
-#define OMAP2_EMU_IO_OFFSET0xaa80  /* Emulation */
-#define OMAP2_EMU_IO_ADDRESS(pa)   IOMEM((pa) + OMAP2_EMU_IO_OFFSET)
-
-/*
- * 
- * Omap1 specific IO mapping
- * 
- */
-
-#define OMAP1_IO_PHYS  0xFFFB
-#define OMAP1_IO_SIZE  0x4
-#define OMAP1_IO_VIRT  (OMAP1_IO_PHYS - OMAP1_IO_OFFSET)
-
-/*
- * 
- * Omap2 specific IO mapping
- * 
- */
-
-/* We map both L3 and L4 on OMAP2 */
-#define L3_24XX_PHYS   L3_24XX_BASE/* 0x6800 -- 0xf800*/
-#define L3_24XX_VIRT   (L3_24XX_PHYS + OMAP2_L3_IO_OFFSET)
-#define L3_24XX_SIZE   SZ_1M   /* 44kB of 128MB used, want 1MB sect */
-#define L4_24XX_PHYS   L4_24XX_BASE/* 0x4800 -- 0xfa00 */
-#define L4_24XX_VIRT   (L4_24XX_PHYS + OMAP2_L4_IO_OFFSET)
-#define L4_24XX_SIZE   SZ_1M   /* 1MB of 128MB used, want 1MB sect */
-
-#define L4_WK_243X_PHYSL4_WK_243X_BASE /* 0x4900 -- 
0xfb00 */
-#define L4_WK_243X_VIRT(L4_WK_243X_PHYS + OMAP2_L4_IO_OFFSET)
-#define L4_WK_243X_SIZESZ_1M
-#define OMAP243X_GPMC_PHYS OMAP243X_GPMC_BASE
-#define OMAP243X_GPMC_VIRT (OMAP243X_GPMC_PHYS + OMAP2_L3_IO_OFFSET)
-   /* 0x6e00 -- 0xfe00 */
-#define OMAP243X_GPMC_SIZE SZ_1M
-#define OMAP243X_SDRC_PHYS OMAP243X_SDRC_BASE
-   /* 0x6D00 -- 0xfd00 */
-#define OMAP243X_SDRC_VIRT (OMAP243X_SDRC_PHYS + OMAP2_L3_IO_OFFSET)
-#define OMAP243X_SDRC_SIZE SZ_1M
-#define OMAP243X_SMS_PHYS  OMAP243X_SMS_BASE
-   /* 0x6c00 -- 0xfc00 */
-#define OMAP243X_SMS_VIRT  (OMAP243X_SMS_PHYS + OMAP2_L3_IO_OFFSET)
-#define OMAP243X_SMS_SIZE  SZ_1M
-
-/* 2420 IVA */
-#define DSP_MEM_2420_PHYS  OMAP2420_DSP_MEM_BASE
-   /* 0x5800 -- 0xfc10 */
-#define DSP_MEM_2420_VIRT  0xfc10
-#define DSP_MEM_2420_SIZE  0x28000
-#define DSP_IPI_2420_PHYS  OMAP2420_DSP_IPI_BASE
-   /* 0x5900 -- 0xfc128000 */
-#define DSP_IPI_2420_VIRT  0xfc128000
-#define DSP_IPI_2420_SIZE  SZ_4K
-#define DSP_MMU_2420_PHYS  OMAP2420_DSP_MMU_BASE
-   /* 0x5a00 -- 0xfc129000 */
-#define DSP_MMU_2420_VIRT  0xfc129000
-#define DSP_MMU_2420_SIZE  SZ_4K
-
-/* 2430 IVA2.1 - currently unmapped */
-
-/*
- * 
- * Omap3 specific IO mapping
- * 
- */
-
-/* We map both L3 and L4 on OMAP3 */
-#define L3_34XX_PHYS   L3_34XX_BASE/* 

Re: OMAP34xx

2012-02-13 Thread Tony Lindgren
* Tony Lindgren t...@atomide.com [120213 12:46]:
 
 Got the compiler build going further with the following fix to
 crosstool-ng in case others are having similar issues. Will send
 that separately to crosstool-ng mailing list.

Looks like that's already in works according to this:

http://sourceware.org/ml/crossgcc/2012-02/msg00048.html

Regards,

Tony

 --- a/scripts/build/debug/200-duma.sh Thu Feb 02 22:43:18 2012 +0100
 +++ b/scripts/build/debug/200-duma.sh Mon Feb 13 12:36:06 2012 -0800
 @@ -4,7 +4,7 @@
  # Downloading an non-existing file from sourceforge will give you an
  # HTML file containing an error message, instead of returning a 404.
  # Sigh...
 -CT_GetFile duma_${CT_DUMA_VERSION} .tar.gz 
 http://mesh.dl.sourceforge.net/sourceforge/duma/
 +CT_GetFile duma_${CT_DUMA_VERSION} .tar.gz 
 http://dfn.dl.sourceforge.net/sourceforge/duma/
  # Downloading from sourceforge may leave garbage, cleanup
  CT_DoExecLog ALL rm -f ${CT_TARBALLS_DIR}/showfiles.php*
  }
 --- a/scripts/build/debug/300-gdb.sh  Thu Feb 02 22:43:18 2012 +0100
 +++ b/scripts/build/debug/300-gdb.sh  Mon Feb 13 12:36:06 2012 -0800
 @@ -62,7 +62,7 @@
  
  if [ ${do_expat} = y ]; then
  CT_GetFile expat-${CT_DEBUG_GDB_EXPAT_VERSION} .tar.gz\
 -   
 http://mesh.dl.sourceforge.net/sourceforge/expat/expat/${CT_DEBUG_GDB_EXPAT_VERSION}
 +   
 http://dfn.dl.sourceforge.net/sourceforge/expat/expat/${CT_DEBUG_GDB_EXPAT_VERSION}
  fi
  }
  
 --- a/scripts/build/debug/500-strace.sh   Thu Feb 02 22:43:18 2012 +0100
 +++ b/scripts/build/debug/500-strace.sh   Mon Feb 13 12:36:06 2012 -0800
 @@ -1,7 +1,7 @@
  # Build script for strace
  
  do_debug_strace_get() {
 -CT_GetFile strace-${CT_STRACE_VERSION} 
 http://mesh.dl.sourceforge.net/sourceforge/strace/
 +CT_GetFile strace-${CT_STRACE_VERSION} 
 http://dfn.dl.sourceforge.net/sourceforge/strace/
  # Downloading from sourceforge leaves garbage, cleanup
  CT_DoExecLog ALL rm -f ${CT_TARBALLS_DIR}/showfiles.php*
  }
 --
 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] modpost: Fix section warnings for ARM for many compilers

2012-02-13 Thread Rusty Russell
On Mon, 13 Feb 2012 22:51:18 +, Russell King - ARM Linux 
li...@arm.linux.org.uk wrote:
 On Mon, Feb 13, 2012 at 11:26:52PM +0100, Uwe Kleine-König wrote:
  On Mon, Feb 13, 2012 at 01:24:01PM -0800, Tony Lindgren wrote:
  Maybe:
  
  #ifndef R_ARM_CALL
  #warning you're elf.h include is outdated
 
 You are elf.h include is outdated does not make sense.
 
 Why are you calling Tony an elf.h include?

Because he knew it would attract the attention of pedants to the patch?
:)

Just do the #ifndef, and skip the warning.  There's not much the poor
user receiving the warning can do about it.

Acked-by: Rusty Russell ru...@rustcorp.com.au

Thanks,
Rusty.
--
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] staging: tidspbridge: enable watchdog by default

2012-02-13 Thread Ramirez Luna, Omar
On Feb 11, 2012 3:03 PM, Felipe Contreras felipe.contre...@gmail.com wrote:

 On Sat, Feb 11, 2012 at 9:19 PM, Ramirez Luna, Omar omar.rami...@ti.com 
 wrote:
 
  On Feb 10, 2012 12:44 PM, Felipe Contreras felipe.contre...@gmail.com
  wrote:
 
  On Fri, Feb 10, 2012 at 10:35 PM, Dan Carpenter
  dan.carpen...@oracle.com wrote:
   On Fri, Feb 10, 2012 at 09:42:32PM +0200, Felipe Contreras wrote:
   On Fri, Feb 10, 2012 at 8:00 PM, Dan Carpenter
   dan.carpen...@oracle.com wrote:
On Fri, Feb 10, 2012 at 01:30:48AM +0200, Felipe Contreras wrote:
It's not an oops, it's a warning, and again, it depends on the
firmware being used. We don't have control over that, and we have no
way to detect if this feature is there. It's up to the user.
   
Perhaps just remove the warning message and handle the condition
instead of printing a stack dump?  The user should be triggering
stack dumps.  What on earth?
  
   The warning doesn't come from the driver.
  
   I'm not sure I understand.  Are you saying that because it comes
   from the arch/ directory, it can't be fixed?  I have good news for
   you my friend.  :)  It's all open source!  \o/
 
  The fact that you _can_ remove the warning doesn't mean you should. To
  me it sounds like a proper warning.
 
   Anyway, I saw in another email that Omar is working on a fix so
   probably we can just wait for his patch, yes?
 
  He only proposed a solution, I doubt he is working on. And to me, that
  sounded like a hack rather than a proper fix.
 
  I'm out on travel but will be able to look at it on Monday.
 
  Well,  I think it is the right way, you look on the firmware if it has WDT
  you use it if it doesn't then you don't. Rather than guessing if you have
  the feature. It would be like reading a config option in the firmware.

 Yeah, but it's not really firmware, it's an operating system image. I
 can be running Linux there, and I might have implemented WDT. How is
 that code going to find that out?

Tidspbridge loader doesn't support that use case, baseimage and let's
say a dsp-linuximg won't have the same layout, hence it won't be able
to parse and load the latter.

When that case is applicable, we should first modify the loader code
or prepare the baseimages to be common so we can get rid of specific
loaders and just dump them into memory.

WDT could be detected by prepending common symbols into the baseimages
or just making the new images to treat all peripherals as resources,
that is, the new baseimg should actually request the wdt3 as any other
clock.

Regards,

Omar
--
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] staging: tidspbridge: enable watchdog by default

2012-02-13 Thread Ramirez Luna, Omar
On Thu, Feb 9, 2012 at 9:18 PM, Greg KH gre...@linuxfoundation.org wrote:
 On Thu, Feb 09, 2012 at 04:45:00PM -0800, Ramirez Luna, Omar wrote:
 Hi,

 On Thu, Feb 9, 2012 at 3:30 PM, Felipe Contreras
 felipe.contre...@gmail.com wrote:
  Again, I'm totally confused as to _WHY_ this needs to be y.  What is
  causing this oops without it?  If an oops is happening, then shouldn't
  this be a strict dependancy?  Why allow it to be disabled at all if it
  can break your box if you don't enable it?
 
  It's not an oops, it's a warning, and again, it depends on the
  firmware being used. We don't have control over that, and we have no
  way to detect if this feature is there. It's up to the user.

 I have been thinking more into it, how about looking for a WDT symbol
 inside the baseimage to decide whether to turn ON/OFF WDT3, this would
 mean that the code is always compiled in, but the decision to turn it
 on/off is made at runtime.

 I totally don't understand, why not just silence the warning properly
 then?

 I fail to understand why this warning happens, why it depends on the
 firmware, and why you can't detect it at runtime to not do it.  And how
 it all ties into a kconfig option...

Just FTR, the warning comes from an interconnect driver that reports errors.

This specific warning occurs because the dsp tries to access wdt3
registers without a clock, hence turning ON the wdt3 (or default y for
wdt3 Kconfig) will make the warning to disappear when first loading a
base image into the dsp, because now there will be a clock for the
registers.

It depends on the firmware because the accesses are made from the dsp itself.

Regards,

Omar
--
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] modpost: Fix section warnings for ARM for many compilers

2012-02-13 Thread Tony Lindgren
* Rusty Russell ru...@rustcorp.com.au [120213 16:07]:
 On Mon, 13 Feb 2012 22:51:18 +, Russell King - ARM Linux 
 li...@arm.linux.org.uk wrote:
  On Mon, Feb 13, 2012 at 11:26:52PM +0100, Uwe Kleine-König wrote:
   On Mon, Feb 13, 2012 at 01:24:01PM -0800, Tony Lindgren wrote:
   Maybe:
   
   #ifndef R_ARM_CALL
   #warning you're elf.h include is outdated
  
  You are elf.h include is outdated does not make sense.
  
  Why are you calling Tony an elf.h include?
 
 Because he knew it would attract the attention of pedants to the patch?
 :)

I've been called worse than that :)
 
 Just do the #ifndef, and skip the warning.  There's not much the poor
 user receiving the warning can do about it.

OK
 
 Acked-by: Rusty Russell ru...@rustcorp.com.au

Assuming your ack applies for this patch below, let me know if that's
not the case.  
Regards,

Tony


From: Tony Lindgren t...@atomide.com
Date: Mon, 13 Feb 2012 12:30:09 -0800
Subject: [PATCH] modpost: Fix section warnings for ARM for many compilers

It turns out that many compilers don't show section warnings on ARM
currently because handling for ARM_CALL relocs are missing from
modpost.c.

Based on commit c2e26114 ([ARM] 3205/1: Handle new EABI relocations when
loading kernel modules) it seems that R_ARM_PC24, R_ARM_CALL and
R_ARM_JUMP24 can be handled the same way.

Note that at least Debian libc6-dev is missing defines for both
R_ARM_CALL and R_ARM_JUMP24 in /usr/include/elf.h. So for now
we need to define them in modpost.c if not defined.

Acked-by: Rusty Russell ru...@rustcorp.com.au
Cc: Ben Hutchings b...@decadent.org.uk
Cc: Anders Kaseorg ande...@ksplice.com
Cc: Greg KH gre...@linuxfoundation.org
Cc: Russell King rmk+ker...@arm.linux.org.uk
Signed-off-by: Tony Lindgren t...@atomide.com

--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
@@ -1494,6 +1494,13 @@ static int addend_386_rel(struct elf_info *elf, Elf_Shdr 
*sechdr, Elf_Rela *r)
return 0;
 }
 
+#ifndef R_ARM_CALL
+#define R_ARM_CALL 28
+#endif
+#ifndef R_ARM_JUMP24
+#define R_ARM_JUMP24   29
+#endif
+
 static int addend_arm_rel(struct elf_info *elf, Elf_Shdr *sechdr, Elf_Rela *r)
 {
unsigned int r_typ = ELF_R_TYPE(r-r_info);
@@ -1505,6 +1512,8 @@ static int addend_arm_rel(struct elf_info *elf, Elf_Shdr 
*sechdr, Elf_Rela *r)
  (elf-symtab_start + ELF_R_SYM(r-r_info));
break;
case R_ARM_PC24:
+   case R_ARM_CALL:
+   case R_ARM_JUMP24:
/* From ARM ABI: ((S + A) | T) - P */
r-r_addend = (int)(long)(elf-hdr +
  sechdr-sh_offset +
--
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/2] ARM: OMAP: Get rid of reset for system timer

2012-02-13 Thread Rajendra Nayak

On Saturday 11 February 2012 12:48 AM, Tony Lindgren wrote:

* Santosh Shilimkarsantosh.shilim...@ti.com  [120202 05:33]:

  From: Rajendra Nayakrna...@ti.com

  hwmod setup already does a reset and sets the OCP sysconfig
  registers appropriately. Avoid doing a reset again and overriding
  the OCP sysconfig settings in the system timer init code.



If we want this queued as a fix, it should also describe what
actually breaks? Timer? PM?


It only fixes the redundant reset and overriding the smartidle-wakeup
OCP setting (done by hwmod) with the smartidle in the driver.
Doing this doesn't really break anything as yet in mainline, but will
cause timer wakeup issues once OFF mode is in place for OMAP4. On OMAP5
however this was causing more issues as the softreset bit position is
different than on OMAP2/3/4.
So it should be ok to queue this in for 3.4 considering neither OMAP4
OFF, not OMAP5 support is in mainline yet.


--
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/6] mmc: omap_hsmmc: Clean up use/abuse of pdev-id

2012-02-13 Thread Rajendra Nayak

On Friday 10 February 2012 06:57 PM, T Krishnamoorthy, Balaji wrote:

On Tue, Feb 7, 2012 at 3:32 PM, S, Venkatramansvenk...@ti.com  wrote:

  On Sat, Feb 4, 2012 at 8:21 PM, Rajendra Nayakrna...@ti.com  wrote:

  This series mainly cleans up all instances of hardcoding's in
  the driver based on pdev-id. This is cleanup leading to the
  DT adaptation of omap_hsmmc driver.

  Patches are based on 3.3-rc2 and can be found here
  git://gitorious.org/omap-pm/linux.git omap_hsmmc_cleanup

  Tested the patches on my omap4 boards (panda and SDP) but
  haven't tested yet on omap3/2 since I did'nt have boards
  handy. So any testing on any omap3/2 boards is really
  appreciated.

Tested this series on 2430SDP with FS on SD card


Thanks, will repost adding Tested-by from you and Venkat, also
getting rid of the one instance of host-id usage left in a
debug print.
--
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] I2C updates

2012-02-13 Thread Hebbar, Gururaja
Hi,

I am interested in testing these patches on AM335x. Do you have a tree with 
these
patches applied so that I can pull.

On Fri, Feb 10, 2012 at 19:29:55, Datta, Shubhrajyoti wrote:
 This patch series colates the various i2c updates into
 a series.  Since it is collection of various patches
 the version info is not retained, however most of them undergone
 multiple versions.
 
 This is rebased to linus head commit 63082402968f4b73f10b28a8ac1f3da821aeb82d
 
 The patch series does the following 
 
 - Warn fixes if CONFIG_PM_RUNTIME is not selected.
 - I2C register restore only if context if the context is lost
 - Bus busy recovery mechanism.
 - the reset is not done in init.
 
 Tested on omap4sdp and omap3sdp. 
 
 
 Cc: Kevin Hilman khil...@ti.com
 Cc: Ben Dooks ben-li...@fluff.org
 
 Jon Hunter (1):
   I2C: OMAP: Correct I2C revision for OMAP3
 
 Shubhrajyoti D (8):
   I2C : OMAP : make omap_i2c_unidle/idle functions depend on
 CONFIG_PM_RUNTIME
   OMAP : I2C : Remove reset at init
   OMAP: I2C: I2C register restore only if context is lost
   OMAP: I2C: Fix the interrupt clearing in OMAP4
   OMAP: I2C: Fix the mismatch of pm_runtime enable and disable
   OMAP: I2C: Optimise the remove code
   OMAP: I2C: Fix the error handling
   I2C: OMAP: Don't check if wait_for_completion_timeout() returns less
 than zero
 
 Vikram Pandita (1):
   I2C: OMAP: Recover from Bus Busy condition
 
  drivers/i2c/busses/i2c-omap.c |  173 
 -
  1 files changed, 101 insertions(+), 72 deletions(-)



Regards, 
Gururaja
--
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/2] ARM: OMAP: Get rid of reset for system timer

2012-02-13 Thread Shilimkar, Santosh
On Tue, Feb 14, 2012 at 10:44 AM, Rajendra Nayak rna...@ti.com wrote:
 On Saturday 11 February 2012 12:48 AM, Tony Lindgren wrote:

 * Santosh Shilimkarsantosh.shilim...@ti.com  [120202 05:33]:

   From: Rajendra Nayakrna...@ti.com
 
   hwmod setup already does a reset and sets the OCP sysconfig
   registers appropriately. Avoid doing a reset again and overriding
   the OCP sysconfig settings in the system timer init code.



 If we want this queued as a fix, it should also describe what
 actually breaks? Timer? PM?


 It only fixes the redundant reset and overriding the smartidle-wakeup
 OCP setting (done by hwmod) with the smartidle in the driver.
 Doing this doesn't really break anything as yet in mainline, but will
 cause timer wakeup issues once OFF mode is in place for OMAP4. On OMAP5
 however this was causing more issues as the softreset bit position is
 different than on OMAP2/3/4.
 So it should be ok to queue this in for 3.4 considering neither OMAP4
 OFF, not OMAP5 support is in mainline yet.

I second Rajendra's comment.

Regards
Santosh
--
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 2/2] pinctrl: Add simple pinmux driver using device tree data

2012-02-13 Thread Dong Aisheng
On Mon, Feb 13, 2012 at 11:11:13AM -0800, Tony Lindgren wrote:
...
  Put it in pinctrl device node?
  Then how do we name each pin?
  And for IMX, currently we name all pins in driver.
  I still can not find a good reason that i should name all pins in dt file.
 
 But do you actually need the pin names in kernel? :)
 
Yes, i meant name pins in driver.

  Yes, we indeed have such a case.
  For IMX, some special pins mux still need a setting called 'select input' 
  which
  is controlled in other registers.
  But a rough idea in my mind that may choose different way to fix this issue.
  It's a little like:
  pinctrl_usdhc4: pinconfig-usdhc4 {
 mux =
 MX6Q_SD4_CMD  0 SELECT_INPUT
 MX6Q_SD4_CLK  0 0
 MX6Q_SD4_DAT0 1 0
 MX6Q_SD4_DAT1 1 0
 MX6Q_SD4_DAT2 1 SELECT_INPUT
 MX6Q_SD4_DAT3 1 0
 MX6Q_SD4_DAT4 1 0
 MX6Q_SD4_DAT5 1 0
 MX6Q_SD4_DAT6 1 0
 MX6Q_SD4_DAT7 1 0;
  }
  This format would not make the dts writer to take too much care of
  register address
  and value. For this case, the #pinmux-cells would be 3;
  It is a little different from OMAP.
 
 If you don't want to keep the extra register entry around, then you
 could have a custom .data entry in the pinctrl driver that contains
 the mapping of these special registers.
 
Yes, that's what i think.
But we still need pass the value for thoes sepcial registers from dt.

  For your proposal, I'm afraid it is a little too much depend on the SoC 
  register
  layout. We need to find a flexible enough way to cover all possible
  register layout
  difference for all SoCs.
  (Considering one register controls multi muxs?)
 
 Most likely those special cases are best handled in hardware specific
 drivers.
  
Yes, common driver needs provide a way to cover that.

  Did i misunderstand?
  I still can not understand why need this.
  The pinctrl properly in device node can support multi pinmuxs .
  serial@4802 {
pinctrl = pmx_uart3_x pmx_uart3_y;
  It's good to me that the consensus we reached at Linaro Connect is much like
  my proposal in above URL. :)
 
 I meant like what you have in the second option here, the count is
 used to parse each entry.
You're right, i misunderstood before.
Sorry for the noise.

Regards
Dong Aisheng
--
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