Re: [PATCH 1/8] ARM: OMAP2+: Move DISPC L3 firewall to happen in omap_display_init()

2012-02-22 Thread Tomi Valkeinen
Hi,

On Tue, 2012-02-21 at 15:40 -0800, Tony Lindgren wrote:
 Otherwise we cannot move most of plat/io.h to be a local
 iomap.h for mach-omap2.
 
 Cc: Tomi Valkeinen tomi.valkei...@ti.com
 Cc: linux-fb...@vger.kernel.org
 Signed-off-by: Tony Lindgren t...@atomide.com
 ---
  arch/arm/mach-omap2/display.c   |3 +++
  drivers/video/omap2/dss/dispc.c |5 -
  2 files changed, 3 insertions(+), 5 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
 index 3677b1f..5a7f12f 100644
 --- a/arch/arm/mach-omap2/display.c
 +++ b/arch/arm/mach-omap2/display.c
 @@ -191,6 +191,9 @@ int __init omap_display_init(struct omap_dss_board_info 
 *board_data)
   memset(pdata, 0, sizeof(pdata));
  
   if (cpu_is_omap24xx()) {
 + /* L3 firewall setting: enable access to OCM RAM */
 + __raw_writel(0x402000b0, OMAP2_L3_IO_ADDRESS(0x680050a0));
 +
   curr_dss_hwmod = omap2_dss_hwmod_data;
   oh_count = ARRAY_SIZE(omap2_dss_hwmod_data);
   } else if (cpu_is_omap34xx()) {
 diff --git a/drivers/video/omap2/dss/dispc.c b/drivers/video/omap2/dss/dispc.c
 index e1626a1..cce0820 100644
 --- a/drivers/video/omap2/dss/dispc.c
 +++ b/drivers/video/omap2/dss/dispc.c
 @@ -3272,11 +3272,6 @@ static void _omap_dispc_initial_config(void)
   if (dss_has_feature(FEAT_FUNCGATED))
   REG_FLD_MOD(DISPC_CONFIG, 1, 9, 9);
  
 - /* L3 firewall setting: enable access to OCM RAM */
 - /* XXX this should be somewhere in plat-omap */
 - if (cpu_is_omap24xx())
 - __raw_writel(0x402000b0, OMAP2_L3_IO_ADDRESS(0x680050a0));
 -
   _dispc_setup_color_conv_coef();
  
   dispc_set_loadmode(OMAP_DSS_LOAD_FRAME_ONLY);
 

I think the whole raw_writel line can be removed. It's been copied from
the old omapfb, and my understanding is that it's about using SRAM for
framebuffer. Using SRAM for fb is no longer supported, and I have a
patch set that removes the remaining SRAM code from omapfb/omapdss.

 Tomi



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


Re: [PATCH 8/8] ARM: OMAP2+: Limit omap_read/write usage to legacy USB drivers

2012-02-22 Thread Tomi Valkeinen
On Tue, 2012-02-21 at 15:40 -0800, Tony Lindgren wrote:
 Drivers should no longer use omap_read/write functions
 but instead use ioremap + read/write functions.
 
 As some USB legacy code is still shared between omap1 and
 omap2420, let's limit the omap_read/write to plat/usb.h.
 
 Also, let's make drivers/video/omap/lcdc.c depend on
 ARCH_OMAP1 as it is not needed for omap2+.

I'm ok with the lcdc.c change, but I also have a patch series that makes
the same change, plus removes the omap2 code from drivers/video/omap/.

Can you check the series, and give ack if the arch/arm side looks fine?
It's this one: [PATCH 00/16] OMAPDSS: old OMAPFB cleanup

 Tomi



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


Re: [PATCH 0/3] OMAPDSS: Miscellaneous DISPC Fixes

2012-02-22 Thread Tomi Valkeinen
On Tue, 2012-02-21 at 19:36 +0530, Archit Taneja wrote:
 These are some minor Display Controller fixes.
 
 Tested on 4430sdp and 3430sdp on the tree:
 
 git://gitorious.org/linux-omap-dss2/linux.git dev
 
 Lajos Molnar (3):
   OMAPDSS: DISPC: Fix OMAP4 supported color formats
   OMAPDSS: DISPC: Fix FIR coefficients
   OMAPDSS: DSS: Add runtime_pm protection around wait_for_vsync.
 
  drivers/video/omap2/dss/dispc.c|   24 +++-
  drivers/video/omap2/dss/dispc_coefs.c  |9 -
  drivers/video/omap2/dss/dss_features.c |3 ++-
  3 files changed, 21 insertions(+), 15 deletions(-)

Thanks, I've applied these.

 Tomi




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


RE: [GIT PULL] OMAP PM EMU fix for v3.3

2012-02-22 Thread Madhusudhan.Gowda
Hi Kevin / Paul,

I have tested this on beagle board as well as on OMAP3630 based
propriatory phone using SDTI serial trace interface.

Also you can test it by just observing the 
CM_EMU (48005100) clkstctrl register
 48 = 0001
Across MPU OFF alone

[root@beagleboard /]# echo 0 
/sys/kernel/debug/pm_debug/neon_pwrdm/suspend
[root@beagleboard /]# echo 0 
/sys/kernel/debug/pm_debug/mpu_pwrdm/suspend
[root@beagleboard /]# echo 1 
/sys/kernel/debug/pm_debug/core_pwrdm/suspend
[root@beagleboard /]# echo 1 
/sys/kernel/debug/pm_debug/per_pwrdm/suspend
[root@beagleboard /]# echo mem /sys/power/state
[   59.694671] PM: Syncing filesystems ... done.
[   59.758209] Freezing user space processes ... (elapsed 0.02 seconds)
done.
[   59.789947] Freezing remaining freezable tasks ... (elapsed 0.02
seconds) done.
[   59.820709] Suspending console(s) (use no_console_suspend to debug)
[   60.055816] PM: suspend of devices complete after 212.493 msecs
[   60.059661] PM: late suspend of devices complete after 3.784 msecs
[   60.059753] Disabling non-boot CPUs ...
[   64.299865] Successfully put all powerdomains to target state
[   64.302551] PM: early resume of devices complete after 2.319 msecs
[   64.636444] PM: resume of devices complete after 332.336 msecs
[   64.688446] Restarting tasks ... done.
[root@beagleboard /]# 

And then print again the CM_EMU (48005100) clkstctrl register offset 48
this will have the reset value and PRM_EMU (48307100) offset e4 =
0100 register confirms the domain wakeup reset from OFF.

At this moment the SDTI serial trace interface looses connection.

With my patch applied the CM_EMU (48005100) clkstctrl register restores
it initial setting across MPU OFF.

Thanks
Gowda


-Original Message-
From: Kevin Hilman [mailto:khil...@ti.com] 
Sent: 20 February 2012 17:30
To: Gowda Madhusudhan; Paul Walmsley
Cc: linux-omap@vger.kernel.org; linux-arm-ker...@lists.infradead.org;
t...@atomide.com
Subject: Re: [GIT PULL] OMAP PM EMU fix for v3.3

+Paul

Paul maintains the CM core code and should take this patch if he's OK
with it.

Also, it is most helpful if you describe what platforms it was tested on
and exactly how you tested it.

Thanks,

Kevin

madhusudhan.go...@elektrobit.com writes:

 Hi Kevin,

 I think you have missed my last mail. Could you please ACK the pull 
 request and pull the same.

 Best Regards
 Gowda


 -Original Message-
 From: linux-arm-kernel-boun...@lists.infradead.org
 [mailto:linux-arm-kernel-boun...@lists.infradead.org] On Behalf Of
 linux-arm-kernel-bounces+madhusudhan.gowda=elektrobit.com@lists.infrad
 linux-arm-kernel-bounces+ea
 d.org
 Sent: 28 January 2012 09:58
 To: t...@atomide.com; khil...@ti.com
 Cc: linux-omap@vger.kernel.org; linux-arm-ker...@lists.infradead.org
 Subject: RE: [GIT PULL] OMAP PM EMU fix for v3.3

 Thanks Tony

 Hi Kevin
 Please do the needful and pull the same.

 Best Regards
 Gowda


 -Original Message-
 From: linux-arm-kernel-boun...@lists.infradead.org
 [mailto:linux-arm-kernel-boun...@lists.infradead.org] On Behalf Of 
 Tony Lindgren
 Sent: 27 January 2012 21:03
 To: Gowda Madhusudhan
 Cc: Kevin Hilman; linux-omap@vger.kernel.org; 
 linux-arm-ker...@lists.infradead.org
 Subject: Re: [GIT PULL] OMAP PM EMU fix for v3.3

 Hi,

 * madhusudhan.go...@elektrobit.com madhusudhan.go...@elektrobit.com
 [120127 10:25]:
 Hi Tony,
 
 Please pull the PM EMU off mode fix for v3.3

 It's best that Kevin queues this as it affects PM. Or it at least 
 needs an ack from Kevin.

 Regards,

 Tony
  
 Thanks
 Gowda
 
 The following changes since commit
 1c6ece3c23e58d0dbc687407d606f3560ded582a:
 
   Merge branch 'omap_fixes_a_3.3rc' of git://git.pwsan.com/linux-2.6
 (2012-01-26 16:48:37 -0800)
 
 are available in the git repository at:
 
   git://github.com/elektrobit/linux.git linux-omap-emu-fix
 
 Madhusudhan Gowda (1):
   ARM: OMAP3 PM:Save and restore EMU context across MPU OFF
 
  arch/arm/mach-omap2/cm2xxx_3xxx.c |   16 
  arch/arm/mach-omap2/cm2xxx_3xxx.h |2 ++
  arch/arm/mach-omap2/pm34xx.c  |8 
  3 files changed, 22 insertions(+), 4 deletions(-)
 
 
 
 Please note: This e-mail may contain confidential information 
 intended

 solely for the addressee. If you have received this e-mail in error, 
 please do not disclose it to anyone, notify the sender promptly, and 
 delete the message from your system.
 Thank you.
 

 ___
 linux-arm-kernel mailing list
 linux-arm-ker...@lists.infradead.org
 http://lists.infradead.org/mailman/listinfo/linux-arm-kernel


 
 Please note: This e-mail may contain confidential information intended

 solely for the addressee. If you have received this e-mail in error, 
 please do not disclose it to anyone, notify the sender promptly, and 
 delete the message from your system.
 Thank you.


 

Latest OMAP randconfig build error

2012-02-22 Thread Russell King - ARM Linux
arch/arm/mach-omap2/mailbox.c: In function 'omap2_mbox_probe':
arch/arm/mach-omap2/mailbox.c:354: error: 'omap2_mboxes' undeclared (first use 
in this function)
arch/arm/mach-omap2/mailbox.c:354: error: (Each undeclared identifier is 
reported only once
arch/arm/mach-omap2/mailbox.c:354: error: for each function it appears in.)

There's also these warnings:

arch/arm/mach-omap2/omap-wakeupgen.c:181: warning: 'wakeupgen_irqmask_all' 
defined but not used

WARNING: arch/arm/mach-omap2/built-in.o(.text+0x7878): Section mismatch in 
reference from the function sr_dev_init() to the function 
.init.text:sr_set_nvalues()
The function sr_dev_init() references
the function __init sr_set_nvalues().
This is often because sr_dev_init lacks a __init
annotation or the annotation of sr_set_nvalues is wrong.

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


[PATCH 1/2] iommu/omap: fix erroneous omap-iommu-debug API calls

2012-02-22 Thread Ohad Ben-Cohen
Adapt omap-iommu-debug to the latest omap-iommu API changes, which
were introduced by commit fabdbca iommu/omap: eliminate the public
omap_find_iommu_device() method.

In a nutshell, iommu users are not expected to provide the omap_iommu
handle anymore - instead, iommus are attached using their user's device
handle.

omap-iommu-debug is a hybrid beast though: it invokes both public and
private omap iommu API, so fix it as necessary (otherwise a crash
is imminent).

Note: omap-iommu-debug is a bit disturbing, as it fiddles with internal
omap iommu data and requires exposing API which is otherwise not needed.
It should better be more tightly coupled with omap-iommu, to prevent
further bit rot and avoid exposing redundant API. Naturally that's out
of scope for the -rc cycle, so for now just fix the obvious.

Reported-by: Russell King li...@arm.linux.org.uk
Signed-off-by: Ohad Ben-Cohen o...@wizery.com
Cc: Tony Lindgren t...@atomide.com
Cc: Hiroshi Doyu hd...@nvidia.com
Cc: Laurent Pinchart laurent.pinch...@ideasonboard.com
Cc: Joerg Roedel joerg.roe...@amd.com
---
 drivers/iommu/omap-iommu-debug.c |   55 +
 1 files changed, 43 insertions(+), 12 deletions(-)

diff --git a/drivers/iommu/omap-iommu-debug.c b/drivers/iommu/omap-iommu-debug.c
index 288da5c..bad9f9d 100644
--- a/drivers/iommu/omap-iommu-debug.c
+++ b/drivers/iommu/omap-iommu-debug.c
@@ -44,7 +44,8 @@ static ssize_t debug_read_ver(struct file *file, char __user 
*userbuf,
 static ssize_t debug_read_regs(struct file *file, char __user *userbuf,
   size_t count, loff_t *ppos)
 {
-   struct omap_iommu *obj = file-private_data;
+   struct device *dev = file-private_data;
+   struct omap_iommu *obj = dev_to_omap_iommu(dev);
char *p, *buf;
ssize_t bytes;
 
@@ -67,7 +68,8 @@ static ssize_t debug_read_regs(struct file *file, char __user 
*userbuf,
 static ssize_t debug_read_tlb(struct file *file, char __user *userbuf,
  size_t count, loff_t *ppos)
 {
-   struct omap_iommu *obj = file-private_data;
+   struct device *dev = file-private_data;
+   struct omap_iommu *obj = dev_to_omap_iommu(dev);
char *p, *buf;
ssize_t bytes, rest;
 
@@ -97,7 +99,8 @@ static ssize_t debug_write_pagetable(struct file *file,
struct iotlb_entry e;
struct cr_regs cr;
int err;
-   struct omap_iommu *obj = file-private_data;
+   struct device *dev = file-private_data;
+   struct omap_iommu *obj = dev_to_omap_iommu(dev);
char buf[MAXCOLUMN], *p = buf;
 
count = min(count, sizeof(buf));
@@ -184,7 +187,8 @@ out:
 static ssize_t debug_read_pagetable(struct file *file, char __user *userbuf,
size_t count, loff_t *ppos)
 {
-   struct omap_iommu *obj = file-private_data;
+   struct device *dev = file-private_data;
+   struct omap_iommu *obj = dev_to_omap_iommu(dev);
char *p, *buf;
size_t bytes;
 
@@ -212,7 +216,8 @@ static ssize_t debug_read_pagetable(struct file *file, char 
__user *userbuf,
 static ssize_t debug_read_mmap(struct file *file, char __user *userbuf,
   size_t count, loff_t *ppos)
 {
-   struct omap_iommu *obj = file-private_data;
+   struct device *dev = file-private_data;
+   struct omap_iommu *obj = dev_to_omap_iommu(dev);
char *p, *buf;
struct iovm_struct *tmp;
int uninitialized_var(i);
@@ -254,7 +259,7 @@ static ssize_t debug_read_mmap(struct file *file, char 
__user *userbuf,
 static ssize_t debug_read_mem(struct file *file, char __user *userbuf,
  size_t count, loff_t *ppos)
 {
-   struct omap_iommu *obj = file-private_data;
+   struct device *dev = file-private_data;
char *p, *buf;
struct iovm_struct *area;
ssize_t bytes;
@@ -268,7 +273,7 @@ static ssize_t debug_read_mem(struct file *file, char 
__user *userbuf,
 
mutex_lock(iommu_debug_lock);
 
-   area = omap_find_iovm_area(obj, (u32)ppos);
+   area = omap_find_iovm_area(dev, (u32)ppos);
if (IS_ERR(area)) {
bytes = -EINVAL;
goto err_out;
@@ -287,7 +292,7 @@ err_out:
 static ssize_t debug_write_mem(struct file *file, const char __user *userbuf,
   size_t count, loff_t *ppos)
 {
-   struct omap_iommu *obj = file-private_data;
+   struct device *dev = file-private_data;
struct iovm_struct *area;
char *p, *buf;
 
@@ -305,7 +310,7 @@ static ssize_t debug_write_mem(struct file *file, const 
char __user *userbuf,
goto err_out;
}
 
-   area = omap_find_iovm_area(obj, (u32)ppos);
+   area = omap_find_iovm_area(dev, (u32)ppos);
if (IS_ERR(area)) {
count = -EINVAL;
goto err_out;
@@ -350,7 +355,7 @@ DEBUG_FOPS(mem);
{

[PATCH 2/2] iommu/omap: fix NULL pointer dereference

2012-02-22 Thread Ohad Ben-Cohen
Fix this:

root@omap4430-panda:~# cat /debug/iommu/ducati/mem
[   62.725708] Unable to handle kernel NULL pointer dereference at virtual addre
ss 001c
[   62.725708] pgd = e624
[   62.737091] [001c] *pgd=a7168831, *pte=, *ppte=
[   62.743682] Internal error: Oops: 17 [#1] SMP
[   62.743682] Modules linked in: omap_iommu_debug omap_iovmm virtio_rpmsg_bus o
map_remoteproc remoteproc virtio_ring virtio mailbox_mach mailbox
[   62.743682] CPU: 0Not tainted  (3.3.0-rc1-00265-g382f84e-dirty #682)
[   62.743682] PC is at debug_read_mem+0x5c/0xac [omap_iommu_debug]
[   62.743682] LR is at 0x1004
[   62.777832] pc : [bf033178]lr : [1004]psr: 6013
[   62.777832] sp : e72c7f40  ip : c0763c00  fp : 0001
[   62.777832] r10:   r9 :   r8 : e72c7f80
[   62.777832] r7 : e6ffdc08  r6 : bed1ac78  r5 : 1000  r4 : e7276000
[   62.777832] r3 : e60f3460  r2 :   r1 : e60f38c0  r0 : 
[   62.777832] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[   62.816375] Control: 10c53c7d  Table: a624004a  DAC: 0015
[   62.816375] Process cat (pid: 1176, stack limit = 0xe72c62f8)
[   62.828369] Stack: (0xe72c7f40 to 0xe72c8000)
...
[   62.884185] [bf033178] (debug_read_mem+0x5c/0xac [omap_iommu_debug]) from [
c010e354] (vfs_read+0xac/0x130)
[   62.884185] [c010e354] (vfs_read+0xac/0x130) from [c010e4a8] (sys_read+0x
40/0x70)
[   62.884185] [c010e4a8] (sys_read+0x40/0x70) from [c0014a00] (ret_fast_sys
call+0x0/0x3c)

Fix also its 'echo bla  /debug/iommu/ducati/mem' Oops sibling, too.

Signed-off-by: Ohad Ben-Cohen o...@wizery.com
Cc: Tony Lindgren t...@atomide.com
Cc: Hiroshi Doyu hd...@nvidia.com
Cc: Laurent Pinchart laurent.pinch...@ideasonboard.com
Cc: Russell King li...@arm.linux.org.uk
Cc: Joerg Roedel joerg.roe...@amd.com
---
 drivers/iommu/omap-iommu-debug.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/iommu/omap-iommu-debug.c b/drivers/iommu/omap-iommu-debug.c
index bad9f9d..a2ab29e 100644
--- a/drivers/iommu/omap-iommu-debug.c
+++ b/drivers/iommu/omap-iommu-debug.c
@@ -274,7 +274,7 @@ static ssize_t debug_read_mem(struct file *file, char 
__user *userbuf,
mutex_lock(iommu_debug_lock);
 
area = omap_find_iovm_area(dev, (u32)ppos);
-   if (IS_ERR(area)) {
+   if (IS_ERR_OR_NULL(area)) {
bytes = -EINVAL;
goto err_out;
}
@@ -311,7 +311,7 @@ static ssize_t debug_write_mem(struct file *file, const 
char __user *userbuf,
}
 
area = omap_find_iovm_area(dev, (u32)ppos);
-   if (IS_ERR(area)) {
+   if (IS_ERR_OR_NULL(area)) {
count = -EINVAL;
goto err_out;
}
-- 
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 2/2] iommu/omap: fix NULL pointer dereference

2012-02-22 Thread Russell King - ARM Linux
On Wed, Feb 22, 2012 at 10:52:52AM +0200, Ohad Ben-Cohen wrote:
 @@ -274,7 +274,7 @@ static ssize_t debug_read_mem(struct file *file, char 
 __user *userbuf,
   mutex_lock(iommu_debug_lock);
  
   area = omap_find_iovm_area(dev, (u32)ppos);
 - if (IS_ERR(area)) {
 + if (IS_ERR_OR_NULL(area)) {
   bytes = -EINVAL;

There's something else which needs fixing here - the return code.  If
omap_find_iovm_area() returns an error code that needs propagating.
Otherwise it might as well just return NULL for all errors.
--
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] iommu/omap: fix NULL pointer dereference

2012-02-22 Thread Ohad Ben-Cohen
On Wed, Feb 22, 2012 at 10:56 AM, Russell King - ARM Linux
li...@arm.linux.org.uk wrote:
 There's something else which needs fixing here - the return code.  If
 omap_find_iovm_area() returns an error code that needs propagating.
 Otherwise it might as well just return NULL for all errors.

Seems like it does just return NULL for all errors, so a cleaner fix
can probably just be s/IS_ERR(area)/!area/.

I'll submit it, but Joerg, if you feel this is becoming a cleanup,
feel free to take the first version.

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


[PATCH v2 2/2] iommu/omap: fix NULL pointer dereference

2012-02-22 Thread Ohad Ben-Cohen
Fix this:

root@omap4430-panda:~# cat /debug/iommu/ducati/mem
[   62.725708] Unable to handle kernel NULL pointer dereference at virtual addre
ss 001c
[   62.725708] pgd = e624
[   62.737091] [001c] *pgd=a7168831, *pte=, *ppte=
[   62.743682] Internal error: Oops: 17 [#1] SMP
[   62.743682] Modules linked in: omap_iommu_debug omap_iovmm virtio_rpmsg_bus o
map_remoteproc remoteproc virtio_ring virtio mailbox_mach mailbox
[   62.743682] CPU: 0Not tainted  (3.3.0-rc1-00265-g382f84e-dirty #682)
[   62.743682] PC is at debug_read_mem+0x5c/0xac [omap_iommu_debug]
[   62.743682] LR is at 0x1004
[   62.777832] pc : [bf033178]lr : [1004]psr: 6013
[   62.777832] sp : e72c7f40  ip : c0763c00  fp : 0001
[   62.777832] r10:   r9 :   r8 : e72c7f80
[   62.777832] r7 : e6ffdc08  r6 : bed1ac78  r5 : 1000  r4 : e7276000
[   62.777832] r3 : e60f3460  r2 :   r1 : e60f38c0  r0 : 
[   62.777832] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
[   62.816375] Control: 10c53c7d  Table: a624004a  DAC: 0015
[   62.816375] Process cat (pid: 1176, stack limit = 0xe72c62f8)
[   62.828369] Stack: (0xe72c7f40 to 0xe72c8000)
...
[   62.884185] [bf033178] (debug_read_mem+0x5c/0xac [omap_iommu_debug]) from [
c010e354] (vfs_read+0xac/0x130)
[   62.884185] [c010e354] (vfs_read+0xac/0x130) from [c010e4a8] (sys_read+0x
40/0x70)
[   62.884185] [c010e4a8] (sys_read+0x40/0x70) from [c0014a00] (ret_fast_sys
call+0x0/0x3c)

Fix also its 'echo bla  /debug/iommu/ducati/mem' Oops sibling, too.

Signed-off-by: Ohad Ben-Cohen o...@wizery.com
Cc: Tony Lindgren t...@atomide.com
Cc: Hiroshi Doyu hd...@nvidia.com
Cc: Laurent Pinchart laurent.pinch...@ideasonboard.com
Cc: Russell King li...@arm.linux.org.uk
Cc: Joerg Roedel joerg.roe...@amd.com
---
v2: omap_find_iovm_area only returns NULL for errors. thanks, rmk.

 drivers/iommu/omap-iommu-debug.c |4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/iommu/omap-iommu-debug.c b/drivers/iommu/omap-iommu-debug.c
index bad9f9d..103dbd9 100644
--- a/drivers/iommu/omap-iommu-debug.c
+++ b/drivers/iommu/omap-iommu-debug.c
@@ -274,7 +274,7 @@ static ssize_t debug_read_mem(struct file *file, char 
__user *userbuf,
mutex_lock(iommu_debug_lock);
 
area = omap_find_iovm_area(dev, (u32)ppos);
-   if (IS_ERR(area)) {
+   if (!area) {
bytes = -EINVAL;
goto err_out;
}
@@ -311,7 +311,7 @@ static ssize_t debug_write_mem(struct file *file, const 
char __user *userbuf,
}
 
area = omap_find_iovm_area(dev, (u32)ppos);
-   if (IS_ERR(area)) {
+   if (!area) {
count = -EINVAL;
goto err_out;
}
-- 
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 2/2] iommu/omap: fix NULL pointer dereference

2012-02-22 Thread Russell King - ARM Linux
On Wed, Feb 22, 2012 at 11:10:38AM +0200, Ohad Ben-Cohen wrote:
 On Wed, Feb 22, 2012 at 10:56 AM, Russell King - ARM Linux
 li...@arm.linux.org.uk wrote:
  There's something else which needs fixing here - the return code.  If
  omap_find_iovm_area() returns an error code that needs propagating.
  Otherwise it might as well just return NULL for all errors.
 
 Seems like it does just return NULL for all errors, so a cleaner fix
 can probably just be s/IS_ERR(area)/!area/.
 
 I'll submit it, but Joerg, if you feel this is becoming a cleanup,
 feel free to take the first version.

That sounds more like a bug fix than a cleanup to me.
--
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] OMAPDSS: DSS: Add runtime_pm protection around wait_for_vsync.

2012-02-22 Thread Archit Taneja

On Wednesday 22 February 2012 12:19 PM, Tomi Valkeinen wrote:

On Wed, 2012-02-22 at 11:15 +0530, Archit Taneja wrote:

On Tuesday 21 February 2012 09:38 PM, Tomi Valkeinen wrote:

On Tue, 2012-02-21 at 19:36 +0530, Archit Taneja wrote:

From: Lajos Molnarla...@ti.com

If DSS is suspended during a wait_for_vsync operation, it may loose its clock.
Request runtime_pm around wait_for_vsync.

Signed-off-by: Lajos Molnarla...@ti.com
Signed-off-by: Archit Tanejaarc...@ti.com
---
   drivers/video/omap2/dss/dispc.c |   16 +++-
   1 files changed, 11 insertions(+), 5 deletions(-)


This only handles omap_dispc_wait_for_irq_interruptible_timeout(),
there's also omap_dispc_wait_for_irq_timeout().

However, I think it'd be better to do the runtime_get/put in the caller,
instead of in these dispc's wait funcs. While it doesn't really matter
with dss_mgr_wait_for_vsync(), for dss_mgr/ovl_wait_for_go() it makes
much more sense to get/put there just once, instead of every time the
omap_dispc_wait_* is called.


Right, that makes sense. Btw, in the current code, how do we ensure that
clocks are enabled when someone calls omap_dss_mgr_apply().


We don't. Apply does not touch any of the registers if the corresponding
manager is not enabled, so there's no need to enable clocks.


Okay, so if a manager is disabled, we won't write to the registers, but 
still update the private data of the manager and connected overlays, and 
these will be later written to the registers once the manager gets 
enabled. Makes sense.


In the older apply, we used to always enable clocks, even if we wrote to 
registers or not. So I got mixed up with that.


Thanks,
Archit



  Tomi



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


Re: Latest OMAP randconfig build error

2012-02-22 Thread Ohad Ben-Cohen
+ Tony, Suman

On Wed, Feb 22, 2012 at 10:51 AM, Russell King - ARM Linux
li...@arm.linux.org.uk wrote:
 arch/arm/mach-omap2/mailbox.c: In function 'omap2_mbox_probe':
 arch/arm/mach-omap2/mailbox.c:354: error: 'omap2_mboxes' undeclared (first 
 use in this function)
 arch/arm/mach-omap2/mailbox.c:354: error: (Each undeclared identifier is 
 reported only once
 arch/arm/mach-omap2/mailbox.c:354: error: for each function it appears in.)

The below should trivially solve this, but I wonder if there was any
other merit in explicitly using CONFIG_SOC_OMAP2420 there (any
different between 2420 and 2430 in that respect ?).

diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c
index 609ea2d..e61d275 100644
--- a/arch/arm/mach-omap2/mailbox.c
+++ b/arch/arm/mach-omap2/mailbox.c
@@ -258,7 +258,7 @@ struct omap_mbox mbox_dsp_info = {
 struct omap_mbox *omap3_mboxes[] = { mbox_dsp_info, NULL };
 #endif

-#if defined(CONFIG_SOC_OMAP2420)
+#if defined(CONFIG_ARCH_OMAP2)
 /* IVA */
 static struct omap_mbox2_priv omap2_mbox_iva_priv = {
.tx_fifo = {
--
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: [PATCHv10 3/4] omap3: add common twl configurations for vdd1 and vdd2

2012-02-22 Thread Tero Kristo
On Tue, 2012-02-21 at 16:00 -0800, Kevin Hilman wrote:
 Tero Kristo t-kri...@ti.com writes:
 
  VDD1 and VDD2 are the core voltage regulators on OMAP3. VDD1 is used
  to control MPU/IVA voltage, and VDD2 is used for CORE. These regulators
  are needed by DVFS.
 
  Voltage ranges for VDD1 and VDD2 are taken from twl4030/twl5030 data 
  manuals:
  - SWCS019L : TWL4030 ES3.1 Data Manual rev L
  - SWCS030E : TWL5030 ES1.2 Data Manual rev E
 
  Signed-off-by: Tero Kristo t-kri...@ti.com
 
 Do you have a similar patch for OMAP4 support?

It looks like OMAP4 support requires some changes to the twl-regulator /
twl-core in addition to the twl-common.c. I have these available (just
created them), should I post these out? Attached here for reference in
case you need to test something quickly.

-Tero

From 4bee5804e8f20af94ecfe170dd4c5df984bdca6c Mon Sep 17 00:00:00 2001
From: Tero Kristo t-kri...@ti.com
Date: Wed, 22 Feb 2012 12:36:58 +0200
Subject: [PATCH 1/2] regulator: twl6030: add support for vdd1, vdd2 and vdd3 regulators

vdd1 and vdd2 are now common regulators for twl4030 and twl6030. Also
added vdd3 as a new regulator for twl6030. twl6030 vdd1...vdd3 smps
regulator voltages can only be controlled through the smartreflex
voltage channel, thus the support for the voltage_get and set is
minimal and requires external controller.

Signed-off-by: Tero Kristo t-kri...@ti.com
---
 drivers/mfd/twl-core.c|   15 ++
 drivers/regulator/twl-regulator.c |   39 +
 include/linux/i2c/twl.h   |5 ++-
 3 files changed, 57 insertions(+), 2 deletions(-)

diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c
index fae5f76..c788e36 100644
--- a/drivers/mfd/twl-core.c
+++ b/drivers/mfd/twl-core.c
@@ -949,6 +949,21 @@ add_children(struct twl4030_platform_data *pdata, unsigned long features)
 	/* twl6030 regulators */
 	if (twl_has_regulator()  twl_class_is_6030() 
 			!(features  TWL6025_SUBCLASS)) {
+		child = add_regulator(TWL6030_REG_VDD1, pdata-vdd1,
+	features);
+		if (IS_ERR(child))
+			return PTR_ERR(child);
+
+		child = add_regulator(TWL6030_REG_VDD2, pdata-vdd2,
+	features);
+		if (IS_ERR(child))
+			return PTR_ERR(child);
+
+		child = add_regulator(TWL6030_REG_VDD3, pdata-vdd3,
+	features);
+		if (IS_ERR(child))
+			return PTR_ERR(child);
+
 		child = add_regulator(TWL6030_REG_VMMC, pdata-vmmc,
 	features);
 		if (IS_ERR(child))
diff --git a/drivers/regulator/twl-regulator.c b/drivers/regulator/twl-regulator.c
index 0afc9e1a..55a0e4d 100644
--- a/drivers/regulator/twl-regulator.c
+++ b/drivers/regulator/twl-regulator.c
@@ -561,6 +561,32 @@ static struct regulator_ops twl4030smps_ops = {
 	.get_voltage	= twl4030smps_get_voltage,
 };
 
+static int twl6030coresmps_set_voltage(struct regulator_dev *rdev, int min_uV,
+	int max_uV, unsigned *selector)
+{
+	struct twlreg_info *info = rdev_get_drvdata(rdev);
+
+	if (info-set_voltage)
+		return info-set_voltage(info-data, min_uV);
+
+	return 0;
+}
+
+static int twl6030coresmps_get_voltage(struct regulator_dev *rdev)
+{
+	struct twlreg_info *info = rdev_get_drvdata(rdev);
+
+	if (info-get_voltage)
+		return info-get_voltage(info-data);
+
+	return 0;
+}
+
+static struct regulator_ops twl6030coresmps_ops = {
+	.set_voltage	= twl6030coresmps_set_voltage,
+	.get_voltage	= twl6030coresmps_get_voltage,
+};
+
 static int twl6030ldo_list_voltage(struct regulator_dev *rdev, unsigned index)
 {
 	struct twlreg_info	*info = rdev_get_drvdata(rdev);
@@ -918,6 +944,16 @@ static struct regulator_ops twlsmps_ops = {
 		}, \
 	}
 
+#define TWL6030_ADJUSTABLE_SMPS(label) { \
+	.desc = { \
+		.name = #label, \
+		.id = TWL6030_REG_##label, \
+		.ops = twl6030coresmps_ops, \
+		.type = REGULATOR_VOLTAGE, \
+		.owner = THIS_MODULE, \
+		}, \
+	}
+
 #define TWL6030_ADJUSTABLE_LDO(label, offset, min_mVolts, max_mVolts) { \
 	.base = offset, \
 	.min_mV = min_mVolts, \
@@ -1019,6 +1055,9 @@ static struct twlreg_info twl_regs[] = {
 	/* 6030 REG with base as PMC Slave Misc : 0x0030 */
 	/* Turnon-delay and remap configuration values for 6030 are not
 	   verified since the specification is not public */
+	TWL6030_ADJUSTABLE_SMPS(VDD1),
+	TWL6030_ADJUSTABLE_SMPS(VDD2),
+	TWL6030_ADJUSTABLE_SMPS(VDD3),
 	TWL6030_ADJUSTABLE_LDO(VAUX1_6030, 0x54, 1000, 3300),
 	TWL6030_ADJUSTABLE_LDO(VAUX2_6030, 0x58, 1000, 3300),
 	TWL6030_ADJUSTABLE_LDO(VAUX3_6030, 0x5c, 1000, 3300),
diff --git a/include/linux/i2c/twl.h b/include/linux/i2c/twl.h
index 08a82d3..f66c031 100644
--- a/include/linux/i2c/twl.h
+++ b/include/linux/i2c/twl.h
@@ -712,6 +712,9 @@ struct twl4030_platform_data {
 	struct regulator_init_data		*vaux1;
 	struct regulator_init_data		*vaux2;
 	struct regulator_init_data		*vaux3;
+	struct regulator_init_data		*vdd1;
+	struct regulator_init_data		*vdd2;
+	struct regulator_init_data		*vdd3;
 	/* TWL4030 LDO regulators */
 	struct regulator_init_data		*vpll1;
 	struct regulator_init_data		*vpll2;
@@ -720,8 +723,6 @@ 

Re: [RFC PATCH 1/2] of: Add generic device tree DMA helpers

2012-02-22 Thread Nicolas Ferre
On 01/27/2012 06:29 PM, Cousson, Benoit :
 Add some basic helpers to retrieve a DMA controller device_node
 and the DMA request line number.
 
 For legacy reason another API will export the DMA request number
 into a Linux resource of type IORESOURCE_DMA.
 This API is usable only on system with an unique DMA controller.

Hi,

I followed that discussion and I like very much the biding that Benoit
is proposing. It will help me a lot with my current work on Atmel DMA
controller.

If I understand correctly, some rework is needed before it can be
integrated in a stable git tree (I mean before we can base our work on
top of it). So, in the meantime, what should I do to help and make
things go forward? to be quite frank, I would be interested to have a
working DMA enabled device soon ;-)
Do you think that 3.4 is out of reach?

Best regards,

 Signed-off-by: Benoit Cousson b-cous...@ti.com
 Cc: Grant Likely grant.lik...@secretlab.ca
 Cc: Rob Herring rob.herr...@calxeda.com
 ---
  Documentation/devicetree/bindings/dma/dma.txt |   44 +
  drivers/of/Kconfig|5 +
  drivers/of/Makefile   |1 +
  drivers/of/dma.c  |  130 
 +
  include/linux/of_dma.h|   49 +
  5 files changed, 229 insertions(+), 0 deletions(-)
  create mode 100644 Documentation/devicetree/bindings/dma/dma.txt
  create mode 100644 drivers/of/dma.c
  create mode 100644 include/linux/of_dma.h
 
 diff --git a/Documentation/devicetree/bindings/dma/dma.txt 
 b/Documentation/devicetree/bindings/dma/dma.txt
 new file mode 100644
 index 000..7f2a301
 --- /dev/null
 +++ b/Documentation/devicetree/bindings/dma/dma.txt
 @@ -0,0 +1,44 @@
 +* Generic DMA Controller and DMA request bindings
 +
 +Generic binding to provide a way for a driver to retrieve the
 +DMA request line that goes from an IP to a DMA controller.
 +
 +
 +* DMA controller
 +
 +Required properties:
 +- dma-controller: Mark the device as a DMA controller
 +- #dma-cells: Number of cell for each DMA line, must be one.
 +
 +
 +Example:
 +
 + sdma: dma-controller@4800 {
 + compatible = ti,sdma-omap4
 + reg = 0x4800 0x1000;
 + interrupts = 12;
 +dma-controller;
 + #dma-cells = 1;
 + };
 +
 +
 +
 +* DMA client
 +
 +Client drivers should specify the DMA request numbers using a phandle to
 +the controller + the DMA request number on that controller.
 +
 +Required properties:
 +- dma-request: List of pair phandle + dma-request per line
 +- dma-request-names: list of strings in the same order as the dma-request
 +  in the dma-request property.
 +
 +
 +Example:
 +
 +i2c1: i2c@1 {
 +...
 +dma-request = sdma 2 sdma 3;
 +dma-request-names = tx, rx;
 +...
 +};
 diff --git a/drivers/of/Kconfig b/drivers/of/Kconfig
 index 268163d..7d1f06b 100644
 --- a/drivers/of/Kconfig
 +++ b/drivers/of/Kconfig
 @@ -90,4 +90,9 @@ config OF_PCI_IRQ
   help
 OpenFirmware PCI IRQ routing helpers
  
 +config OF_DMA
 + def_bool y
 + help
 +   Device Tree DMA routing helpers
 +
  endmenu # OF
 diff --git a/drivers/of/Makefile b/drivers/of/Makefile
 index a73f5a5..d08443b 100644
 --- a/drivers/of/Makefile
 +++ b/drivers/of/Makefile
 @@ -12,3 +12,4 @@ obj-$(CONFIG_OF_SELFTEST) += selftest.o
  obj-$(CONFIG_OF_MDIO)+= of_mdio.o
  obj-$(CONFIG_OF_PCI) += of_pci.o
  obj-$(CONFIG_OF_PCI_IRQ)  += of_pci_irq.o
 +obj-$(CONFIG_OF_DMA)  += dma.o
 diff --git a/drivers/of/dma.c b/drivers/of/dma.c
 new file mode 100644
 index 000..d4927e2
 --- /dev/null
 +++ b/drivers/of/dma.c
 @@ -0,0 +1,130 @@
 +/*
 + * Device tree helpers for DMA request / controller
 + *
 + * Based on of_gpio.c
 + *
 + * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
 + *
 + * This program is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License version 2 as
 + * published by the Free Software Foundation.
 + */
 +
 +#include linux/device.h
 +#include linux/err.h
 +#include linux/module.h
 +#include linux/of.h
 +#include linux/of_dma.h
 +
 +/**
 + * of_get_dma_request() - Get a DMA request number and dma-controller node
 + * @np:  device node to get DMA request from
 + * @propname:property name containing DMA specifier(s)
 + * @index:   index of the DMA request
 + * @ctrl_np: a device_node pointer to fill in
 + *
 + * Returns DMA number along to the dma controller node, or one of the errno
 + * value on the error condition. If @ctrl_np is not NULL the function also
 + * fills in the DMA controller device_node pointer.
 + */
 +int of_get_dma_request(struct device_node *np, int index,
 +struct device_node **ctrl_np)
 +{
 + int ret = -EINVAL;
 + struct of_phandle_args dma_spec;
 +
 + ret = of_parse_phandle_with_args(np, dma-request, 

ks8851 speed regression in kernel 3.0.17-115c

2012-02-22 Thread Maxim Podbereznyy
Hi!

Current kernel: linux-3.0.17-r115c
Download speed:  745kB/sec

Previous kernel: 2.6.32-r78
Download speed: 1MB/sec

I noticed the regression in speed for ks8851 driver (Micrel
KSZ8851-SNL). I used this part with kernel 2.6.32 and the speed was
1MB/s. Then the driver code was changed and for current Linux version
linux-3.0.17-r115c the speed is 745kB/s. 25% speed reduce is indeed
noticeable.

I use Angstrom Linux built in OE environment.
Target board is Beagleboard C4.
--
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


tps65930: MIC does not work

2012-02-22 Thread Maxim Podbereznyy
Hi!

I use Angstrom Linux with devkit8000 where TPS65930 is installed.
Current kernel version is linux-3.0.17-r115c.

I can't enable MIC working while it worked in 2.6.28-omap and
2.6.32-r78. I suspect the MIC Bias control does not function because I
can't see any voltage level at a microphone jack. Trying to use
alsamixer does not let me achieve the goal.

I already set registers to necessary values (borrowed from working
2.6.28-omap) but no sound is still captured from a mic by arecord
utility.

Please suggest how to fix this issue.

Thanks in advance.
Max
--
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


Questions about DSS device tree adaptation

2012-02-22 Thread Tomi Valkeinen
Hi,

I'd like to get some feedback for the DSS DT work.

I have currently this in omap4.dtsi, under ocp. It's still a hack, for
example there's sdi for testing even though omap4 doesn't have SDI
output.

dss {
compatible = ti,omap4-dss;
ti,hwmods = dss_core;
   
dispc {
compatible = ti,omap4-dispc;
ti,hwmods = dss_dispc;
};
   
dpi: dpi {
compatible = ti,omap4-dpi;
};
   
sdi: sdi {
compatible = ti,omap3-sdi;
};
   
dsi1: dsi@1 {
compatible = ti,omap4-dsi;
ti,hwmods = dss_dsi1;
id = 0;
vdds_dsi-supply = vcxio;
};
   
dsi2: dsi@2 {
compatible = ti,omap4-dsi;
ti,hwmods = dss_dsi2;
id = 1;
vdds_dsi-supply = vcxio;
};
   
hdmi {
compatible = ti,omap4-hdmi;
ti,hwmods = dss_hdmi;
   
hpd_gpio = 0;
ls_oe = 0;
};
   
rfbi: rfbi {
compatible = ti,omap4-rfbi;
ti,hwmods = dss_rfbi;
};
   
venc {
compatible = ti,omap4-venc;
ti,hwmods = dss_venc;
};
};

And in omap4-panda.dtsi I have:

dpi {
dvi {
compatible = ti,tfp410;
data-lines = 24;
channel = 2;
enable-gpio = 0;
ddc = dviddc;
};
};


A few notes/questions about the above:

dispc is not an output interface (so it won't have any children), it
doesn't have anything to customize in the dt data, and it's present on
all OMAPs. Should it still be present in the DT data, or should the
device be created dynamically in platform code?

dpi and sdi are not hwmods as the rest of the nodes. They are, from HW
point of view, more or less parts of DSS or perhaps DISPC.

dsi nodes have the id property, which is used by the driver to choose
between DSI1 and DSI2 HW modules. Is there a better way to do this than
a custom property?

Who/where/when should the devices for dss submodules be created? The
device for dss-node is created automatically by the of-platform code(?),
but the rest of the submodules need to be handled by me somehow.

I'm currently using of_platform_populate() in the probe of ti,omap4-dss
driver to create the subdevices, but this approach doesn't feel right.
Shouldn't the devices be created already at the boot time by platform
code, not by the driver code?

Is the simple-bus, that ocp node also uses, something that I could use
here? If I define the dss node to be compatible with simple-bus also,
does it mean that the of-platform code creates the submodules for me?
Are there any side-effects?

How about the actual panel devices. Above there's the ti,tfp410
device. The panel devices are not plain platform devices, so I need to
handle those myself. Can I somehow handle that in the platform code,
creating omap_dss_devices at boot time, or do I need to create those
devices in, for example in this case, dpi-driver's probe?

 Tomi



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


Re: [PATCH 3/5] gpio/omap: Add DT support to GPIO driver

2012-02-22 Thread Rob Herring
On 02/15/2012 10:04 AM, Benoit Cousson wrote:
 Adapt the GPIO driver to retrieve information from a DT file.
 
 Allocate the irq_base dynamically and rename bank-virtual_irq_start
 to bank-irq_base.
 Change irq_base type to int instead of u16 to match irq_alloc_descs
 output.
 
 Add documentation for GPIO properties specific to OMAP.
 
 Signed-off-by: Benoit Cousson b-cous...@ti.com
 Cc: Tarun Kanti DebBarma tarun.ka...@ti.com

One comment below, but otherwise:

Acked-by: Rob Herring rob.herr...@calxeda.com

 ---
  .../devicetree/bindings/gpio/gpio-omap.txt |   30 +
  drivers/gpio/gpio-omap.c   |  121 
 ++--
  2 files changed, 142 insertions(+), 9 deletions(-)
  create mode 100644 Documentation/devicetree/bindings/gpio/gpio-omap.txt
 
 diff --git a/Documentation/devicetree/bindings/gpio/gpio-omap.txt 
 b/Documentation/devicetree/bindings/gpio/gpio-omap.txt
 new file mode 100644
 index 000..c1b3100
 --- /dev/null
 +++ b/Documentation/devicetree/bindings/gpio/gpio-omap.txt
 @@ -0,0 +1,30 @@
 +OMAP GPIO controller bindings
 +
 +Required properties:
 +- compatible:
 +  - ti,omap2-gpio for OMAP2 controllers
 +  - ti,omap3-gpio for OMAP3 controllers
 +  - ti,omap4-gpio for OMAP4 controllers
 +- #gpio-cells : Should be two.
 +  - first cell is the pin number
 +  - second cell is used to specify optional parameters (unused)
 +- gpio-controller : Marks the device node as a GPIO controller.
 +- #interrupt-cells : Should be one

There's no level/edge settings for gpios?

 +- interrupt-controller: Mark the device node as an interrupt controller
 +
 +OMAP specific properties:
 +- ti,hwmods: Name of the hwmod associated to the GPIO:
 +  gpioX, X being the 1-based instance number from the HW spec
 +
 +
 +Example:
 +
 +gpio4: gpio4 {
 +compatible = ti,omap4-gpio;
 +ti,hwmods = gpio4;
 +#gpio-cells = 2;
 +gpio-controller;
 +#interrupt-cells = 1;
 +interrupt-controller;
 +};
 +
 diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
 index c3a9dc8..bc2bd69 100644
 --- a/drivers/gpio/gpio-omap.c
 +++ b/drivers/gpio/gpio-omap.c
 @@ -22,6 +22,9 @@
  #include linux/device.h
  #include linux/pm_runtime.h
  #include linux/pm.h
 +#include linux/of.h
 +#include linux/of_device.h
 +#include linux/irqdomain.h
  
  #include mach/hardware.h
  #include asm/irq.h
 @@ -52,7 +55,8 @@ struct gpio_bank {
   struct list_head node;
   void __iomem *base;
   u16 irq;
 - u16 virtual_irq_start;
 + int irq_base;
 + struct irq_domain *domain;
   u32 suspend_wakeup;
   u32 saved_wakeup;
   u32 non_wakeup_gpios;
 @@ -669,7 +673,7 @@ static void gpio_irq_handler(unsigned int irq, struct 
 irq_desc *desc)
   if (!isr)
   break;
  
 - gpio_irq = bank-virtual_irq_start;
 + gpio_irq = bank-irq_base;
   for (; isr != 0; isr = 1, gpio_irq++) {
   gpio_index = GPIO_INDEX(bank, irq_to_gpio(gpio_irq));
  
 @@ -915,7 +919,7 @@ static int gpio_2irq(struct gpio_chip *chip, unsigned 
 offset)
   struct gpio_bank *bank;
  
   bank = container_of(chip, struct gpio_bank, chip);
 - return bank-virtual_irq_start + offset;
 + return bank-irq_base + offset;
  }
  
  /*-*/
 @@ -1028,8 +1032,7 @@ static void __devinit omap_gpio_chip_init(struct 
 gpio_bank *bank)
  
   gpiochip_add(bank-chip);
  
 - for (j = bank-virtual_irq_start;
 -  j  bank-virtual_irq_start + bank-width; j++) {
 + for (j = bank-irq_base; j  bank-irq_base + bank-width; j++) {
   irq_set_lockdep_class(j, gpio_lock_class);
   irq_set_chip_data(j, bank);
   if (bank-is_mpuio) {
 @@ -1044,15 +1047,22 @@ static void __devinit omap_gpio_chip_init(struct 
 gpio_bank *bank)
   irq_set_handler_data(bank-irq, bank);
  }
  
 +static const struct of_device_id omap_gpio_match[];
 +
  static int __devinit omap_gpio_probe(struct platform_device *pdev)
  {
   struct device *dev = pdev-dev;
 + struct device_node *node = dev-of_node;
 + const struct of_device_id *match;
   struct omap_gpio_platform_data *pdata;
   struct resource *res;
   struct gpio_bank *bank;
   int ret = 0;
  
 - if (!dev-platform_data)
 + match = of_match_device(of_match_ptr(omap_gpio_match), dev);
 +
 + pdata = match ? match-data : dev-platform_data;
 + if (!pdata)
   return -EINVAL;
  
   bank = devm_kzalloc(pdev-dev, sizeof(struct gpio_bank), GFP_KERNEL);
 @@ -1068,9 +1078,6 @@ static int __devinit omap_gpio_probe(struct 
 platform_device *pdev)
   }
  
   bank-irq = res-start;
 -
 - pdata = pdev-dev.platform_data;
 - bank-virtual_irq_start = pdata-virtual_irq_start;
   bank-dev = dev;
   bank-dbck_flag = pdata-dbck_flag;
   bank-stride = pdata-bank_stride;
 @@ -1080,6 +1087,18 @@ static int 

Re: [PATCH 3/5] gpio/omap: Add DT support to GPIO driver

2012-02-22 Thread Cousson, Benoit

On 2/22/2012 3:23 PM, Rob Herring wrote:

On 02/15/2012 10:04 AM, Benoit Cousson wrote:

Adapt the GPIO driver to retrieve information from a DT file.

Allocate the irq_base dynamically and rename bank-virtual_irq_start
to bank-irq_base.
Change irq_base type to int instead of u16 to match irq_alloc_descs
output.

Add documentation for GPIO properties specific to OMAP.

Signed-off-by: Benoit Coussonb-cous...@ti.com
Cc: Tarun Kanti DebBarmatarun.ka...@ti.com


One comment below, but otherwise:

Acked-by: Rob Herringrob.herr...@calxeda.com


---
  .../devicetree/bindings/gpio/gpio-omap.txt |   30 +
  drivers/gpio/gpio-omap.c   |  121 ++--
  2 files changed, 142 insertions(+), 9 deletions(-)
  create mode 100644 Documentation/devicetree/bindings/gpio/gpio-omap.txt

diff --git a/Documentation/devicetree/bindings/gpio/gpio-omap.txt 
b/Documentation/devicetree/bindings/gpio/gpio-omap.txt
new file mode 100644
index 000..c1b3100
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-omap.txt
@@ -0,0 +1,30 @@
+OMAP GPIO controller bindings
+
+Required properties:
+- compatible:
+  - ti,omap2-gpio for OMAP2 controllers
+  - ti,omap3-gpio for OMAP3 controllers
+  - ti,omap4-gpio for OMAP4 controllers
+- #gpio-cells : Should be two.
+  - first cell is the pin number
+  - second cell is used to specify optional parameters (unused)
+- gpio-controller : Marks the device node as a GPIO controller.
+- #interrupt-cells : Should be one


There's no level/edge settings for gpios?


That's a good question, because I was wondering as well :-)

I did no see how it was done in other GPIO implementation.

Benoit
--
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-22 Thread Matt Porter
On Tue, Feb 14, 2012 at 11:08:36AM +, Russell King - ARM Linux wrote:
 Two more points:
 
 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
 
 Always include the commit summary as well here, so:
 
 Commit c7e963f616 (net/smsc911x: Add regulator support) added the ...

Ok. Addressed in v2.

  @@ -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;
  +   }
 
 It's always a good idea to indicate why something failed:
 
   err = platform_device_register(gpmc_smsc911x_regulator);
   if (err  0) {
   pr_err(Unable to register smsc911x regulators: %d\n, err);
   return;
   }
 
 so that people can see not only what failed, but also why it failed.

Looks much better, also addressed in v2.

-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


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

2012-02-22 Thread Matt Porter
This fixes smsc911x support on platforms using gpmc_smsc911x_init().

Commit c7e963f616 (net/smsc911x: Add regulator support) added
the requirement that platforms provide vdd33a and vddvario supplies.

Signed-off-by: Matt Porter mpor...@ti.com
---
Changes for v2:
   - temporary fix to avoid platform device id conflicts
   - add commit summary from the smsc911x regulator support commit
   - incorporate platform device registration error cause reporting 

 arch/arm/mach-omap2/gpmc-smsc911x.c |   54 ++-
 1 files changed, 53 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/gpmc-smsc911x.c 
b/arch/arm/mach-omap2/gpmc-smsc911x.c
index 9970331..a7388ed 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,50 @@ 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,
+};
+
+/*
+ * Platform device id of 42 is a temporary fix to avoid conflicts
+ * with other reg-fixed-voltage devices. The real fix should
+ * involve the driver core providing a way of dynamically
+ * assigning a unique id on registration for platform devices
+ * in the same name space.
+ */
+static struct platform_device gpmc_smsc911x_regulator = {
+   .name   = reg-fixed-voltage,
+   .id = 42,
+   .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,
@@ -51,10 +97,16 @@ void __init gpmc_smsc911x_init(struct 
omap_smsc911x_platform_data *board_data)
 {
struct platform_device *pdev;
unsigned long cs_mem_base;
-   int ret;
+   int ret, err;
 
gpmc_cfg = board_data;
 
+   err = platform_device_register(gpmc_smsc911x_regulator);
+   if (err  0) {
+   pr_err(Unable to register smsc911x regulators: %d\n, err);
+   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 0/2] omap: fix omap2plus defaults for am35xx parts

2012-02-22 Thread Matt Porter
On Thu, Feb 09, 2012 at 03:16:24PM -0500, Matt Porter wrote:
 This series enables all current am35xx boards and the on-chip Ethernet
 driver in omap2plus_defconfig. It will help users of these boards to
 have a working defconfig out of the box.
 
 Matt Porter (2):
   omap: enable davinci_emac in omap2plus_defconfig for am35xx
   omap: build am3517crane board support by default
 
  arch/arm/configs/omap2plus_defconfig |1 +
  arch/arm/mach-omap2/Kconfig  |1 +
  2 files changed, 2 insertions(+), 0 deletions(-)

Can these be queued for 3.4? It would be great to have
omap2plus_defconfig build craneboard support by default to help catch
any future regressions.

-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


[GIT PULL] adding rpmsg and remoteproc to 3.4

2012-02-22 Thread Ohad Ben-Cohen
Hi Arnd,

Please pull:

git://git.kernel.org/pub/scm/linux/kernel/git/ohad/remoteproc.git rpmsg-for-3.4

To get the very basic rpmsg+remoteproc core functionality for 3.4.

This is basically the same stuff I sent for 3.3, with an additional
fix and cleanup which were reported by Grant (and of course the two
patches that fixed the 3.3 merge conflicts).

This entire patch set has been sitting in linux-next for quite some
time. I'm not sure if it'd conflict with your tree when you pull it,
but I can of course ask Stephen to remove my tree if things look ok to
you.

Please tell me if there are any problems,

Thanks a lot!
Ohad.

The following changes since commit dcd6c92267155e70a94b3927bce681ce74b80d1f:

  Linux 3.3-rc1 (2012-01-19 15:04:48 -0800)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/ohad/remoteproc.git
rpmsg-for-3.4

for you to fetch changes up to e12bc14b88d44e5c1456dccb59ff58103f6c6edc:

  remoteproc: s/big switch/lookup table/ (2012-02-22 18:28:49 +0200)


Adding the rpmsg and remoteproc frameworks, together with
several bug fixes and clean ups that were collected along the way.

Only very basic functionality is merged at this point (boot a remote
processor, possibly after configuring its iommu, and then be able to talk
with it).

And there's a small rpmsg driver sample that shows how easy it is
now to talk with a service running on a remote processor.

At this point only OMAP4 is supported (but note that we're not populating
OMAP's platform device yet, since it depends on CMA), but support for other
platforms is coming soon too.


Axel Lin (1):
  rpmsg: rename virtqueue_add_buf_gfp to virtqueue_add_buf

Mark Grosen (2):
  remoteproc: do not require an iommu
  remoteproc: avoid registering a virtio device if not supported

Ohad Ben-Cohen (16):
  remoteproc: add framework for controlling remote processors
  remoteproc: add debugfs entries
  remoteproc: create rpmsg virtio device
  remoteproc/omap: add a remoteproc driver for OMAP4
  rpmsg: add virtio-based remote processor messaging bus
  samples/rpmsg: add an rpmsg driver sample
  remoteproc: remove unused resource type
  remoteproc/omap: utilize module_platform_driver
  remoteproc: look for truncated firmware images
  remoteproc: add Kconfig menu
  rpmsg: add Kconfig menu
  remoteproc: depend on EXPERIMENTAL
  rpmsg: depend on EXPERIMENTAL
  remoteproc: don't use virtio's weak barriers
  remoteproc: bail out if firmware has different endianess
  remoteproc: s/big switch/lookup table/

 Documentation/ABI/testing/sysfs-bus-rpmsg|   75 ++
 Documentation/remoteproc.txt |  324 ++
 Documentation/rpmsg.txt  |  293 ++
 MAINTAINERS  |7 +
 arch/arm/plat-omap/include/plat/remoteproc.h |   57 +
 drivers/Kconfig  |4 +
 drivers/Makefile |2 +
 drivers/remoteproc/Kconfig   |   29 +
 drivers/remoteproc/Makefile  |9 +
 drivers/remoteproc/omap_remoteproc.c |  238 +
 drivers/remoteproc/omap_remoteproc.h |   69 ++
 drivers/remoteproc/remoteproc_core.c | 1450 ++
 drivers/remoteproc/remoteproc_debugfs.c  |  179 
 drivers/remoteproc/remoteproc_internal.h |   44 +
 drivers/remoteproc/remoteproc_rpmsg.c|  299 ++
 drivers/rpmsg/Kconfig|   10 +
 drivers/rpmsg/Makefile   |1 +
 drivers/rpmsg/virtio_rpmsg_bus.c | 1026 ++
 include/linux/mod_devicetable.h  |9 +
 include/linux/remoteproc.h   |  271 +
 include/linux/rpmsg.h|  326 ++
 include/linux/virtio_ids.h   |1 +
 samples/Kconfig  |8 +
 samples/Makefile |2 +-
 samples/rpmsg/Makefile   |1 +
 samples/rpmsg/rpmsg_client_sample.c  |  100 ++
 26 files changed, 4833 insertions(+), 1 deletions(-)
 create mode 100644 Documentation/ABI/testing/sysfs-bus-rpmsg
 create mode 100644 Documentation/remoteproc.txt
 create mode 100644 Documentation/rpmsg.txt
 create mode 100644 arch/arm/plat-omap/include/plat/remoteproc.h
 create mode 100644 drivers/remoteproc/Kconfig
 create mode 100644 drivers/remoteproc/Makefile
 create mode 100644 drivers/remoteproc/omap_remoteproc.c
 create mode 100644 drivers/remoteproc/omap_remoteproc.h
 create mode 100644 drivers/remoteproc/remoteproc_core.c
 create mode 100644 drivers/remoteproc/remoteproc_debugfs.c
 create mode 100644 drivers/remoteproc/remoteproc_internal.h
 create mode 100644 drivers/remoteproc/remoteproc_rpmsg.c
 create mode 100644 

Re: [PATCH] gpio/omap: fix wakeups on level-triggered GPIOs

2012-02-22 Thread DebBarma, Tarun Kanti
On Wed, Feb 22, 2012 at 12:31 AM, Kevin Hilman khil...@ti.com wrote:
 While both level- and edge-triggered GPIOs are capable of generating
 interrupts, only edge-triggered GPIOs are capable of generating a
 module-level wakeup to the PRCM (c.f. 34xx NDA TRM section 25.5.3.2.)

 In order to ensure that devices using level-triggered GPIOs as
 interrupts can also cause wakeups (e.g. from idle), this patch enables
 edge-triggering for wakeup-enabled, level-triggered GPIOs when a GPIO
 bank is runtime-suspended (which also happens during idle.)

 This fixes a problem found in GPMC-connected network cards with GPIO
 interrupts (e.g. smsc911x on Zoom3, Overo, ...) where network booting
 with NFSroot was very slow since the GPIO IRQs used by the NIC were
 not generating PRCM wakeups, and thus not waking the system from idle.
 NOTE: until v3.3, this boot-time problem was somewhat masked because
 the UART init prevented WFI during boot until the full serial driver
 was available.  Preventing WFI allowed regular GPIO interrupts to fire
 and this problem was not seen.  After the UART runtime PM cleanups, we
 no longer avoid WFI during boot, so GPIO IRQs that were not causing
 wakeups resulted in very slow IRQ response times.

 Tested on platforms using level-triggered GPIOs for network IRQs using
 the SMSC911x NIC: 3530/Overo and 3630/Zoom3.

 Reported-by: Tony Lindgren t...@atomide.com
 Signed-off-by: Kevin Hilman khil...@ti.com

I have tested on OMAP3430 by making modification to touchscreen GPIO.
(I had similar change in my next planned cleanup/fix series.)
If needed you can add my Tested-by:
--
Tarun

 ---
 This applies on top of the GPIO cleanup and runtime PM conversion series
 which has been submitted for v3.4 and also available here:
 git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm.git 
 for_3.4/gpio/runtime-pm-cleanup

  drivers/gpio/gpio-omap.c |   34 ++
  1 files changed, 34 insertions(+), 0 deletions(-)

 diff --git a/drivers/gpio/gpio-omap.c b/drivers/gpio/gpio-omap.c
 index f49bd6f..752ae9b 100644
 --- a/drivers/gpio/gpio-omap.c
 +++ b/drivers/gpio/gpio-omap.c
 @@ -1196,8 +1196,30 @@ static int omap_gpio_runtime_suspend(struct device 
 *dev)
        struct gpio_bank *bank = platform_get_drvdata(pdev);
        u32 l1 = 0, l2 = 0;
        unsigned long flags;
 +       u32 wake_low, wake_hi;

        spin_lock_irqsave(bank-lock, flags);
 +
 +       /*
 +        * Only edges can generate a wakeup event to the PRCM.
 +        *
 +        * Therefore, ensure any wake-up capable GPIOs have
 +        * edge-detection enabled before going idle to ensure a wakeup
 +        * to the PRCM is generated on a GPIO transition. (c.f. 34xx
 +        * NDA TRM 25.5.3.1)
 +        *
 +        * The normal values will be restored upon -runtime_resume()
 +        * by writing back the values saved in bank-context.
 +        */
 +       wake_low = bank-context.leveldetect0  bank-context.wake_en;
 +       if (wake_low)
 +               __raw_writel(wake_low | bank-context.fallingdetect,
 +                            bank-base + bank-regs-fallingdetect);
 +       wake_hi = bank-context.leveldetect1  bank-context.wake_en;
 +       if (wake_hi)
 +               __raw_writel(wake_hi | bank-context.risingdetect,
 +                            bank-base + bank-regs-risingdetect);
 +
        if (bank-power_mode != OFF_MODE) {
                bank-power_mode = 0;
                goto update_gpio_context_count;
 @@ -1246,6 +1268,18 @@ static int omap_gpio_runtime_resume(struct device *dev)

        spin_lock_irqsave(bank-lock, flags);
        _gpio_dbck_enable(bank);
 +
 +       /*
 +        * In -runtime_suspend(), level-triggered, wakeup-enabled
 +        * GPIOs were set to edge trigger also in order to be able to
 +        * generate a PRCM wakeup.  Here we restore the
 +        * pre-runtime_suspend() values for edge triggering.
 +        */
 +       __raw_writel(bank-context.fallingdetect,
 +                    bank-base + bank-regs-fallingdetect);
 +       __raw_writel(bank-context.risingdetect,
 +                    bank-base + bank-regs-risingdetect);
 +
        if (!bank-enabled_non_wakeup_gpios || !bank-workaround_enabled) {
                spin_unlock_irqrestore(bank-lock, flags);
                return 0;
 --
 1.7.9

 --
 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 3/5] gpio/omap: Add DT support to GPIO driver

2012-02-22 Thread Rob Herring
On 02/22/2012 08:31 AM, Cousson, Benoit wrote:
 On 2/22/2012 3:23 PM, Rob Herring wrote:
 On 02/15/2012 10:04 AM, Benoit Cousson wrote:
 Adapt the GPIO driver to retrieve information from a DT file.

 Allocate the irq_base dynamically and rename bank-virtual_irq_start
 to bank-irq_base.
 Change irq_base type to int instead of u16 to match irq_alloc_descs
 output.

 Add documentation for GPIO properties specific to OMAP.

 Signed-off-by: Benoit Coussonb-cous...@ti.com
 Cc: Tarun Kanti DebBarmatarun.ka...@ti.com

 One comment below, but otherwise:

 Acked-by: Rob Herringrob.herr...@calxeda.com

 ---
   .../devicetree/bindings/gpio/gpio-omap.txt |   30 +
   drivers/gpio/gpio-omap.c   |  121
 ++--
   2 files changed, 142 insertions(+), 9 deletions(-)
   create mode 100644
 Documentation/devicetree/bindings/gpio/gpio-omap.txt

 diff --git a/Documentation/devicetree/bindings/gpio/gpio-omap.txt
 b/Documentation/devicetree/bindings/gpio/gpio-omap.txt
 new file mode 100644
 index 000..c1b3100
 --- /dev/null
 +++ b/Documentation/devicetree/bindings/gpio/gpio-omap.txt
 @@ -0,0 +1,30 @@
 +OMAP GPIO controller bindings
 +
 +Required properties:
 +- compatible:
 +  - ti,omap2-gpio for OMAP2 controllers
 +  - ti,omap3-gpio for OMAP3 controllers
 +  - ti,omap4-gpio for OMAP4 controllers
 +- #gpio-cells : Should be two.
 +  - first cell is the pin number
 +  - second cell is used to specify optional parameters (unused)
 +- gpio-controller : Marks the device node as a GPIO controller.
 +- #interrupt-cells : Should be one

 There's no level/edge settings for gpios?
 
 That's a good question, because I was wondering as well :-)
 
 I did no see how it was done in other GPIO implementation.

There's not really a good example that I've found. Many gpio nodes don't
even have interrupt-controller set.

So if you have an irq_set_type function for gpio's, then you should have
2 cells.

Rob

--
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: Latest OMAP randconfig build error

2012-02-22 Thread Tony Lindgren
* Ohad Ben-Cohen o...@wizery.com [120222 01:30]:
 + Tony, Suman
 
 On Wed, Feb 22, 2012 at 10:51 AM, Russell King - ARM Linux
 li...@arm.linux.org.uk wrote:
  arch/arm/mach-omap2/mailbox.c: In function 'omap2_mbox_probe':
  arch/arm/mach-omap2/mailbox.c:354: error: 'omap2_mboxes' undeclared (first 
  use in this function)
  arch/arm/mach-omap2/mailbox.c:354: error: (Each undeclared identifier is 
  reported only once
  arch/arm/mach-omap2/mailbox.c:354: error: for each function it appears in.)
 
 The below should trivially solve this, but I wonder if there was any
 other merit in explicitly using CONFIG_SOC_OMAP2420 there (any
 different between 2420 and 2430 in that respect ?).
 
 diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c
 index 609ea2d..e61d275 100644
 --- a/arch/arm/mach-omap2/mailbox.c
 +++ b/arch/arm/mach-omap2/mailbox.c
 @@ -258,7 +258,7 @@ struct omap_mbox mbox_dsp_info = {
  struct omap_mbox *omap3_mboxes[] = { mbox_dsp_info, NULL };
  #endif
 
 -#if defined(CONFIG_SOC_OMAP2420)
 +#if defined(CONFIG_ARCH_OMAP2)
  /* IVA */
  static struct omap_mbox2_priv omap2_mbox_iva_priv = {
   .tx_fifo = {

2430 is like omap3 for the mailbox. So the code we have seems
wrong trying to initialize it like 2420 mailbox. So we either
need a new entry for omap2430_mboxes[], or should just bail
out from the probe for 2430 for the fix.

Regards,

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


Re: [PATCH] gpio/omap: fix wakeups on level-triggered GPIOs

2012-02-22 Thread Tony Lindgren
* DebBarma, Tarun Kanti tarun.ka...@ti.com [120222 08:46]:
 On Wed, Feb 22, 2012 at 12:31 AM, Kevin Hilman khil...@ti.com wrote:
  While both level- and edge-triggered GPIOs are capable of generating
  interrupts, only edge-triggered GPIOs are capable of generating a
  module-level wakeup to the PRCM (c.f. 34xx NDA TRM section 25.5.3.2.)
 
  In order to ensure that devices using level-triggered GPIOs as
  interrupts can also cause wakeups (e.g. from idle), this patch enables
  edge-triggering for wakeup-enabled, level-triggered GPIOs when a GPIO
  bank is runtime-suspended (which also happens during idle.)
 
  This fixes a problem found in GPMC-connected network cards with GPIO
  interrupts (e.g. smsc911x on Zoom3, Overo, ...) where network booting
  with NFSroot was very slow since the GPIO IRQs used by the NIC were
  not generating PRCM wakeups, and thus not waking the system from idle.
  NOTE: until v3.3, this boot-time problem was somewhat masked because
  the UART init prevented WFI during boot until the full serial driver
  was available.  Preventing WFI allowed regular GPIO interrupts to fire
  and this problem was not seen.  After the UART runtime PM cleanups, we
  no longer avoid WFI during boot, so GPIO IRQs that were not causing
  wakeups resulted in very slow IRQ response times.
 
  Tested on platforms using level-triggered GPIOs for network IRQs using
  the SMSC911x NIC: 3530/Overo and 3630/Zoom3.
 
  Reported-by: Tony Lindgren t...@atomide.com
  Signed-off-by: Kevin Hilman khil...@ti.com
 
 I have tested on OMAP3430 by making modification to touchscreen GPIO.
 (I had similar change in my next planned cleanup/fix series.)
 If needed you can add my Tested-by:

Work for me too:

Tested-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 03/16] OMAPDSS: Remove video SRAM support

2012-02-22 Thread Tony Lindgren
* Tomi Valkeinen tomi.valkei...@ti.com [120124 01:30]:
 OMAP SRAM can be used as video memory on OMAP1 and 2. However, there
 usually is very little SRAM available, thus limiting its use, and no
 board supported by the kernel currently uses it.
 
 This patch removes the use of SRAM as video ram for the omapdss driver
 to simplify memory handling.
 
 Signed-off-by: Tomi Valkeinen tomi.valkei...@ti.com

For the arch/arm/*omap*/* parts:

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 04/16] OMAPFB: Remove video SRAM support (old omapfb)

2012-02-22 Thread Tony Lindgren
* Tomi Valkeinen tomi.valkei...@ti.com [120124 01:30]:
 OMAP SRAM can be used as video memory on OMAP1 and 2. However, there
 usually is very little SRAM available, thus limiting its use, and no
 board supported by the kernel currently uses it.
 
 This patch removes the use of SRAM as video ram for the old omapfb
 driver to simplify memory handling.
 
 Signed-off-by: Tomi Valkeinen tomi.valkei...@ti.com

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 05/16] OMAP2+: remove unneeded #include omapfb.h

2012-02-22 Thread Tony Lindgren
* Tomi Valkeinen tomi.valkei...@ti.com [120124 01:30]:
 Signed-off-by: Tomi Valkeinen tomi.valkei...@ti.com
 ---
  arch/arm/mach-omap2/io.c |1 -
  1 files changed, 0 insertions(+), 1 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
 index 3f174d5..7fee69c 100644
 --- a/arch/arm/mach-omap2/io.c
 +++ b/arch/arm/mach-omap2/io.c
 @@ -21,7 +21,6 @@
  #include linux/init.h
  #include linux/io.h
  #include linux/clk.h
 -#include linux/omapfb.h
  
  #include asm/tlb.h
  

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 06/16] OMAP: N770: remove HWA742 platform data

2012-02-22 Thread Tony Lindgren
* Tomi Valkeinen tomi.valkei...@ti.com [120124 01:30]:
 In an effort to clean up the old omapfb driver, this patch removes
 HWA742 (the display chip used in N770) platform data. This can be done
 as N770 is the only user of HWA742, and the platform data contains only
 one field, te_connected, which we can just presume to be true in the
 HWA742 driver.
 
 This allows us to remove omapfb_set_ctrl_platform_data(), and the
 mechanism to pass the platform data, in a later patch.
 
 Signed-off-by: Tomi Valkeinen tomi.valkei...@ti.com

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 07/16] OAMPFB: remove unused omapfb_set_ctrl_platform_data()

2012-02-22 Thread Tony Lindgren
* Tomi Valkeinen tomi.valkei...@ti.com [120124 01:30]:
 omapfb_set_ctrl_platform_data() is no longer used, so it can be removed.
 
 Signed-off-by: Tomi Valkeinen tomi.valkei...@ti.com

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 08/16] OMAPFB: remove early mem alloc from old omapfb

2012-02-22 Thread Tony Lindgren
* Tomi Valkeinen tomi.valkei...@ti.com [120124 01:30]:
 arch/arm/plat-omap/fb.c contains code to alloc omapfb buffers at early
 boot time according to information given from the bootloader or board
 file.
 
 This code isn't currently used by any board, and is anyway something
 that the newer vram.c could handle. So remove the alloc code and in
 later patches make old omapfb driver use vram.c.
 
 Signed-off-by: Tomi Valkeinen tomi.valkei...@ti.com

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 12/16] OMAPFB: remove omapfb_set_platform_data()

2012-02-22 Thread Tony Lindgren
* Tomi Valkeinen tomi.valkei...@ti.com [120124 01:30]:
 omapfb_set_platform_data() is no longer used, so remove it.
 
 Signed-off-by: Tomi Valkeinen tomi.valkei...@ti.com

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 13/16] OMAP1: pass LCD config with omapfb_set_lcd_config()

2012-02-22 Thread Tony Lindgren
* Tomi Valkeinen tomi.valkei...@ti.com [120124 01:30]:
 LCD config for old omapfb driver is passed with OMAP_TAG_LCD from board
 files or from the bootloader. In an effort to remove OMAP_TAG_LCD, this
 patch adds omapfb_set_lcd_config() function that the board files can
 call to set the LCD config.
 
 This has the drawback that configuration can no longer come from the
 bootloader. Of the boards supported by the kernel, this should only
 affect N770 which depends on the data from the bootloader. This patch
 adds an LCD config for N770 to its board files, but that is most
 probably broken. Fixing this would need information about the HW setup
 in N770 boards.
 
 Signed-off-by: Tomi Valkeinen tomi.valkei...@ti.com

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 14/16] OMAP: Remove OMAP_TAG_LCD and OMAP_TAG_FBMEM

2012-02-22 Thread Tony Lindgren
* Tomi Valkeinen tomi.valkei...@ti.com [120124 01:30]:
 These tags are no longer used and can be removed.
 
 Signed-off-by: Tomi Valkeinen tomi.valkei...@ti.com

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 15/16] OMAP1: Remove unused LCD devices from board files

2012-02-22 Thread Tony Lindgren
* Tomi Valkeinen tomi.valkei...@ti.com [120124 01:30]:
 Some OMAP1 board files define LCD platform_devices, but there are no
 corresponding LCD drivers for those in the kernel. Thus remove these LCD
 devices.
 
 Signed-off-by: Tomi Valkeinen tomi.valkei...@ti.com

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 16/16] OMAPFB: remove remaining OMAP arch checks

2012-02-22 Thread Tony Lindgren
* Tomi Valkeinen tomi.valkei...@ti.com [120124 01:30]:
 Now that the old omapfb driver is only omap1 display driver, there's no
 need to check if the arch is omap1. This patch removes the few remaining
 checks for the arch.
 
 Signed-off-by: Tomi Valkeinen tomi.valkei...@ti.com

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 3/5] gpio/omap: Add DT support to GPIO driver

2012-02-22 Thread Stephen Warren
Rob Herring wrote at Wednesday, February 22, 2012 10:23 AM:
 On 02/22/2012 08:31 AM, Cousson, Benoit wrote:
  On 2/22/2012 3:23 PM, Rob Herring wrote:
  On 02/15/2012 10:04 AM, Benoit Cousson wrote:
  Adapt the GPIO driver to retrieve information from a DT file.
 
  Allocate the irq_base dynamically and rename bank-virtual_irq_start
  to bank-irq_base.
  Change irq_base type to int instead of u16 to match irq_alloc_descs
  output.
 
  Add documentation for GPIO properties specific to OMAP.
 
  Signed-off-by: Benoit Coussonb-cous...@ti.com
  Cc: Tarun Kanti DebBarmatarun.ka...@ti.com
 
  One comment below, but otherwise:
 
  Acked-by: Rob Herringrob.herr...@calxeda.com
 
  ---
.../devicetree/bindings/gpio/gpio-omap.txt |   30 +
drivers/gpio/gpio-omap.c   |  121
  ++--
2 files changed, 142 insertions(+), 9 deletions(-)
create mode 100644
  Documentation/devicetree/bindings/gpio/gpio-omap.txt
 
  diff --git a/Documentation/devicetree/bindings/gpio/gpio-omap.txt
  b/Documentation/devicetree/bindings/gpio/gpio-omap.txt
  new file mode 100644
  index 000..c1b3100
  --- /dev/null
  +++ b/Documentation/devicetree/bindings/gpio/gpio-omap.txt
  @@ -0,0 +1,30 @@
  +OMAP GPIO controller bindings
  +
  +Required properties:
  +- compatible:
  +  - ti,omap2-gpio for OMAP2 controllers
  +  - ti,omap3-gpio for OMAP3 controllers
  +  - ti,omap4-gpio for OMAP4 controllers
  +- #gpio-cells : Should be two.
  +  - first cell is the pin number
  +  - second cell is used to specify optional parameters (unused)
  +- gpio-controller : Marks the device node as a GPIO controller.
  +- #interrupt-cells : Should be one
 
  There's no level/edge settings for gpios?
 
  That's a good question, because I was wondering as well :-)
 
  I did no see how it was done in other GPIO implementation.
 
 There's not really a good example that I've found. Many gpio nodes don't
 even have interrupt-controller set.
 
 So if you have an irq_set_type function for gpio's, then you should have
 2 cells.

Tegra's GPIO IRQ binding (gpio_nvidia.txt in linux-next at least) says:

- #interrupt-cells : Should be 2.
  The first cell is the GPIO number.
  The second cell is used to specify flags:
bits[3:0] trigger type and level flags:
  1 = low-to-high edge triggered.
  2 = high-to-low edge triggered.
  4 = active high level-sensitive.
  8 = active low level-sensitive.
  Valid combinations are 1, 2, 3, 4, 8.

Presumably, that's what you meant.

-- 
nvpublic

--
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/RFT 1/1] OMAP2+: cpufreq: scale voltage along with frequency

2012-02-22 Thread Kevin Hilman
Mohammed, Afzal af...@ti.com writes:

 Hi Kevin,

 On Wed, Feb 22, 2012 at 05:36:12, Hilman, Kevin wrote:
 In this case, volt comes from the OPP table, and was requested using a
 rounding call into the OPP table, so the resolution problem is handled
 there.  If 'volt' cannot be set by the regulator, then the OPP tables
 are also broken.
 
 Also, in your patch, you only add some offset.  If you want to be
 approximate, shouldn't you have plus and minus?
 
 IMO, we should let the OPP table handle that, and not the CPUfreq driver.

 I have a different opinion.

 Consider following case,

 Voltage to set for OPPX is 1262.5mV and regulator has steps of 10mV,
 and suppose regulator steps are .., 1260mV, 1270mV etc. Regulator
 framework will not be able to set voltage for OPPX (certainly if
 set_voltage_sel is used) if no range specified.

 But instead if range of 1262.5 - (1262.5 + 10 - 1) is provided,
 regulator can certainly set voltage for 1270mV (a nearest value)

 Resolution in my patch was not meant to be resolution per se, it was meant
 so that a voltage step can always be found for the regulator (assuming
 worst resolution is 12.5mV), and for regulator to get a step, resolution
 had to be used.

I agree, if the OPP table doesn't represent actual voltages, then some
sort of range needs to be used.

 Ideal solution may be to use a variable to have a default resolution
 of worst regulator and update it to that of regulator used (perhaps
 making use of something like module parameters)

 If regulator for a particular SoC is changed, exact OPP voltage may
 not be settable, but a near value should be sufficient, this can't be
 achieved if range is not specified. That happens exactly for AM335X,
 voltage for one of OPP is 1.26V, but as regulator cannot set the
 value, it is being set at 1.2625V and if no range is specified,
 it will not work.

 And in my patch plus - minus was not used as regulator framework will
 try to set voltage for the least voltage which sometimes corresponds
 to exact OPP required value.

sometimes?

Using your example above, what if the closest value was 1.259V?
Wouldn't you then need +/- range?

 For cpufreq omap driver to work with various regulators, it would be
 better to specify ranges.

I am fine with that, and am open for proposals.  Feel free to send a
patch on top of my v2.

 I agree, my version is not very robust in the face of errors from the
 regulator framework.
 
 Hoever, I'm not crazy about the extra notifications in your proposed
 patch.  I think it's cleaner to always pre and post notify.  If there's
 a failure, the post notify will have the same freq as the pre-notify,
 but that's not a big problem.


 Yes, agree that error handling path is bulky. 

 A problem that can happen is that drivers who has registered cpufreq
 notifier will think that frequency has changed, that may cause problem
 in addition to delay time getting altered.

 But whether these are worth handling with a penalty of bulky error
 handling, probably you know better.

Please have a look at my v2.

The drivers will get pre and post notifiers, with the caveat that upon
DVFS failure, the freq in the post notifier might be the same as the one
in the pre notifier, indicating that no change was made.

Kevin
--
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/16] OMAPDSS: old OMAPFB cleanup

2012-02-22 Thread Tony Lindgren
* Tomi Valkeinen tomi.valkei...@ti.com [120214 03:21]:
 Hi Tony,
 
 On Tue, 2012-01-24 at 12:00 +0200, Tomi Valkeinen wrote:
  Now that all omap2+ boards have been changed to use the newer omapdss 
  driver,
  this patch series removes omap2+ support from the old omapfb driver
  (drivers/video/omap), and thus makes it an omap1 dss/fb driver.
  
  The use of SRAM for video ram had earlier been disabled by removing the SRAM
  allocation (fee926bb0d399b1eaaf38f9f694bbf2747c4b8a2), and now this series 
  also
  removes the support from the omap fb drivers.
  
  Also various cleanup patches allow us to remove remove OMAP_TAG_LCD and
  OMAP_TAG_FBMEM.
  
  All in all, the series removes quite a bit of unneeded code and cleans up 
  the
  links between the board files and the display drivers, and this should help
  with device tree adaptation.

Great, looks good to me. I've acked the arch/arm/*omap*/* patches.
There may be some trivial merge conflicts with the includes with
my cleanup branch for the io.h changes.

  Some of the patches affect the newer omapdss and omapfb drivers, but mostly 
  the
  patches deal with omap1. I have compile tested the series for both omap1 and
  omap2, but I have only tested this on OMAP3 and OMAP4 boards, as I don't 
  have
  OMAP1/2 boards. I think N770's display won't work after these patches, but
  other OMAP1 boards should be ok. To fix N770's display requires knowledge of
  the hardware setup, which is currently passed from the bootloader.
 
 Tony, do you have any feedback on this? I think the arch/arm changes are
 quite clean as such, but are you ok with (possibly) breaking N770's
 display? The other OMAP1 boards should, at least in theory, work as well
 as before.
 
 For N770, the bootloader passes the reset GPIO number and number of
 datalines, and I have no idea what those are.

I think they should be:

conf-nreset_gpio = 13
conf-data_lines = 24

Regards,

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


Re: [PATCH 8/8] ARM: OMAP2+: Limit omap_read/write usage to legacy USB drivers

2012-02-22 Thread Tony Lindgren
* Tomi Valkeinen tomi.valkei...@ti.com [120221 23:42]:
 On Tue, 2012-02-21 at 15:40 -0800, Tony Lindgren wrote:
  Drivers should no longer use omap_read/write functions
  but instead use ioremap + read/write functions.
  
  As some USB legacy code is still shared between omap1 and
  omap2420, let's limit the omap_read/write to plat/usb.h.
  
  Also, let's make drivers/video/omap/lcdc.c depend on
  ARCH_OMAP1 as it is not needed for omap2+.
 
 I'm ok with the lcdc.c change, but I also have a patch series that makes
 the same change, plus removes the omap2 code from drivers/video/omap/.

OK, I'll drop the lcdc.c change from my series as that should
only affect randconfig builds.
 
 Can you check the series, and give ack if the arch/arm side looks fine?
 It's this one: [PATCH 00/16] OMAPDSS: old OMAPFB cleanup

Yeah great, I've acked those. Let's do a test merge when I
have these in cleanup branch, looks like the conflicts should
be trivial.

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 1/8] ARM: OMAP2+: Move DISPC L3 firewall to happen in omap_display_init()

2012-02-22 Thread Tony Lindgren
* Tomi Valkeinen tomi.valkei...@ti.com [120221 23:38]:
 Hi,
 
 On Tue, 2012-02-21 at 15:40 -0800, Tony Lindgren wrote:
  Otherwise we cannot move most of plat/io.h to be a local
  iomap.h for mach-omap2.
  
  Cc: Tomi Valkeinen tomi.valkei...@ti.com
  Cc: linux-fb...@vger.kernel.org
  Signed-off-by: Tony Lindgren t...@atomide.com
  ---
   arch/arm/mach-omap2/display.c   |3 +++
   drivers/video/omap2/dss/dispc.c |5 -
   2 files changed, 3 insertions(+), 5 deletions(-)
  
  diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
  index 3677b1f..5a7f12f 100644
  --- a/arch/arm/mach-omap2/display.c
  +++ b/arch/arm/mach-omap2/display.c
  @@ -191,6 +191,9 @@ int __init omap_display_init(struct omap_dss_board_info 
  *board_data)
  memset(pdata, 0, sizeof(pdata));
   
  if (cpu_is_omap24xx()) {
  +   /* L3 firewall setting: enable access to OCM RAM */
  +   __raw_writel(0x402000b0, OMAP2_L3_IO_ADDRESS(0x680050a0));
  +
  curr_dss_hwmod = omap2_dss_hwmod_data;
  oh_count = ARRAY_SIZE(omap2_dss_hwmod_data);
  } else if (cpu_is_omap34xx()) {
  diff --git a/drivers/video/omap2/dss/dispc.c 
  b/drivers/video/omap2/dss/dispc.c
  index e1626a1..cce0820 100644
  --- a/drivers/video/omap2/dss/dispc.c
  +++ b/drivers/video/omap2/dss/dispc.c
  @@ -3272,11 +3272,6 @@ static void _omap_dispc_initial_config(void)
  if (dss_has_feature(FEAT_FUNCGATED))
  REG_FLD_MOD(DISPC_CONFIG, 1, 9, 9);
   
  -   /* L3 firewall setting: enable access to OCM RAM */
  -   /* XXX this should be somewhere in plat-omap */
  -   if (cpu_is_omap24xx())
  -   __raw_writel(0x402000b0, OMAP2_L3_IO_ADDRESS(0x680050a0));
  -
  _dispc_setup_color_conv_coef();
   
  dispc_set_loadmode(OMAP_DSS_LOAD_FRAME_ONLY);
  
 
 I think the whole raw_writel line can be removed. It's been copied from
 the old omapfb, and my understanding is that it's about using SRAM for
 framebuffer. Using SRAM for fb is no longer supported, and I have a
 patch set that removes the remaining SRAM code from omapfb/omapdss.

OK, I'll remove those from drivers/video/omap2/dss/dispc.c so this
series keeps building.

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: [PATCHv10 3/4] omap3: add common twl configurations for vdd1 and vdd2

2012-02-22 Thread Kevin Hilman
Tero Kristo t-kri...@ti.com writes:

 On Tue, 2012-02-21 at 16:00 -0800, Kevin Hilman wrote:
 Tero Kristo t-kri...@ti.com writes:
 
  VDD1 and VDD2 are the core voltage regulators on OMAP3. VDD1 is used
  to control MPU/IVA voltage, and VDD2 is used for CORE. These regulators
  are needed by DVFS.
 
  Voltage ranges for VDD1 and VDD2 are taken from twl4030/twl5030 data 
  manuals:
  - SWCS019L : TWL4030 ES3.1 Data Manual rev L
  - SWCS030E : TWL5030 ES1.2 Data Manual rev E
 
  Signed-off-by: Tero Kristo t-kri...@ti.com
 
 Do you have a similar patch for OMAP4 support?

 It looks like OMAP4 support requires some changes to the twl-regulator /
 twl-core in addition to the twl-common.c. I have these available (just
 created them), should I post these out? 

Yes please.

 Attached here for reference in case you need to test something
 quickly.

Thanks, it's easier for me to validate actual voltage scaling on OMAP4
since I have a setup to easily measure voltage rails.

Thanks for these, I verified they work using my v2 CPUfreq driver on
OMAP4430.

Kevin

--
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: Latest OMAP randconfig build error

2012-02-22 Thread Ramirez Luna, Omar
On Wed, Feb 22, 2012 at 11:58 AM, Tony Lindgren t...@atomide.com wrote:
 * Ohad Ben-Cohen o...@wizery.com [120222 01:30]:
 + Tony, Suman

 On Wed, Feb 22, 2012 at 10:51 AM, Russell King - ARM Linux
 li...@arm.linux.org.uk wrote:
  arch/arm/mach-omap2/mailbox.c: In function 'omap2_mbox_probe':
  arch/arm/mach-omap2/mailbox.c:354: error: 'omap2_mboxes' undeclared (first 
  use in this function)
  arch/arm/mach-omap2/mailbox.c:354: error: (Each undeclared identifier is 
  reported only once
  arch/arm/mach-omap2/mailbox.c:354: error: for each function it appears in.)

 The below should trivially solve this, but I wonder if there was any
 other merit in explicitly using CONFIG_SOC_OMAP2420 there (any
 different between 2420 and 2430 in that respect ?).

 diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c
 index 609ea2d..e61d275 100644
 --- a/arch/arm/mach-omap2/mailbox.c
 +++ b/arch/arm/mach-omap2/mailbox.c
 @@ -258,7 +258,7 @@ struct omap_mbox mbox_dsp_info = {
  struct omap_mbox *omap3_mboxes[] = { mbox_dsp_info, NULL };
  #endif

 -#if defined(CONFIG_SOC_OMAP2420)
 +#if defined(CONFIG_ARCH_OMAP2)
  /* IVA */
  static struct omap_mbox2_priv omap2_mbox_iva_priv = {
       .tx_fifo = {

 2430 is like omap3 for the mailbox. So the code we have seems
 wrong trying to initialize it like 2420 mailbox. So we either
 need a new entry for omap2430_mboxes[], or should just bail
 out from the probe for 2430 for the fix.

Yes, current code tries to configure both mboxes in a 2430, however it
shouldn't be assigning an irq line for the iva mbox, and any request
for iva mbox should fail due to that.

Code is wrong to register both in 2430 though.

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: Latest OMAP randconfig build error

2012-02-22 Thread Ohad Ben-Cohen
On Wed, Feb 22, 2012 at 7:58 PM, Tony Lindgren t...@atomide.com wrote:
 2430 is like omap3 for the mailbox.

Gotcha, thanks.

This one below isn't pretty, but it should satisfy all build
permutations and still be correct hw-wise.

If it looks good to you I'll submit it properly.

diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c
index 609ea2d..6f0f228 100644
--- a/arch/arm/mach-omap2/mailbox.c
+++ b/arch/arm/mach-omap2/mailbox.c
@@ -281,8 +281,14 @@ static struct omap_mbox mbox_iva_info = {
.ops= omap2_mbox_ops,
.priv   = omap2_mbox_iva_priv,
 };
+#endif

-struct omap_mbox *omap2_mboxes[] = { mbox_dsp_info, mbox_iva_info, NULL };
+#if defined(CONFIG_ARCH_OMAP2)
+struct omap_mbox *omap2_mboxes[] = { mbox_dsp_info,
+#if defined(CONFIG_SOC_OMAP2420)
+   mbox_iva_info,
+#endif
+   NULL };
 #endif

 #if defined(CONFIG_ARCH_OMAP4)
--
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: Latest OMAP randconfig build error

2012-02-22 Thread Russell King - ARM Linux
On Wed, Feb 22, 2012 at 09:55:56PM +0200, Ohad Ben-Cohen wrote:
 On Wed, Feb 22, 2012 at 7:58 PM, Tony Lindgren t...@atomide.com wrote:
  2430 is like omap3 for the mailbox.
 
 Gotcha, thanks.
 
 This one below isn't pretty, but it should satisfy all build
 permutations and still be correct hw-wise.
 
 If it looks good to you I'll submit it properly.
 
 diff --git a/arch/arm/mach-omap2/mailbox.c b/arch/arm/mach-omap2/mailbox.c
 index 609ea2d..6f0f228 100644
 --- a/arch/arm/mach-omap2/mailbox.c
 +++ b/arch/arm/mach-omap2/mailbox.c
 @@ -281,8 +281,14 @@ static struct omap_mbox mbox_iva_info = {
   .ops= omap2_mbox_ops,
   .priv   = omap2_mbox_iva_priv,
  };
 +#endif
 
 -struct omap_mbox *omap2_mboxes[] = { mbox_dsp_info, mbox_iva_info, NULL };
 +#if defined(CONFIG_ARCH_OMAP2)
 +struct omap_mbox *omap2_mboxes[] = { mbox_dsp_info,
 +#if defined(CONFIG_SOC_OMAP2420)
 + mbox_iva_info,
 +#endif
 + NULL };

Better would be:

+#ifdef CONFIG_ARCH_OMAP2
+struct omap_mbox *omap2_mboxes[] = {
+   mbox_dsp_info,
+#ifdef CONFIG_SOC_OMAP2420
+   mbox_iva_info,
+#endif
+   NULL
+};
 #endif

There's no point in typing any more than you have to with #if defined().
The only place where using #if defined() makes sense is if you want to
subsequently do #elif defined xxx because there isn't a #elifdef.
--
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: Latest OMAP randconfig build error

2012-02-22 Thread Ohad Ben-Cohen
On Wed, Feb 22, 2012 at 10:12 PM, Russell King - ARM Linux
li...@arm.linux.org.uk wrote:
 +#ifdef CONFIG_ARCH_OMAP2
 +struct omap_mbox *omap2_mboxes[] = {
 +       mbox_dsp_info,
 +#ifdef CONFIG_SOC_OMAP2420
 +       mbox_iva_info,
 +#endif
 +       NULL
 +};
  #endif

Beautiful. Thanks!
--
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] gpio/omap: fix wakeups on level-triggered GPIOs

2012-02-22 Thread Kevin Hilman
Hi Tarun,

DebBarma, Tarun Kanti tarun.ka...@ti.com writes:

 On Wed, Feb 22, 2012 at 12:31 AM, Kevin Hilman khil...@ti.com wrote:
 While both level- and edge-triggered GPIOs are capable of generating
 interrupts, only edge-triggered GPIOs are capable of generating a
 module-level wakeup to the PRCM (c.f. 34xx NDA TRM section 25.5.3.2.)

 In order to ensure that devices using level-triggered GPIOs as
 interrupts can also cause wakeups (e.g. from idle), this patch enables
 edge-triggering for wakeup-enabled, level-triggered GPIOs when a GPIO
 bank is runtime-suspended (which also happens during idle.)

 This fixes a problem found in GPMC-connected network cards with GPIO
 interrupts (e.g. smsc911x on Zoom3, Overo, ...) where network booting
 with NFSroot was very slow since the GPIO IRQs used by the NIC were
 not generating PRCM wakeups, and thus not waking the system from idle.
 NOTE: until v3.3, this boot-time problem was somewhat masked because
 the UART init prevented WFI during boot until the full serial driver
 was available.  Preventing WFI allowed regular GPIO interrupts to fire
 and this problem was not seen.  After the UART runtime PM cleanups, we
 no longer avoid WFI during boot, so GPIO IRQs that were not causing
 wakeups resulted in very slow IRQ response times.

 Tested on platforms using level-triggered GPIOs for network IRQs using
 the SMSC911x NIC: 3530/Overo and 3630/Zoom3.

 Reported-by: Tony Lindgren t...@atomide.com
 Signed-off-by: Kevin Hilman khil...@ti.com

 I have tested on OMAP3430 by making modification to touchscreen GPIO.
 (I had similar change in my next planned cleanup/fix series.)
 If needed you can add my Tested-by:

Thanks for testing, I'll add a Tested-by from you and Tony before
submitting to Grant.

Kevin
--
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: help: BeagleBoard xM RevC ethernet port

2012-02-22 Thread Kevin Hilman
Peter Ujfalusi peter.ujfal...@ti.com writes:

 Hi,

 I hoped that time will solve this, but so far no luck. I just can not
 get the ethernet port (along with the USB host ports) working on my xM RevC.
 What is the trick to get it working on 3.3-rc3?

 There seams to be some configuration issue:

 [1.437530] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
 [1.444671] ehci_hcd: block sizes: qh 64 qtd 96 itd 160 sitd 96
 [1.451354] ehci-omap ehci-omap.0: failed to get ehci port0 regulator
 [1.458282] ehci-omap ehci-omap.0: failed to get ehci port1 regulator


The first thing I try when I see these regulator failures is to add
CONFIG_REGULATOR_DUMMY=y to the .config to see if that helps.  If so,
then the board file needs some help configuring the right regulators.

Kevin
--
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/16] OMAPDSS: old OMAPFB cleanup

2012-02-22 Thread Tony Lindgren
* Tony Lindgren t...@atomide.com [120222 10:18]:
 * Tomi Valkeinen tomi.valkei...@ti.com [120214 03:21]:
  
  Tony, do you have any feedback on this? I think the arch/arm changes are
  quite clean as such, but are you ok with (possibly) breaking N770's
  display? The other OMAP1 boards should, at least in theory, work as well
  as before.
  
  For N770, the bootloader passes the reset GPIO number and number of
  datalines, and I have no idea what those are.
 
 I think they should be:
 
 conf-nreset_gpio = 13
 conf-data_lines = 24

Probably should be:

conf-nreset_gpio = 13
conf-data_lines = 16

No luck getting anything on the LCD though with
current kernel though.

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


[PATCH] cbus: Fix lines for Nokia 770

2012-02-22 Thread Tony Lindgren
From 54c4785b8d274f8d282b4243945ae0b17edf4686 Mon Sep 17 00:00:00 2001
From: Tony Lindgren t...@atomide.com
Date: Wed, 22 Feb 2012 13:03:07 -0800
Subject: [PATCH] cbus: Fix lines for Nokia 770

This makes retu and tahvo work again on Nokia 770 so it
stays running.

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

---

I applied this into cbus branch as it seems to fix retu
watchdog for Nokia 770.

--- a/arch/arm/mach-omap1/board-nokia770.c
+++ b/arch/arm/mach-omap1/board-nokia770.c
@@ -87,9 +87,9 @@ static struct platform_device nokia770_kp_device = {
 #if defined(CONFIG_CBUS) || defined(CONFIG_CBUS_MODULE)
 
 static struct cbus_host_platform_data nokia770_cbus_data = {
-   .clk_gpio   = OMAP_MPUIO(11),
+   .clk_gpio   = OMAP_MPUIO(9),
.dat_gpio   = OMAP_MPUIO(10),
-   .sel_gpio   = OMAP_MPUIO(9),
+   .sel_gpio   = OMAP_MPUIO(11),
 };
 
 static struct platform_device nokia770_cbus_device = {
--
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/8] ARM: OMAP2+: Move DISPC L3 firewall to happen in omap_display_init()

2012-02-22 Thread Tony Lindgren
* Tony Lindgren t...@atomide.com [120222 10:34]:
 * Tomi Valkeinen tomi.valkei...@ti.com [120221 23:38]:
  Hi,
  
  On Tue, 2012-02-21 at 15:40 -0800, Tony Lindgren wrote:
   Otherwise we cannot move most of plat/io.h to be a local
   iomap.h for mach-omap2.
   
   Cc: Tomi Valkeinen tomi.valkei...@ti.com
   Cc: linux-fb...@vger.kernel.org
   Signed-off-by: Tony Lindgren t...@atomide.com
   ---
arch/arm/mach-omap2/display.c   |3 +++
drivers/video/omap2/dss/dispc.c |5 -
2 files changed, 3 insertions(+), 5 deletions(-)
   
   diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
   index 3677b1f..5a7f12f 100644
   --- a/arch/arm/mach-omap2/display.c
   +++ b/arch/arm/mach-omap2/display.c
   @@ -191,6 +191,9 @@ int __init omap_display_init(struct 
   omap_dss_board_info *board_data)
 memset(pdata, 0, sizeof(pdata));

 if (cpu_is_omap24xx()) {
   + /* L3 firewall setting: enable access to OCM RAM */
   + __raw_writel(0x402000b0, OMAP2_L3_IO_ADDRESS(0x680050a0));
   +
 curr_dss_hwmod = omap2_dss_hwmod_data;
 oh_count = ARRAY_SIZE(omap2_dss_hwmod_data);
 } else if (cpu_is_omap34xx()) {
   diff --git a/drivers/video/omap2/dss/dispc.c 
   b/drivers/video/omap2/dss/dispc.c
   index e1626a1..cce0820 100644
   --- a/drivers/video/omap2/dss/dispc.c
   +++ b/drivers/video/omap2/dss/dispc.c
   @@ -3272,11 +3272,6 @@ static void _omap_dispc_initial_config(void)
 if (dss_has_feature(FEAT_FUNCGATED))
 REG_FLD_MOD(DISPC_CONFIG, 1, 9, 9);

   - /* L3 firewall setting: enable access to OCM RAM */
   - /* XXX this should be somewhere in plat-omap */
   - if (cpu_is_omap24xx())
   - __raw_writel(0x402000b0, OMAP2_L3_IO_ADDRESS(0x680050a0));
   -
 _dispc_setup_color_conv_coef();

 dispc_set_loadmode(OMAP_DSS_LOAD_FRAME_ONLY);
   
  
  I think the whole raw_writel line can be removed. It's been copied from
  the old omapfb, and my understanding is that it's about using SRAM for
  framebuffer. Using SRAM for fb is no longer supported, and I have a
  patch set that removes the remaining SRAM code from omapfb/omapdss.
 
 OK, I'll remove those from drivers/video/omap2/dss/dispc.c so this
 series keeps building.

Here's this one updated.

Tony


From: Tony Lindgren t...@atomide.com
Date: Mon, 20 Feb 2012 12:55:07 -0800
Subject: [PATCH] ARM: OMAP2+: Drop DISPC L3 firewall code

This is only needed when using SRAM for framebuffer,
and the support for SRAM framebuffer is about to get
removed.

Otherwise we cannot move most of plat/io.h to be a local
iomap.h for mach-omap2.

Cc: Tomi Valkeinen tomi.valkei...@ti.com
Cc: linux-fb...@vger.kernel.org
Signed-off-by: Tony Lindgren t...@atomide.com

--- a/drivers/video/omap2/dss/dispc.c
+++ b/drivers/video/omap2/dss/dispc.c
@@ -3272,11 +3272,6 @@ static void _omap_dispc_initial_config(void)
if (dss_has_feature(FEAT_FUNCGATED))
REG_FLD_MOD(DISPC_CONFIG, 1, 9, 9);
 
-   /* L3 firewall setting: enable access to OCM RAM */
-   /* XXX this should be somewhere in plat-omap */
-   if (cpu_is_omap24xx())
-   __raw_writel(0x402000b0, OMAP2_L3_IO_ADDRESS(0x680050a0));
-
_dispc_setup_color_conv_coef();
 
dispc_set_loadmode(OMAP_DSS_LOAD_FRAME_ONLY);
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCHv2 8/8] arm: omap3: prevent per_clkdm from attempting manual domain transitions

2012-02-22 Thread Kevin Hilman
Tero Kristo t-kri...@ti.com writes:

 On Thu, 2012-02-16 at 09:31 -0800, Kevin Hilman wrote:
 Tero Kristo t-kri...@ti.com writes:
 
  On Thu, 2012-02-16 at 21:15 +0530, Shilimkar, Santosh wrote:
  On Thu, Feb 16, 2012 at 8:53 PM, Tero Kristo t-kri...@ti.com wrote:
   On Thu, 2012-02-16 at 15:15 +0200, Tero Kristo wrote:
   On Thu, 2012-02-16 at 15:27 +0530, Shilimkar, Santosh wrote:
On Thu, Feb 16, 2012 at 2:27 PM, Tero Kristo t-kri...@ti.com wrote:
 On Wed, 2012-02-15 at 11:37 -0800, Kevin Hilman wrote:
 Tero Kristo t-kri...@ti.com writes:

  Attempting this will cause problems especially with off-mode 
  enabled.

 Please be more verbose about the problems seen, and the root 
 cause(s).


 I was actually looking forward for some help with this commit 
 message,
 as I am still not quite sure what is going on in here. :) Here is 
 the
 log for suspend (btw, cam_pwrdm does not go to off in mainline 
 yet, but
 I think that is probably fixed by the patch from Paul,
 omap_set_pwrdm_state() does not work properly.) The warning comes 
 out
 after wakeup from off-mode, and it is triggered by the disabling of
 autodeps before off-mode entry.

This mostly indicates that one of the per clock-domain module
clock turning ON seems to be not working well with auto deps
disabled. This leads to interconnect violation.
   
if not tried already, can you put the per_clockdomain in SW_WKUP
in the low power code early resume path and see if this
error goes away.
  
   This seems to get rid of the dump also. It looks like some driver 
   resume
   is not behaving nicely, I am trying to pinpoint the culprit currently
   and see whether it can provide more info.
  
   Okay, I have some more info about this now.
  
   What happens is that when entering off-mode, PER domain remains OFF even
   during the execution of the exit phase from omap_sram_idle. Adding a
   manual SW_WKUP it comes up and there are no issues. If autodeps are
   enabled on the domain, it comes back from off mode as active.
  
   Looking further in the code, we have this at the end of omap_sram_idle:
  
  if (per_next_state  PWRDM_POWER_ON) {
  per_prev_state = pwrdm_read_prev_pwrst(per_pwrdm);
  omap2_gpio_resume_after_idle();
  wake_per();
  if (per_prev_state == PWRDM_POWER_OFF)
  omap3_per_restore_context();
  }
  
   ... which seems to assume that per domain is on. Gpio code does not
   control any clocks currently, as it only requires the interface clock to
   be on, and as this is autoidled
  
   Any comments how we should handle this? Shall we just keep these two
   patches for handling this or add some different hackery for the gpio
   issue?
  
  Good. I thought too that issue will disappear.
  The issue is pretty clear. Technically every driver pm_runtime() code 
  should
  be able to manage a clock-clockdomain-power domain power up/down
  sequence. That should work without auto deps.
  
  Do you narrowed down which driver resume is creating the dump ?
  UART , GPIO ?
 
  It is the gpio base stuff called from omap_sram_idle(), basically the
  restore context part. If I force enable per domain before the code
  snippet before, there is no dump, but if it is done after, I get the
  dump.
 
  The thing is that gpio driver doesn't currently have this kind of
  mechanism for the restore context part, at least not on omap3 due to
  above clocking issue (only autoidled interface clock is used.)
 
 I'm not sure if it fully addresses this, but Tarun's series converts
 GPIO to runtime PM.
 
 Can you try with Tarun's series.  See the for_3.4/gpio_cleanup_fixes_v9
 branch here:
 git://gitorious.org/~tarunkanti/omap-sw-develoment/tarunkantis-linux-omap-dev.git

 It does something for the issue, but I still get this during suspend to
 off:

 [   11.284973] PM: Syncing filesystems ... done.
 [   11.379241] Freezing user space processes ... (elapsed 0.02 seconds)
 done.
 [   11.408233] Freezing remaining freezable tasks ... (elapsed 0.02
 seconds) don
 e.
 [   11.439239] Suspending console(s) (use no_console_suspend to debug)
 [   11.564178] PM: suspend of devices complete after 115.506 msecs
 [   11.567382] PM: late suspend of devices complete after 3.204 msecs
 [   11.567443] Disabling non-boot CPUs ...
 [   12.004089] Powerdomain (cam_pwrdm) didn't enter target state 0
 [   12.004119] Could not enter target state in pm_suspend
 [   12.009368] PM: early resume of devices complete after 4.944 msecs
 [   12.436645] PM: resume of devices complete after 426.086 msecs
 [   12.480285] Restarting tasks ... done.
 /sys/kernel/debu[   12.488433] [ cut here ]
 [   12.494415] WARNING: at arch/arm/mach-omap2/omap_hwmod.c:1604 _idle
 +0x164/0x1
 7c()
 [   12.502258] omap_hwmod: gpio6: idle state can only be entered from
 enabled st

Re: [GIT PULL] gpio/omap: cleanup and runtime PM conversion for v3.4

2012-02-22 Thread Kevin Hilman

Hi Grant,

Any objections to this series? Can we get this queued and into linux-next?

I'll have an additional pull request for Benoit's GPIO DT stuff that 
depends on this for v3.4 too after that series is finalized.


Thanks,

Kevin

On 02/16/2012 12:43 PM, Kevin Hilman wrote:

Hi Grant,

I've given this a final review and testing and I believe it's ready for
3.4, so here you go.

Also note that Benoit's recently posted GPIO cleanups and DT conversion
depend on this series.

Thanks,

Kevin


The following changes since commit 62aa2b537c6f5957afd98e29f96897419ed5ebab:

   Linux 3.3-rc2 (2012-01-31 13:31:54 -0800)

are available in the git repository at:

   git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm.git 
for_3.4/gpio/runtime-pm-cleanup

for you to fetch changes up to f86bcc302a8c570dd0f5a50097a6af96a0e717c2:

   gpio/omap: handle set_dataout reg capable IP on restore (2012-02-06 16:58:45 
+0530)


Charulatha V (8):
   gpio/omap: remove dependency on gpio_bank_count
   gpio/omap: use flag to identify wakeup domain
   gpio/omap: make gpio_context part of gpio_bank structure
   gpio/omap: make non-wakeup GPIO part of pdata
   gpio/omap: avoid cpu checks during module ena/disable
   gpio/omap: use pinctrl offset instead of macro
   gpio/omap: remove bank-method  METHOD_* macros
   gpio/omap: fix bankwidth for OMAP7xx MPUIO

Nishanth Menon (4):
   gpio/omap: save and restore debounce registers
   gpio/omap: enable irq at the end of all configuration in restore
   gpio/omap: restore OE only after setting the output level
   gpio/omap: handle set_dataout reg capable IP on restore

Tarun Kanti DebBarma (13):
   gpio/omap: handle save/restore context in GPIO driver
   gpio/omap: further cleanup using wkup_en register
   gpio/omap: use level/edge detect reg offsets
   gpio/omap: remove hardcoded offsets in context save/restore
   gpio/omap: cleanup set_gpio_triggering function
   gpio/omap: cleanup omap_gpio_mod_init function
   gpio/omap: remove unnecessary bit-masking for read access
   gpio/omap: use pm-runtime framework
   gpio/omap: optimize suspend and resume functions
   gpio/omap: cleanup prepare_for_idle and resume_after_idle
   gpio/omap: fix debounce clock handling
   gpio/omap: fix incorrect access of debounce module
   gpio/omap: remove omap_gpio_save_context overhead

  arch/arm/mach-omap1/gpio15xx.c |7 +-
  arch/arm/mach-omap1/gpio16xx.c |   47 ++-
  arch/arm/mach-omap1/gpio7xx.c  |   14 +-
  arch/arm/mach-omap2/gpio.c |   36 +-
  arch/arm/mach-omap2/pm34xx.c   |   14 -
  arch/arm/plat-omap/include/plat/gpio.h |   29 +-
  drivers/gpio/gpio-omap.c   | 1106 +---
  7 files changed, 555 insertions(+), 698 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 8/8] ARM: OMAP2+: Limit omap_read/write usage to legacy USB drivers

2012-02-22 Thread Tony Lindgren
* Tony Lindgren t...@atomide.com [120222 10:27]:
 * Tomi Valkeinen tomi.valkei...@ti.com [120221 23:42]:
  On Tue, 2012-02-21 at 15:40 -0800, Tony Lindgren wrote:
   Drivers should no longer use omap_read/write functions
   but instead use ioremap + read/write functions.
   
   As some USB legacy code is still shared between omap1 and
   omap2420, let's limit the omap_read/write to plat/usb.h.
   
   Also, let's make drivers/video/omap/lcdc.c depend on
   ARCH_OMAP1 as it is not needed for omap2+.
  
  I'm ok with the lcdc.c change, but I also have a patch series that makes
  the same change, plus removes the omap2 code from drivers/video/omap/.
 
 OK, I'll drop the lcdc.c change from my series as that should
 only affect randconfig builds.

Here's this one updated. Noticed one more legacy driver
that needs omap_read/write defined to build on 2420.

Regards,

Tony


Date: Tue, 21 Feb 2012 13:27:33 -0800
Subject: [PATCH] ARM: OMAP2+: Limit omap_read/write usage to legacy USB drivers

Drivers should no longer use omap_read/write functions
but instead use ioremap + read/write functions.

As some USB legacy code is still shared between omap1 and
omap2420, let's limit the omap_read/write to plat/usb.h.

Note that the long term fix is to update the drivers to
use ioremap and read/write functions. That can now be
done as a separate patch series that is limited to the
USB drivers.

Also make sure the legacy omap1-keypad.c driver builds
if selected for 2420 based systems.

Cc: Tomi Valkeinen tomi.valkei...@ti.com
Signed-off-by: Tony Lindgren t...@atomide.com

diff --git a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
index 09ca9e9..f78ec4e 100644
--- a/arch/arm/mach-omap2/common.h
+++ b/arch/arm/mach-omap2/common.h
@@ -242,15 +242,5 @@ struct omap_sdrc_params;
 extern void omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0,
  struct omap_sdrc_params *sdrc_cs1);
 
-/*
- * NOTE: Please use ioremap + __raw_read/write where possible instead of these
- */
-extern u8 omap_readb(u32 pa);
-extern u16 omap_readw(u32 pa);
-extern u32 omap_readl(u32 pa);
-extern void omap_writeb(u8 v, u32 pa);
-extern void omap_writew(u16 v, u32 pa);
-extern void omap_writel(u32 v, u32 pa);
-
 #endif /* __ASSEMBLER__ */
 #endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index 0119807..3203128 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -487,43 +487,3 @@ void __init omap_sdrc_init(struct omap_sdrc_params 
*sdrc_cs0,
_omap2_init_reprogram_sdrc();
}
 }
-
-/*
- * NOTE: Please use ioremap + __raw_read/write where possible instead of these
- */
-
-u8 omap_readb(u32 pa)
-{
-   return __raw_readb(OMAP2_L4_IO_ADDRESS(pa));
-}
-EXPORT_SYMBOL(omap_readb);
-
-u16 omap_readw(u32 pa)
-{
-   return __raw_readw(OMAP2_L4_IO_ADDRESS(pa));
-}
-EXPORT_SYMBOL(omap_readw);
-
-u32 omap_readl(u32 pa)
-{
-   return __raw_readl(OMAP2_L4_IO_ADDRESS(pa));
-}
-EXPORT_SYMBOL(omap_readl);
-
-void omap_writeb(u8 v, u32 pa)
-{
-   __raw_writeb(v, OMAP2_L4_IO_ADDRESS(pa));
-}
-EXPORT_SYMBOL(omap_writeb);
-
-void omap_writew(u16 v, u32 pa)
-{
-   __raw_writew(v, OMAP2_L4_IO_ADDRESS(pa));
-}
-EXPORT_SYMBOL(omap_writew);
-
-void omap_writel(u32 v, u32 pa)
-{
-   __raw_writel(v, OMAP2_L4_IO_ADDRESS(pa));
-}
-EXPORT_SYMBOL(omap_writel);
diff --git a/arch/arm/plat-omap/include/plat/keypad.h 
b/arch/arm/plat-omap/include/plat/keypad.h
index 793ce9d..4b3 100644
--- a/arch/arm/plat-omap/include/plat/keypad.h
+++ b/arch/arm/plat-omap/include/plat/keypad.h
@@ -12,6 +12,8 @@
 
 #ifndef CONFIG_ARCH_OMAP1
 #warning Please update the board to use matrix-keypad driver
+#define omap_readw(reg)0
+#define omap_writew(val, reg)  do {} while(0)
 #endif
 #include linux/input/matrix_keypad.h
 
diff --git a/arch/arm/plat-omap/include/plat/usb.h 
b/arch/arm/plat-omap/include/plat/usb.h
index dc864b5..5f6ced4 100644
--- a/arch/arm/plat-omap/include/plat/usb.h
+++ b/arch/arm/plat-omap/include/plat/usb.h
@@ -3,6 +3,7 @@
 #ifndef__ASM_ARCH_OMAP_USB_H
 #define__ASM_ARCH_OMAP_USB_H
 
+#include linux/io.h
 #include linux/usb/musb.h
 #include plat/board.h
 
@@ -105,6 +106,45 @@ extern int omap4430_phy_set_clk(struct device *dev, int 
on);
 extern int omap4430_phy_init(struct device *dev);
 extern int omap4430_phy_exit(struct device *dev);
 extern int omap4430_phy_suspend(struct device *dev, int suspend);
+
+/*
+ * NOTE: Please update omap USB drivers to use ioremap + read/write
+ */
+
+#define OMAP2_L4_IO_OFFSET 0xb200
+#define OMAP2_L4_IO_ADDRESS(pa)IOMEM((pa) + OMAP2_L4_IO_OFFSET)
+
+static inline u8 omap_readb(u32 pa)
+{
+   return __raw_readb(OMAP2_L4_IO_ADDRESS(pa));
+}
+
+static inline u16 omap_readw(u32 pa)
+{
+   return __raw_readw(OMAP2_L4_IO_ADDRESS(pa));
+}
+
+static inline u32 omap_readl(u32 pa)
+{
+   return 

Re: Latest OMAP randconfig build error

2012-02-22 Thread Tony Lindgren
* Ohad Ben-Cohen o...@wizery.com [120222 11:51]:
 On Wed, Feb 22, 2012 at 10:12 PM, Russell King - ARM Linux
 li...@arm.linux.org.uk wrote:
  +#ifdef CONFIG_ARCH_OMAP2
  +struct omap_mbox *omap2_mboxes[] = {
  +       mbox_dsp_info,
  +#ifdef CONFIG_SOC_OMAP2420
  +       mbox_iva_info,
  +#endif
  +       NULL
  +};
   #endif
 
 Beautiful. Thanks!

Care to post an updated patch for me to apply into fixes?

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 1/7] OMAP: 4430SDP: Correct fixed regulator device ID

2012-02-22 Thread Tony Lindgren
* Peter Ujfalusi peter.ujfal...@ti.com [120210 01:34]:
 The board has two fixed voltage regulator. Correct the
 device ID for the vbat, which used -1.
 Create defines for the fixed regulator IDs so when adding new
 regulators we know the next available ID to use for them.
 
 Signed-off-by: Peter Ujfalusi peter.ujfal...@ti.com

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 4/7] OMAP4: twl-common: Add twl6030 V1V8, V2V1 SMPS common configuration

2012-02-22 Thread Tony Lindgren
* Peter Ujfalusi peter.ujfal...@ti.com [120210 01:34]:
 V1V8 supply from twl6030 commonly used as VIO for the machine.
 V2V1 is adviced to supply the twl6040, and also to feed the twl6030's
 VCXIO_IN, and VDAC_IN inputs.
 Create the common regulator configurations for these regulators:
 Make the V2V1 as supply_regulator for VCXIO, VDAC.
 Add twl6040 (1-004b) as consumer for V1V8, and V2V1.
 
 Signed-off-by: Peter Ujfalusi peter.ujfal...@ti.com

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 5/7] OMAP: 4430SDP: Use common configuration for V1V8, V2V1 supplies

2012-02-22 Thread Tony Lindgren
* Peter Ujfalusi peter.ujfal...@ti.com [120210 01:34]:
 These supplies going to be needed for the twl6040 driver.
 
 Signed-off-by: Peter Ujfalusi peter.ujfal...@ti.com

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 6/7] OMAP: omap4panda: Use common configuration for V1V8, V2V1 supplies

2012-02-22 Thread Tony Lindgren
* Peter Ujfalusi peter.ujfal...@ti.com [120210 01:34]:
 These supplies going to be needed for the twl6040 driver.
 
 Signed-off-by: Peter Ujfalusi peter.ujfal...@ti.com

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] OMAP4: panda: Correct cpu version check for 4430

2012-02-22 Thread Tony Lindgren
* Peter Ujfalusi peter.ujfal...@ti.com [120217 00:56]:
 The cpu_is_omap4430() macro always return with 0. Use the correct
 cpu_is_omap443x() to check for Panda revision.
 
 Signed-off-by: Peter Ujfalusi peter.ujfal...@ti.com
 ---
 
 Hi,
 
 Since the depending patches are going via Liam's tree it would be best if we
 can queue this via audio as well.
 Without this patch the audio on Panda 4430 is not working correctly.

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] OMAP4: dma: Correct CPU version check for dma_common_ch_end

2012-02-22 Thread Tony Lindgren
* Peter Ujfalusi peter.ujfal...@ti.com [120217 00:54]:
 CCDN is the last common channel register in all OMAP4 versions. Use
 cpu_is_omap44xx() instead of the cpu_is_omap4430() - which is anyway not
 doing what it supposed to do.

This is a bit unclear.. Which is not doing what is supposed to do?
DMA driver? Or one of the cpu_is_omap?

If this should be queued as a fix, then we need some kind of
description here what breaks.

Regards,

Tony
 
 Signed-off-by: Peter Ujfalusi peter.ujfal...@ti.com
 ---
  arch/arm/mach-omap2/dma.c |2 +-
  1 files changed, 1 insertions(+), 1 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/dma.c b/arch/arm/mach-omap2/dma.c
 index a59a45a..b19d849 100644
 --- a/arch/arm/mach-omap2/dma.c
 +++ b/arch/arm/mach-omap2/dma.c
 @@ -227,7 +227,7 @@ static int __init omap2_system_dma_init_dev(struct 
 omap_hwmod *oh, void *unused)
  
   dma_stride  = OMAP2_DMA_STRIDE;
   dma_common_ch_start = CSDP;
 - if (cpu_is_omap3630() || cpu_is_omap4430())
 + if (cpu_is_omap3630() || cpu_is_omap44xx())
   dma_common_ch_end = CCDN;
   else
   dma_common_ch_end = CCFN;
 -- 
 1.7.8.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 v2] ARM: OMAP2+: gpmc-smsc911x: add required smsc911x regulators

2012-02-22 Thread Tony Lindgren
* Matt Porter mpor...@ti.com [120222 08:13]:
 This fixes smsc911x support on platforms using gpmc_smsc911x_init().
 
 Commit c7e963f616 (net/smsc911x: Add regulator support) added
 the requirement that platforms provide vdd33a and vddvario supplies.
 
 Signed-off-by: Matt Porter mpor...@ti.com
 ---
 Changes for v2:
- temporary fix to avoid platform device id conflicts
- add commit summary from the smsc911x regulator support commit
- incorporate platform device registration error cause reporting 

Thanks applying into fixes.

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: [GIT PULL] gpio/omap: cleanup and runtime PM conversion for v3.4

2012-02-22 Thread Grant Likely
On Wed, Feb 22, 2012 at 02:41:05PM -0800, Kevin Hilman wrote:
 Hi Grant,
 
 Any objections to this series? Can we get this queued and into linux-next?
 
 I'll have an additional pull request for Benoit's GPIO DT stuff that
 depends on this for v3.4 too after that series is finalized.

The diffstat is clean.  I've merged it in.

g.

 
 Thanks,
 
 Kevin
 
 On 02/16/2012 12:43 PM, Kevin Hilman wrote:
 Hi Grant,
 
 I've given this a final review and testing and I believe it's ready for
 3.4, so here you go.
 
 Also note that Benoit's recently posted GPIO cleanups and DT conversion
 depend on this series.
 
 Thanks,
 
 Kevin
 
 
 The following changes since commit 62aa2b537c6f5957afd98e29f96897419ed5ebab:
 
Linux 3.3-rc2 (2012-01-31 13:31:54 -0800)
 
 are available in the git repository at:
 
git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm.git 
  for_3.4/gpio/runtime-pm-cleanup
 
 for you to fetch changes up to f86bcc302a8c570dd0f5a50097a6af96a0e717c2:
 
gpio/omap: handle set_dataout reg capable IP on restore (2012-02-06 
  16:58:45 +0530)
 
 
 Charulatha V (8):
gpio/omap: remove dependency on gpio_bank_count
gpio/omap: use flag to identify wakeup domain
gpio/omap: make gpio_context part of gpio_bank structure
gpio/omap: make non-wakeup GPIO part of pdata
gpio/omap: avoid cpu checks during module ena/disable
gpio/omap: use pinctrl offset instead of macro
gpio/omap: remove bank-method  METHOD_* macros
gpio/omap: fix bankwidth for OMAP7xx MPUIO
 
 Nishanth Menon (4):
gpio/omap: save and restore debounce registers
gpio/omap: enable irq at the end of all configuration in restore
gpio/omap: restore OE only after setting the output level
gpio/omap: handle set_dataout reg capable IP on restore
 
 Tarun Kanti DebBarma (13):
gpio/omap: handle save/restore context in GPIO driver
gpio/omap: further cleanup using wkup_en register
gpio/omap: use level/edge detect reg offsets
gpio/omap: remove hardcoded offsets in context save/restore
gpio/omap: cleanup set_gpio_triggering function
gpio/omap: cleanup omap_gpio_mod_init function
gpio/omap: remove unnecessary bit-masking for read access
gpio/omap: use pm-runtime framework
gpio/omap: optimize suspend and resume functions
gpio/omap: cleanup prepare_for_idle and resume_after_idle
gpio/omap: fix debounce clock handling
gpio/omap: fix incorrect access of debounce module
gpio/omap: remove omap_gpio_save_context overhead
 
   arch/arm/mach-omap1/gpio15xx.c |7 +-
   arch/arm/mach-omap1/gpio16xx.c |   47 ++-
   arch/arm/mach-omap1/gpio7xx.c  |   14 +-
   arch/arm/mach-omap2/gpio.c |   36 +-
   arch/arm/mach-omap2/pm34xx.c   |   14 -
   arch/arm/plat-omap/include/plat/gpio.h |   29 +-
   drivers/gpio/gpio-omap.c   | 1106 
  +---
   7 files changed, 555 insertions(+), 698 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: [PATCHv5 03/14] arm: omap3+: voltage: parameter segregation

2012-02-22 Thread Menon, Nishanth
On Tue, Feb 21, 2012 at 08:04, Tero Kristo t-kri...@ti.com wrote:
[...]
 diff --git a/arch/arm/mach-omap2/voltage.h b/arch/arm/mach-omap2/voltage.h
 index 949938d..940a0d6 100644
 --- a/arch/arm/mach-omap2/voltage.h
 +++ b/arch/arm/mach-omap2/voltage.h

[...]
 @@ -171,6 +169,18 @@ struct omap_voltdm_pmic {
        u8 (*uv_to_vsel) (unsigned long uV);
  };

 +struct omap_vp_param {
 +       u32 vddmax;
 +       u32 vddmin;
 +};
 +

Thinking a little deeper about this(SoC level vdd min and max) on a
slightly different angle- core of the question that intend to answer
are:
 - what is the least voltage we want to allow in active transtion? it
should not be lower than retention voltage.
- what is the max voltage we want to allow in active transition? it
should be the max Nom voltage of all the OPPs for that domain.

In effect, why do we even need to register
voltdm-vp_param-vdd[min|max]? We already have that info - right?
On the other hand it might be safer to do this way to handle quirks in
future SoCs.. but thought I'd spit it out anyways..

 +struct omap_vc_param {
and elsewhere - please add kernel-doc struct documentation as well
when new structs are introduced?
 +       u32 on;
 +       u32 onlp;
 +       u32 ret;
 +       u32 off;
 +};
 +
[...]

Regards,
Nishanth Menon
--
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] MFD: TWL 6030: clear IRQ status register only once

2012-02-22 Thread Nishanth Menon
TWL6030 family of PMIC use a shadow interrupt status register
while kernel processes the current interrupt event.
However, any write(0 or 1) to register INT_STS_A, INT_STS_B or
INT_STS_C clears all 3 interrupt status registers.

Since clear of the interrupt is done on 32k clk, depending on I2C
bus speed, we could in-adverently clear the status of a interrupt
status pending on shadow register in the current implementation.
This is due to the fact that multi-byte i2c write operation into
three seperate status register could result in multiple load
and clear of status and result in lost interrupts.

Instead, doing a single byte write to INT_STS_A register with 0x0
will clear all three interrupt status registers without the related
risk.

Acked-by: Santosh Shilimkar santosh.shilim...@ti.com
Signed-off-by: Nishanth Menon n...@ti.com
---
 drivers/mfd/twl6030-irq.c |   13 +++--
 1 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c
index c6b456a..aa367a2 100644
--- a/drivers/mfd/twl6030-irq.c
+++ b/drivers/mfd/twl6030-irq.c
@@ -185,8 +185,17 @@ static int twl6030_irq_thread(void *data)
}
local_irq_enable();
}
-   ret = twl_i2c_write(TWL_MODULE_PIH, sts.bytes,
-   REG_INT_STS_A, 3); /* clear INT_STS_A */
+
+   /*
+* NOTE:
+* Simulation confirms that documentation is wrong w.r.t the
+* interrupt status clear operation. A single *byte* write to
+* any one of STS_A to STS_C register results in all three
+* STS registers being reset. Since it does not matter which
+* value is written, all three registers are cleared on a
+* single byte write, so we just use 0x0 to clear.
+*/
+   ret = twl_i2c_write_u8(TWL_MODULE_PIH, 0x00, REG_INT_STS_A);
if (ret)
pr_warning(twl6030: I2C error in clearing PIH ISR\n);
 
-- 
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


[PATCH] MFD: TWL 6030: make twl6030_irq_set_wake static

2012-02-22 Thread Nishanth Menon
twl6030_irq_set_wake is not used anywhere else in the kernel
except as irq_chip.irq_set_wake. No reason for it to be exported.

Also fixes build warning:
drivers/mfd/twl6030-irq.c:230:5: warning: symbol 'twl6030_irq_set_wake' was not 
declared. Should it be static?

Signed-off-by: Nishanth Menon n...@ti.com
---
 drivers/mfd/twl6030-irq.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/mfd/twl6030-irq.c b/drivers/mfd/twl6030-irq.c
index aa367a2..3c2cc00 100644
--- a/drivers/mfd/twl6030-irq.c
+++ b/drivers/mfd/twl6030-irq.c
@@ -236,7 +236,7 @@ static inline void activate_irq(int irq)
 #endif
 }
 
-int twl6030_irq_set_wake(struct irq_data *d, unsigned int on)
+static int twl6030_irq_set_wake(struct irq_data *d, unsigned int on)
 {
if (on)
atomic_inc(twl6030_wakeirqs);
-- 
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: [GIT PULL] OMAP PM EMU fix for v3.3

2012-02-22 Thread Paul Walmsley
Hello Gowda,

A few questions...

On Wed, 22 Feb 2012, madhusudhan.go...@elektrobit.com wrote:

 I have tested this on beagle board as well as on OMAP3630 based
 propriatory phone using SDTI serial trace interface.

What driver are you using for SDTI?  Does it use pm_runtime* or call 
clk_enable() on some clock when it is in use?  Are you defining a hwmod 
for it?  I don't see an SDTI driver in mainline, but maybe I am just 
missing it.  If it's not there, could you please post it or post a link to 
it so we can take a look at what it's doing?

 Also you can test it by just observing the 
 CM_EMU (48005100) clkstctrl register
  48 = 0001
 Across MPU OFF alone
 
 [root@beagleboard /]# echo 0 
 /sys/kernel/debug/pm_debug/neon_pwrdm/suspend
 [root@beagleboard /]# echo 0 
 /sys/kernel/debug/pm_debug/mpu_pwrdm/suspend
 [root@beagleboard /]# echo 1 
 /sys/kernel/debug/pm_debug/core_pwrdm/suspend
 [root@beagleboard /]# echo 1 
 /sys/kernel/debug/pm_debug/per_pwrdm/suspend
 [root@beagleboard /]# echo mem /sys/power/state
 [   59.694671] PM: Syncing filesystems ... done.
 [   59.758209] Freezing user space processes ... (elapsed 0.02 seconds)
 done.
 [   59.789947] Freezing remaining freezable tasks ... (elapsed 0.02
 seconds) done.
 [   59.820709] Suspending console(s) (use no_console_suspend to debug)
 [   60.055816] PM: suspend of devices complete after 212.493 msecs
 [   60.059661] PM: late suspend of devices complete after 3.784 msecs
 [   60.059753] Disabling non-boot CPUs ...
 [   64.299865] Successfully put all powerdomains to target state
 [   64.302551] PM: early resume of devices complete after 2.319 msecs
 [   64.636444] PM: resume of devices complete after 332.336 msecs
 [   64.688446] Restarting tasks ... done.
 [root@beagleboard /]# 
 
 And then print again the CM_EMU (48005100) clkstctrl register offset 48
 this will have the reset value and PRM_EMU (48307100) offset e4 =
 0100 register confirms the domain wakeup reset from OFF.
 
 At this moment the SDTI serial trace interface looses connection.
 
 With my patch applied the CM_EMU (48005100) clkstctrl register restores
 it initial setting across MPU OFF.

Maybe you can walk through these thoughts with me and see if it makes 
sense to you.

When the PM code initializes, it will put the EMU clockdomain to 
software-supervised sleep.  (Ideally it would put it to 
hardware-supervised idle, but Jouni turned this off a long time ago, 
apparently due to some PRCM usecounting problem with it -- which may 
simply have been some software problem on our part?)

That accounts for CM_CLKSTCTRL_EMU being set to 0x1 before MPU OFF.  Does 
the SDTI work for you when CM_CLKSTCTRL_EMU is set to 0x1? There's no 
FCLKEN/ICLKEN bit for the PRCM to use-count, it seems :-( Although maybe 
this is done through the SDTI_WINCTRL register?

I observe the same phenomenon that you do, that when MPU comes back from 
OFF, CM_CLKSTCTRL_EMU is set to 0x2.  From reading the TRM, it's not clear 
to me what is causing that, although I'd agree with your conclusion that 
it's related to the MPU's reset line.

But here's the part that's unclear to me about your description: according 
to the TRM, 0x2 means software-supervised wakeup.  So the EMU clockdomain 
should be awake at that point.  That shouldn't prevent the SDTI from 
working; in fact quite the opposite.  So I don't really understand how 
your patch would fix anything in this regard.  Any thoughts?

My suspicion, by the way, is that the underlying problem may be with the 
SDTI driver that you're using.  My guess would be that it's not integrated 
with the OMAP power management infrastructure (via pm_runtime* calls), 
and that's what's causing the problem.


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


RE: [PATCH/RFT 1/1] OMAP2+: cpufreq: scale voltage along with frequency

2012-02-22 Thread Mohammed, Afzal
Hi Kevin,

On Thu, Feb 23, 2012 at 00:12:06, Hilman, Kevin wrote:
  And in my patch plus - minus was not used as regulator framework will
  try to set voltage for the least voltage which sometimes corresponds
  to exact OPP required value.
 
 sometimes?

I was not clear in my previous statement, let me explain it differently.

Regulator framework will always try to set lowest voltage in the range.
Upon, regulator_set_voltage(reg, OPPVOLT, (OPPVOLT+RESOLUTION-1)), if
OPPVOLT is a value that can be set by the regulator, that will be set by
the regulator, this is what I meant by 'sometimes'. Otherwise it will set
the next possible step.

 Using your example above, what if the closest value was 1.259V?
 Wouldn't you then need +/- range?

In that case, it will set to next step after 1.259V.

If +/- is used, it may happen that SoC will work for a particular frequency
at a voltage lower than it has been characterized (if you ask me to define
characterized, I don't know, but what I know is that SoC can work at a
lower frequency for the voltage of an OPP, but not vice versa). Still as
voltage will be only very less than that specified by OPP, it may not be
a problem to use +/-

 Please have a look at my v2.
 
 The drivers will get pre and post notifiers, with the caveat that upon
 DVFS failure, the freq in the post notifier might be the same as the one
 in the pre notifier, indicating that no change was made.

Yes, I overlooked your freq.new update for error condition.

Earlier while adding support for DVFS on AM335X, it was noticed that, lpj
was going wrong after dvfs failure, then those error notifiers were added
to recover properly. Later it was realized that it was due to a bug in
cpufreq framework,

d08de0c1  [CPUFREQ] update lpj only if frequency has changed

fixed it, probably those extra handling in  my patch is not required now,
if drivers can understand your pre  post notifiers properly (if drivers
can't, then maybe it is driver problem)

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


[PATCH 1/2] ARM: OMAP: fix section mismatch warning for omap4_hotplug_cpu()

2012-02-22 Thread Santosh Shilimkar
WARNING: arch/arm/mach-omap2/built-in.o(.text+0x8b80):
Section mismatch in reference from the function omap4_hotplug_cpu() to
the function .cpuinit.text:omap_secondary_startup()
The function omap4_hotplug_cpu() references
the function __cpuinit omap_secondary_startup().
This is often because omap4_hotplug_cpu lacks a __cpuinit
annotation or the annotation of omap_secondary_startup is wrong.

Signed-off-by: Santosh Shilimkar santosh.shilim...@ti.com
---
 arch/arm/mach-omap2/omap-mpuss-lowpower.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/omap-mpuss-lowpower.c 
b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
index 1d5d010..fe9ab7c 100644
--- a/arch/arm/mach-omap2/omap-mpuss-lowpower.c
+++ b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
@@ -300,7 +300,7 @@ int omap4_enter_lowpower(unsigned int cpu, unsigned int 
power_state)
  * @cpu : CPU ID
  * @power_state: CPU low power state.
  */
-int omap4_hotplug_cpu(unsigned int cpu, unsigned int power_state)
+int __cpuinit omap4_hotplug_cpu(unsigned int cpu, unsigned int power_state)
 {
unsigned int cpu_state = 0;
 
-- 
1.7.4.1

--
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/2] OMAP: Section mismatch warning fixes

2012-02-22 Thread Santosh Shilimkar
Tony,

Below are couple of section mismatch warning fixes for v3.3-rc5

Santosh Shilimkar (2):
  ARM: OMAP: fix section mismatch warning for omap4_hotplug_cpu()
  ARM: OMAP: Fix section mismatch warning for platform_cpu_die()

 arch/arm/mach-omap2/omap-hotplug.c|2 +-
 arch/arm/mach-omap2/omap-mpuss-lowpower.c |2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

-- 
1.7.4.1

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


[PATCH 2/2] ARM: OMAP: Fix section mismatch warning for platform_cpu_die()

2012-02-22 Thread Santosh Shilimkar
WARNING: vmlinux.o(.text+0x226d0):
Section mismatch in reference from the function
platform_cpu_die() to the function .cpuinit.text:omap4_hotplug_cpu()
The function platform_cpu_die() references
the function __cpuinit omap4_hotplug_cpu().
This is often because platform_cpu_die lacks a __cpuinit
annotation or the annotation of omap4_hotplug_cpu is wrong.

Thanks to Russell King for suggesting __ref annotation trick
just like it's parent function for this warning becasue __cupinit
usage was definitely wrong to fix this warning..

Signed-off-by: Santosh Shilimkar santosh.shilim...@ti.com
---
 arch/arm/mach-omap2/omap-hotplug.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/omap-hotplug.c 
b/arch/arm/mach-omap2/omap-hotplug.c
index adbe4d8..56c345b 100644
--- a/arch/arm/mach-omap2/omap-hotplug.c
+++ b/arch/arm/mach-omap2/omap-hotplug.c
@@ -33,7 +33,7 @@ int platform_cpu_kill(unsigned int cpu)
  * platform-specific code to shutdown a CPU
  * Called with IRQs disabled
  */
-void platform_cpu_die(unsigned int cpu)
+void __ref platform_cpu_die(unsigned int cpu)
 {
unsigned int this_cpu;
 
-- 
1.7.4.1

--
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/RFT 1/1] OMAP2+: cpufreq: scale voltage along with frequency

2012-02-22 Thread Mohammed, Afzal
Hi Kevin,

On Thu, Feb 23, 2012 at 10:58:57, Mohammed, Afzal wrote:
  Using your example above, what if the closest value was 1.259V?
  Wouldn't you then need +/- range?
 
 In that case, it will set to next step after 1.259V.
 
 If +/- is used, it may happen that SoC will work for a particular frequency
 at a voltage lower than it has been characterized (if you ask me to define
 characterized, I don't know, but what I know is that SoC can work at a
 lower frequency for the voltage of an OPP, but not vice versa). Still as
 voltage will be only very less than that specified by OPP, it may not be
 a problem to use +/-

Upon discussing with Sekhar, realized that I was wrong in the above
statements, +/- OPP tolerance range should be used.

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


OMAP PM constraint to disable OPP50

2012-02-22 Thread Tomi Valkeinen
Hi,

This is an old issue, and I've mentioned earlier, but I think we should
finally do something about this. Or perhaps this can already be done,
but I don't know the solution.

The problem is that various DSS clocks have max frequencies that depend
on whether we are at OPP100 or OPP50 (e.g. table 10-4. DSS Clock
Frequencies in OMAP4 TRM). Some of these clocks come from the PRCM (like
DSS_CLK on OMAP4), but some are generated internally by DSS (like pixel
clocks).

While the clocks coming from PRCM could perhaps be handled automatically
(from DSS's point of view) by the PM/clock framework so that OPP50 would
be disabled if the clocks are over the OPP50-limit, I guess that's not
quite correct. The max freq limitation is inside DSS HW, not in the PRCM
side (well, I'm guessing so). And as we anyway need to handle some of
the clock limits inside DSS, I guess it's simpler to handle them all in
DSS.

But the main question is, how should it be done? Afaik the dss driver
cannot say stay in OPP100 to the PM framework. I guess the closest
thing is to set a constraint to memory throughput with an arbitrarily
high value, thus forcing OPP100.

But even if it's quite easy to come up with an arbitrary value that
should be high enough for years to come, this approach feels rather
hacky. Can it have side effects? May it cause overclocking, as the PM
framework thinks we need as much bandwidth as possible? Does it cause
higher power consumption because something in L3/Core/somewhere is kept
in a high perf mode for the high mem throughput, even if we don't
actually need high throughput?

 Tomi



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


Re: [PATCH] OMAP4: dma: Correct CPU version check for dma_common_ch_end

2012-02-22 Thread Peter Ujfalusi
Hi Tony,

On 02/23/2012 01:07 AM, Tony Lindgren wrote:
 * Peter Ujfalusi peter.ujfal...@ti.com [120217 00:54]:
 CCDN is the last common channel register in all OMAP4 versions. Use
 cpu_is_omap44xx() instead of the cpu_is_omap4430() - which is anyway not
 doing what it supposed to do.
 
 This is a bit unclear.. Which is not doing what is supposed to do?
 DMA driver? Or one of the cpu_is_omap?

The cpu_is_omap4430() returns 0 unconditionally. Because of this the
dma_common_ch_end is wrongly configured on OMAP4 (even on OMAP4430).

 If this should be queued as a fix, then we need some kind of
 description here what breaks.

I will resend the patch with a better commit message. This is a bug for
sure, but I'm not sure how severe it is. At best we are not clearing the
registers between CCFN, and CCDN on OMAP4.

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


[PATCH v2] OMAP4: dma: Correct CPU version check for dma_common_ch_end

2012-02-22 Thread Peter Ujfalusi
CCDN is the last common channel register in all OMAP4 versions. Use
cpu_is_omap44xx() instead of the cpu_is_omap4430().
cpu_is_omap4430() returns 0 unconditionally. This causes that the
dma_common_ch_end register variable is not configured correctly on OMAP4, not
even for OMAP4430.
Because of this, registers between CCFN - CCDN will be not cleard in the
omap2_clear_dma function in OMAP4.

Signed-off-by: Peter Ujfalusi peter.ujfal...@ti.com
---
 arch/arm/mach-omap2/dma.c |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/arch/arm/mach-omap2/dma.c b/arch/arm/mach-omap2/dma.c
index a59a45a..b19d849 100644
--- a/arch/arm/mach-omap2/dma.c
+++ b/arch/arm/mach-omap2/dma.c
@@ -227,7 +227,7 @@ static int __init omap2_system_dma_init_dev(struct 
omap_hwmod *oh, void *unused)
 
dma_stride  = OMAP2_DMA_STRIDE;
dma_common_ch_start = CSDP;
-   if (cpu_is_omap3630() || cpu_is_omap4430())
+   if (cpu_is_omap3630() || cpu_is_omap44xx())
dma_common_ch_end = CCDN;
else
dma_common_ch_end = CCFN;
-- 
1.7.8.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 2/2] ARM: OMAP: Fix section mismatch warning for platform_cpu_die()

2012-02-22 Thread Uwe Kleine-König
Hello,

On Thu, Feb 23, 2012 at 12:28:30PM +0530, Santosh Shilimkar wrote:
 WARNING: vmlinux.o(.text+0x226d0):
 Section mismatch in reference from the function
 platform_cpu_die() to the function .cpuinit.text:omap4_hotplug_cpu()
 The function platform_cpu_die() references
 the function __cpuinit omap4_hotplug_cpu().
 This is often because platform_cpu_die lacks a __cpuinit
 annotation or the annotation of omap4_hotplug_cpu is wrong.
 
 Thanks to Russell King for suggesting __ref annotation trick
 just like it's parent function for this warning becasue __cupinit
s/it's/its/; s/becasue/because/; s/cup/cpu/

Having said that I think the grammar is broken, too. Maybe:

Thanks to Russell King for suggesting to use __ref instead of
the initial (and wrong) approach to use __cpuinit.

(But note I'm not a native speaker, too)

Uwe

 usage was definitely wrong to fix this warning..

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