Re: [PATCH v3 3/3] omap3isp: Configure CSI-2 phy based on platform data

2012-10-09 Thread Sakari Ailus
Hi Laurent,

Thanks for the comments.

On Tue, Oct 09, 2012 at 02:33:28AM +0200, Laurent Pinchart wrote:
...
  @@ -248,10 +203,56 @@ static int csiphy_config(struct isp_csiphy *phy,
  if (lanes-clk.pos == 0 || used_lanes  (1  lanes-clk.pos))
  return -EINVAL;
  
  -   mutex_lock(phy-mutex);
  -   phy-dphy = *dphy;
  -   phy-lanes = *lanes;
  -   mutex_unlock(phy-mutex);
  +   csiphy_routing_cfg(phy, subdevs-interface, true,
  +  subdevs-bus.ccp2.phy_layer);
 
 As the second argument is always true, it could make sense to remove it (or 
 to 
 add another call to csiphy_routing_cfg with on set to false).

That's a good point. In principle another call should be added for 3430 to
turn the PHY off. That's not being done on the N900.

I'll see where it could be added.

Regards,

-- 
Sakari Ailus
e-mail: sakari.ai...@iki.fi XMPP: sai...@retiisi.org.uk
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v3 2/3] omap3isp: Add PHY routing configuration

2012-10-09 Thread Sakari Ailus
Hi, Laurent!

Thanks for the comments!

On Tue, Oct 09, 2012 at 02:17:48AM +0200, Laurent Pinchart wrote:
...
  @@ -32,6 +32,92 @@
   #include ispreg.h
   #include ispcsiphy.h
  
  +static void csiphy_routing_cfg_3630(struct isp_csiphy *phy, u32 iface,
  +   bool ccp2_strobe)
  +{
  +   u32 cam_phy_ctrl =
 
 If you call the variable value or ctrl two statements below could fit on 
 one line, but that's up to you :-)

I'll call it reg. :)


  +   isp_reg_readl(phy-isp,
  + OMAP3_ISP_IOMEM_3630_CONTROL_CAMERA_PHY_CTRL, 0);
  +   u32 shift, mode;
  +
  +   switch (iface) {
  +   case ISP_INTERFACE_CCP2B_PHY1:
  +   cam_phy_ctrl =
  +   ~OMAP3630_CONTROL_CAMERA_PHY_CTRL_CSI1_RX_SEL_PHY2;
  +   shift = OMAP3630_CONTROL_CAMERA_PHY_CTRL_CAMMODE_PHY1_SHIFT;
  +   break;
  +   case ISP_INTERFACE_CSI2C_PHY1:
  +   shift = OMAP3630_CONTROL_CAMERA_PHY_CTRL_CAMMODE_PHY1_SHIFT;
  +   mode = OMAP3630_CONTROL_CAMERA_PHY_CTRL_CAMMODE_DPHY;
  +   break;
  +   case ISP_INTERFACE_CCP2B_PHY2:
  +   cam_phy_ctrl |=
  +   OMAP3630_CONTROL_CAMERA_PHY_CTRL_CSI1_RX_SEL_PHY2;
  +   shift = OMAP3630_CONTROL_CAMERA_PHY_CTRL_CAMMODE_PHY2_SHIFT;
  +   break;
  +   case ISP_INTERFACE_CSI2A_PHY2:
  +   shift = OMAP3630_CONTROL_CAMERA_PHY_CTRL_CAMMODE_PHY2_SHIFT;
  +   mode = OMAP3630_CONTROL_CAMERA_PHY_CTRL_CAMMODE_DPHY;
  +   break;
  +   default:
  +   pr_warn(bad iface %d\n, iface);
 
 As you already know, dev_warn() is a better idea. Can this actually happen ?

I don't think so; it's checked in isp.c in isp_register_entities().. I'll
remove it.

Cheers.

-- 
Sakari Ailus
e-mail: sakari.ai...@iki.fi XMPP: sai...@retiisi.org.uk
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 1/2] ARM: OMAP: Trivial driver changes to remove include plat/cpu.h

2012-10-09 Thread Jarkko Nikula
On Mon, 08 Oct 2012 10:35:57 -0700
Tony Lindgren t...@atomide.com wrote:

 - omap-dma.c and omap-pcm.c can test the arch locally as
   omap1 and omap2 cannot be compiled together because of
   conflicting compiler flags
...
  sound/soc/omap/omap-pcm.c |9 +++--

Build tested above for omap1 and omap2+.

Acked-by: Jarkko Nikula jarkko.nik...@bitmer.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: Issue with _are_all_hardreset_lines_asserted()

2012-10-09 Thread Archit Taneja

Hi,

On Tuesday 09 October 2012 11:08 AM, Paul Walmsley wrote:

cc Vaibhav due to the AM33xx change

Hi

On Thu, 4 Oct 2012, Archit Taneja wrote:


I was trying out the linux-next kernel, and I noticed that DSS MODULEMODE bits
are never cleared.

In _omap4_disable_module(), there is a check:

...

if (!_are_all_hardreset_lines_asserted(oh))
return 0;

/* MODULEMODE bits cleared here */
...
...
...

The function _are_all_hardreset_lines_asserted() returns false if
'oh-rst_lines_cnt == 0', so we bail out from _omap4_disable_module() before
clearing the MODULEMODE bits.

Is this correct behavior? This would prevent all hwmods who have rst_lines_cnt
as 0 to not get their MODULEMODE bits cleared.


You're right, that looks bogus.  What do you think about the following
patch?



The patch looks fine to me. I tried it out for DSS(with an additional 
patch to not represent DSS modulemode bits as a slave clock), and 
modulemode is getting disabled correctly now.


Thanks,
Archit



- Paul

From: Paul Walmsley p...@pwsan.com
Date: Mon, 8 Oct 2012 23:08:15 -0600
Subject: [PATCH] ARM: OMAP4/AM335x: hwmod: fix disable_module regression in
  hardreset handling

Commit eb05f691290e99ee0bd1672317d6add789523c1e (ARM: OMAP: hwmod:
partially un-reset hwmods might not be properly enabled) added code
to skip the IP block disable sequence if any hardreset lines were left
unasserted.  But this did not handle the case when no hardreset lines
were associated with a module, which is the general case.  In that
situation, the IP block would be skipped, which is likely to cause PM
regressions.

So, modify _omap4_disable_module() and _am33xx_disable_module() to
only bail out early if there are any hardreset lines asserted.  And
move the AM33xx test above the actual module disable code to ensure
that the behavior is consistent.

Reported-by: Archit Taneja a0393...@ti.com
Cc: Omar Ramirez Luna omar.l...@linaro.org
Cc: Vaibhav Hiremath hvaib...@ti.com
Signed-off-by: Paul Walmsley p...@pwsan.com
---
  arch/arm/mach-omap2/omap_hwmod.c |   31 +++
  1 file changed, 27 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index 299ca28..b969ab1 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -1698,6 +1698,29 @@ static bool _are_all_hardreset_lines_asserted(struct 
omap_hwmod *oh)
  }

  /**
+ * _are_any_hardreset_lines_asserted - return true if any part of @oh is
+ * hard-reset
+ * @oh: struct omap_hwmod *
+ *
+ * If any hardreset lines associated with @oh are asserted, then
+ * return true.  Otherwise, if no hardreset lines associated with @oh
+ * are asserted, or if @oh has no hardreset lines, then return false.
+ * This function is used to avoid executing some parts of the IP block
+ * enable/disable sequence if any hardreset line is set.
+ */
+static bool _are_any_hardreset_lines_asserted(struct omap_hwmod *oh)
+{
+   int rst_cnt = 0;
+   int i;
+
+   for (i = 0; i  oh-rst_lines_cnt  rst_cnt == 0; i++)
+   if (_read_hardreset(oh, oh-rst_lines[i].name)  0)
+   rst_cnt++;
+
+   return (rst_cnt) ? true : false;
+}
+
+/**
   * _omap4_disable_module - enable CLKCTRL modulemode on OMAP4
   * @oh: struct omap_hwmod *
   *
@@ -1715,7 +1738,7 @@ static int _omap4_disable_module(struct omap_hwmod *oh)
 * Since integration code might still be doing something, only
 * disable if all lines are under hardreset.
 */
-   if (!_are_all_hardreset_lines_asserted(oh))
+   if (_are_any_hardreset_lines_asserted(oh))
return 0;

pr_debug(omap_hwmod: %s: %s\n, oh-name, __func__);
@@ -1749,12 +1772,12 @@ static int _am33xx_disable_module(struct omap_hwmod *oh)

pr_debug(omap_hwmod: %s: %s\n, oh-name, __func__);

+   if (_are_any_hardreset_lines_asserted(oh))
+   return 0;
+
am33xx_cm_module_disable(oh-clkdm-cm_inst, oh-clkdm-clkdm_offs,
 oh-prcm.omap4.clkctrl_offs);

-   if (_are_all_hardreset_lines_asserted(oh))
-   return 0;
-
v = _am33xx_wait_target_disable(oh);
if (v)
pr_warn(omap_hwmod: %s: _wait_target_disable failed\n,



--
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: Issue with _are_all_hardreset_lines_asserted()

2012-10-09 Thread Paul Walmsley
On Tue, 9 Oct 2012, Archit Taneja wrote:

 The patch looks fine to me. I tried it out for DSS(with an additional patch to
 not represent DSS modulemode bits as a slave clock), and modulemode is getting
 disabled correctly now.

Thanks, I added your Tested-by: and also updated the patch description 
which was a little unclear.


- Paul

From: Paul Walmsley p...@pwsan.com
Date: Mon, 8 Oct 2012 23:08:15 -0600
Subject: [PATCH] ARM: OMAP4/AM335x: hwmod: fix disable_module regression in
 hardreset handling

Commit eb05f691290e99ee0bd1672317d6add789523c1e (ARM: OMAP: hwmod:
partially un-reset hwmods might not be properly enabled) added code
to skip the IP block disable sequence if all of the block's hardreset
lines weren't asserted.  But this did not handle the case when no
hardreset lines were associated with a module, which is the general
case.  In that situation, the IP block disable would be skipped.  This
is likely to cause PM regressions.

So, modify _omap4_disable_module() and _am33xx_disable_module() to
only bail out early if there are any hardreset lines asserted.  And
move the AM33xx test above the actual module disable code to ensure
that the behavior is consistent.

Reported-by: Archit Taneja a0393...@ti.com
Tested-by: Archit Taneja a0393...@ti.com # DSS
Cc: Omar Ramirez Luna omar.l...@linaro.org
Cc: Vaibhav Hiremath hvaib...@ti.com
Signed-off-by: Paul Walmsley p...@pwsan.com
---
 arch/arm/mach-omap2/omap_hwmod.c |   31 +++
 1 file changed, 27 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index 299ca28..b969ab1 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -1698,6 +1698,29 @@ static bool _are_all_hardreset_lines_asserted(struct 
omap_hwmod *oh)
 }
 
 /**
+ * _are_any_hardreset_lines_asserted - return true if any part of @oh is
+ * hard-reset
+ * @oh: struct omap_hwmod *
+ *
+ * If any hardreset lines associated with @oh are asserted, then
+ * return true.  Otherwise, if no hardreset lines associated with @oh
+ * are asserted, or if @oh has no hardreset lines, then return false.
+ * This function is used to avoid executing some parts of the IP block
+ * enable/disable sequence if any hardreset line is set.
+ */
+static bool _are_any_hardreset_lines_asserted(struct omap_hwmod *oh)
+{
+   int rst_cnt = 0;
+   int i;
+
+   for (i = 0; i  oh-rst_lines_cnt  rst_cnt == 0; i++)
+   if (_read_hardreset(oh, oh-rst_lines[i].name)  0)
+   rst_cnt++;
+
+   return (rst_cnt) ? true : false;
+}
+
+/**
  * _omap4_disable_module - enable CLKCTRL modulemode on OMAP4
  * @oh: struct omap_hwmod *
  *
@@ -1715,7 +1738,7 @@ static int _omap4_disable_module(struct omap_hwmod *oh)
 * Since integration code might still be doing something, only
 * disable if all lines are under hardreset.
 */
-   if (!_are_all_hardreset_lines_asserted(oh))
+   if (_are_any_hardreset_lines_asserted(oh))
return 0;
 
pr_debug(omap_hwmod: %s: %s\n, oh-name, __func__);
@@ -1749,12 +1772,12 @@ static int _am33xx_disable_module(struct omap_hwmod *oh)
 
pr_debug(omap_hwmod: %s: %s\n, oh-name, __func__);
 
+   if (_are_any_hardreset_lines_asserted(oh))
+   return 0;
+
am33xx_cm_module_disable(oh-clkdm-cm_inst, oh-clkdm-clkdm_offs,
 oh-prcm.omap4.clkctrl_offs);
 
-   if (_are_all_hardreset_lines_asserted(oh))
-   return 0;
-
v = _am33xx_wait_target_disable(oh);
if (v)
pr_warn(omap_hwmod: %s: _wait_target_disable failed\n,
-- 
1.7.10.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: Issue with _are_all_hardreset_lines_asserted()

2012-10-09 Thread Hiremath, Vaibhav
On Tue, Oct 09, 2012 at 12:29:53, Paul Walmsley wrote:
 On Tue, 9 Oct 2012, Archit Taneja wrote:
 
  The patch looks fine to me. I tried it out for DSS(with an additional patch 
  to
  not represent DSS modulemode bits as a slave clock), and modulemode is 
  getting
  disabled correctly now.
 
 Thanks, I added your Tested-by: and also updated the patch description 
 which was a little unclear.
 
 
 - Paul
 
 From: Paul Walmsley p...@pwsan.com
 Date: Mon, 8 Oct 2012 23:08:15 -0600
 Subject: [PATCH] ARM: OMAP4/AM335x: hwmod: fix disable_module regression in
  hardreset handling
 
 Commit eb05f691290e99ee0bd1672317d6add789523c1e (ARM: OMAP: hwmod:
 partially un-reset hwmods might not be properly enabled) added code
 to skip the IP block disable sequence if all of the block's hardreset
 lines weren't asserted.  But this did not handle the case when no
 hardreset lines were associated with a module, which is the general
 case.  In that situation, the IP block disable would be skipped.  This
 is likely to cause PM regressions.
 
 So, modify _omap4_disable_module() and _am33xx_disable_module() to
 only bail out early if there are any hardreset lines asserted.  And
 move the AM33xx test above the actual module disable code to ensure
 that the behavior is consistent.
 

Paul,

I just tested it on Bone + one gpmc fix (will submit shortly) and it boots 
up fine for me. I have also tested for module disable, and it works.

Tested-by: Vaibhav Hiremath hvaib...@ti.com
Acked-by: Vaibhav Hiremath hvaib...@ti.com


Log for reference - 


[0.749504] _clkctrl_idlest:109 inst - 0, clkctrl_offs - 84, v - 2
[0.749630] omap_hwmod: timer3: _am33xx_disable_module
[0.749652] _clkctrl_idlest:109 inst - 0, clkctrl_offs - 84, v - 3
[0.749819] _clkctrl_idlest:109 inst - 0, clkctrl_offs - 88, v - 30002
[0.749841] _clkctrl_idlest:109 inst - 0, clkctrl_offs - 88, v - 2
[0.749904] omap_hwmod: timer4: _am33xx_disable_module
[0.749923] _clkctrl_idlest:109 inst - 0, clkctrl_offs - 88, v - 3
[0.750131] _clkctrl_idlest:109 inst - 0, clkctrl_offs - ec, v - 10002
[0.750152] _clkctrl_idlest:109 inst - 0, clkctrl_offs - ec, v - 2
[0.750218] omap_hwmod: timer5: _am33xx_disable_module
[0.750236] _clkctrl_idlest:109 inst - 0, clkctrl_offs - ec, v - 1
[0.750253] _clkctrl_idlest:109 inst - 0, clkctrl_offs - ec, v - 3
[0.750404] _clkctrl_idlest:109 inst - 0, clkctrl_offs - f0, v - 30002
[0.750423] _clkctrl_idlest:109 inst - 0, clkctrl_offs - f0, v - 2
[0.750485] omap_hwmod: timer6: _am33xx_disable_module
[0.750504] _clkctrl_idlest:109 inst - 0, clkctrl_offs - f0, v - 1
[0.750520] _clkctrl_idlest:109 inst - 0, clkctrl_offs - f0, v - 3
[0.750666] _clkctrl_idlest:109 inst - 0, clkctrl_offs - 7c, v - 30002
[0.750685] _clkctrl_idlest:109 inst - 0, clkctrl_offs - 7c, v - 2
[0.750747] omap_hwmod: timer7: _am33xx_disable_module
[0.750765] _clkctrl_idlest:109 inst - 0, clkctrl_offs - 7c, v - 1
[0.750782] _clkctrl_idlest:109 inst - 0, clkctrl_offs - 7c, v - 3


Thanks,
Vaibhav


 Reported-by: Archit Taneja a0393...@ti.com
 Tested-by: Archit Taneja a0393...@ti.com # DSS
 Cc: Omar Ramirez Luna omar.l...@linaro.org
 Cc: Vaibhav Hiremath hvaib...@ti.com
 Signed-off-by: Paul Walmsley p...@pwsan.com
 ---
  arch/arm/mach-omap2/omap_hwmod.c |   31 +++
  1 file changed, 27 insertions(+), 4 deletions(-)
 
 diff --git a/arch/arm/mach-omap2/omap_hwmod.c 
 b/arch/arm/mach-omap2/omap_hwmod.c
 index 299ca28..b969ab1 100644
 --- a/arch/arm/mach-omap2/omap_hwmod.c
 +++ b/arch/arm/mach-omap2/omap_hwmod.c
 @@ -1698,6 +1698,29 @@ static bool _are_all_hardreset_lines_asserted(struct 
 omap_hwmod *oh)
  }
  
  /**
 + * _are_any_hardreset_lines_asserted - return true if any part of @oh is
 + * hard-reset
 + * @oh: struct omap_hwmod *
 + *
 + * If any hardreset lines associated with @oh are asserted, then
 + * return true.  Otherwise, if no hardreset lines associated with @oh
 + * are asserted, or if @oh has no hardreset lines, then return false.
 + * This function is used to avoid executing some parts of the IP block
 + * enable/disable sequence if any hardreset line is set.
 + */
 +static bool _are_any_hardreset_lines_asserted(struct omap_hwmod *oh)
 +{
 + int rst_cnt = 0;
 + int i;
 +
 + for (i = 0; i  oh-rst_lines_cnt  rst_cnt == 0; i++)
 + if (_read_hardreset(oh, oh-rst_lines[i].name)  0)
 + rst_cnt++;
 +
 + return (rst_cnt) ? true : false;
 +}
 +
 +/**
   * _omap4_disable_module - enable CLKCTRL modulemode on OMAP4
   * @oh: struct omap_hwmod *
   *
 @@ -1715,7 +1738,7 @@ static int _omap4_disable_module(struct omap_hwmod *oh)
* Since integration code might still be doing something, only
* disable if all lines are under hardreset.
*/
 - if (!_are_all_hardreset_lines_asserted(oh))
 + if (_are_any_hardreset_lines_asserted(oh))
   return 0;
  
 

Re: [PATCH 1/2] OMAP: VRFB: convert vrfb to platform device

2012-10-09 Thread Tomi Valkeinen
On Mon, 2012-10-08 at 10:24 -0700, Tony Lindgren wrote:
 * Tomi Valkeinen tomi.valkei...@ti.com [121008 05:31]:
  This patch converts vrfb library into a platform device, in an effort to
  remove omap dependencies.
  
  The platform device is registered in arch/arm/plat-omap/fb.c and
  assigned resources depending on whether running on omap2 or omap3.
  
  The vrfb driver will parse those resources and use them to access vrfb
  configuration registers and the vrfb virtual rotation areas.
  
  Signed-off-by: Tomi Valkeinen tomi.valkei...@ti.com
  Cc: Tony Lindgren t...@atomide.com
  ---
   arch/arm/plat-omap/fb.c|   53 +++
   drivers/video/omap2/vrfb.c |  124 
  +---
   2 files changed, 157 insertions(+), 20 deletions(-)
  
  diff --git a/arch/arm/plat-omap/fb.c b/arch/arm/plat-omap/fb.c
  index dd6f92c..d231912 100644
  --- a/arch/arm/plat-omap/fb.c
  +++ b/arch/arm/plat-omap/fb.c
  @@ -35,6 +35,59 @@
   
   #include plat/board.h
   
  +#if defined(CONFIG_OMAP2_VRFB)
  +static const struct resource omap2_vrfb_resources[] = {
  +   DEFINE_RES_MEM(0x68008000u, 0x40),
  +   DEFINE_RES_MEM(0x7000u, 0x400),
  +   DEFINE_RES_MEM(0x7400u, 0x400),
  +   DEFINE_RES_MEM(0x7800u, 0x400),
  +   DEFINE_RES_MEM(0x7c00u, 0x400),
  +};
  +
  +static const struct resource omap3_vrfb_resources[] = {
  +   DEFINE_RES_MEM(0x6C000180u, 0xc0),
  +   DEFINE_RES_MEM(0x7000u, 0x400),
  +   DEFINE_RES_MEM(0x7400u, 0x400),
  +   DEFINE_RES_MEM(0x7800u, 0x400),
  +   DEFINE_RES_MEM(0x7c00u, 0x400),
  +   DEFINE_RES_MEM(0xe000u, 0x400),
  +   DEFINE_RES_MEM(0xe400u, 0x400),
  +   DEFINE_RES_MEM(0xe800u, 0x400),
  +   DEFINE_RES_MEM(0xec00u, 0x400),
  +   DEFINE_RES_MEM(0xf000u, 0x400),
  +   DEFINE_RES_MEM(0xf400u, 0x400),
  +   DEFINE_RES_MEM(0xf800u, 0x400),
  +   DEFINE_RES_MEM(0xfc00u, 0x400),
  +};
 
 Maybe add comments describing what these register are in case
 we have a framework handling them at some point later on?

Sure.

  --- a/drivers/video/omap2/vrfb.c
  +++ b/drivers/video/omap2/vrfb.c
  +#define SMS_ROT_CONTROL(context)   (0x0 + 0x10 * context)
  +#define SMS_ROT_SIZE(context)  (0x4 + 0x10 * context)
  +#define SMS_ROT_PHYSICAL_BA(context)   (0x8 + 0x10 * context)
  +#define SMS_ROT_VIRT_BASE(rot) (0x100 * (rot))
 
 Can you please also remove the old SMS defines and functions
 so other code won't start tinkering with them?

Ok.

  +static int __init vrfb_probe(struct platform_device *pdev)
  +{
  +   struct resource *mem;
  +   int i;
  +
  +   /* first resource is the register res, the rest are vrfb contexts */
  +
  +   mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
  +   if (!mem) {
  +   dev_err(pdev-dev, can't get vrfb base address\n);
  +   return -EINVAL;
  +   }
 
 Now that we assume vrfb is the only user of this, so you must do
 request_mem_region here as that's the only protection we have.
 If that fails here, then we know something is wrong.

Right, I'll add that.

  +   vrfb_base = devm_ioremap(pdev-dev, mem-start, resource_size(mem));
  +   if (!vrfb_base) {
  +   dev_err(pdev-dev, can't ioremap vrfb memory\n);
  +   return -ENOMEM;
  +   }
  +
  +   num_ctxs = pdev-num_resources - 1;
  +
  +   ctxs = devm_kzalloc(pdev-dev,
  +   sizeof(struct vrfb_ctx) * num_ctxs,
  +   GFP_KERNEL);
  +
  +   if (!ctxs)
  +   return -ENOMEM;
  +
  +   for (i = 0; i  num_ctxs; ++i) {
  +   mem = platform_get_resource(pdev, IORESOURCE_MEM, 1 + i);
  +   if (!mem) {
  +   dev_err(pdev-dev, can't get vrfb ctx %d address\n,
  +   i);
  +   return -EINVAL;
  +   }
  +
  +   ctxs[i].base = mem-start;
  +   }
 
 And request_mem_region must also be done for these registers to make
 sure no other code is using them. Again, if it fails, something is
 wrong.

There's already request_mem_region for the VRFB virtual areas, which is
done later when omapfb or somebody else requests a vrfb context with
omap_vrfb_request_ctx(). The memory areas (they are rotated
framebuffers, not registers as such) are not used until then.

 Tomi



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


[PATCH] ARM: OMAP2+: gpmc: Fix kernel BUG for DT boot mode

2012-10-09 Thread Vaibhav Hiremath
With recent changes in omap gpmc driver code, in case of DT
boot mode, where bootloader does not configure gpmc cs space
will result into kernel BUG() inside gpmc_mem_init() function,
as gpmc cs0 gpmc_config7[0].csvalid bit is set to '1' and
gpmc_config7[0].baseaddress is set to '0' on reset.

This use-case is applicable for any board/EVM which doesn't have
any peripheral connected to gpmc cs0, for example BeagleXM and
BeagleBone, so DT boot mode fails.

This patch adds of_have_populated_dt() check before creating
device, so that for DT boot mode, gpmc probe will not be called
which is expected behavior, as gpmc is not supported yet from DT.

Signed-off-by: Vaibhav Hiremath hvaib...@ti.com
Cc: Afzal Mohammed af...@ti.com
Cc: Tony Lindgren t...@atomide.com
Cc Paul Walmsley p...@pwsan.com
---
This should go in for rc1, as this breaks AM33xx boot.

 arch/arm/mach-omap2/gpmc.c |4 
 1 files changed, 4 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c
index 8ab1e1b..c68f9e1 100644
--- a/arch/arm/mach-omap2/gpmc.c
+++ b/arch/arm/mach-omap2/gpmc.c
@@ -981,6 +981,10 @@ static int __init omap_gpmc_init(void)
struct platform_device *pdev;
char *oh_name = gpmc;

+   /* If dtb is there, the devices will be created dynamically */
+   if (of_have_populated_dt())
+   return -ENODEV;
+
oh = omap_hwmod_lookup(oh_name);
if (!oh) {
pr_err(Could not look up %s\n, oh_name);
--
1.7.0.4

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


Re: [PATCH 1/2] ARM: OMAP: Trivial driver changes to remove include plat/cpu.h

2012-10-09 Thread Péter Ujfalusi
On 10/08/2012 07:35 PM, Tony Lindgren wrote:

 - omap-dma.c and omap-pcm.c can test the arch locally as
   omap1 and omap2 cannot be compiled together because of
   conflicting compiler flags

  sound/soc/omap/omap-pcm.c |9 +++--

Tony: is this going to be included in 3.7?

Acked-by: Peter Ujfalusi peter.ujfal...@ti.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


[PATCHv2 0/3] OMAP: VRFB: convert to platform device

2012-10-09 Thread Tomi Valkeinen
Hi,

This is second version of the patch series. The changes to v1 are:
* request mem region for VRFB registers
* declare VRFB resources with names
* remove unused VRFB code from sdrc
* vrfb is now tristate, so that it can be built as a module

 Tomi

Tomi Valkeinen (3):
  OMAP: VRFB: convert vrfb to platform device
  OMAP: move arch/arm/plat-omap/include/plat/vrfb.h
  OMAP: SDRC: remove VRFB code

 arch/arm/mach-omap2/sdrc.c|   16 
 arch/arm/plat-omap/fb.c   |   59 ++
 arch/arm/plat-omap/include/plat/sdrc.h|7 --
 arch/arm/plat-omap/include/plat/vrfb.h|   66 ---
 drivers/media/video/omap/omap_vout.c  |2 +-
 drivers/media/video/omap/omap_vout_vrfb.c |2 +-
 drivers/media/video/omap/omap_voutdef.h   |2 +-
 drivers/video/omap2/Kconfig   |2 +-
 drivers/video/omap2/omapfb/omapfb-ioctl.c |2 +-
 drivers/video/omap2/omapfb/omapfb-main.c  |2 +-
 drivers/video/omap2/omapfb/omapfb-sysfs.c |2 +-
 drivers/video/omap2/vrfb.c|  126 -
 include/video/omapvrfb.h  |   66 +++
 13 files changed, 237 insertions(+), 117 deletions(-)
 delete mode 100644 arch/arm/plat-omap/include/plat/vrfb.h
 create mode 100644 include/video/omapvrfb.h

-- 
1.7.9.5

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


[PATCHv2 1/3] OMAP: VRFB: convert vrfb to platform device

2012-10-09 Thread Tomi Valkeinen
This patch converts vrfb library into a platform device, in an effort to
remove omap dependencies.

The platform device is registered in arch/arm/plat-omap/fb.c and
assigned resources depending on whether running on omap2 or omap3.

The vrfb driver will parse those resources and use them to access vrfb
configuration registers and the vrfb virtual rotation areas.

Signed-off-by: Tomi Valkeinen tomi.valkei...@ti.com
Cc: Tony Lindgren t...@atomide.com
---
 arch/arm/plat-omap/fb.c|   59 +++
 arch/arm/plat-omap/include/plat/vrfb.h |2 +-
 drivers/video/omap2/Kconfig|2 +-
 drivers/video/omap2/vrfb.c |  124 ++--
 4 files changed, 165 insertions(+), 22 deletions(-)

diff --git a/arch/arm/plat-omap/fb.c b/arch/arm/plat-omap/fb.c
index dd6f92c..a390784 100644
--- a/arch/arm/plat-omap/fb.c
+++ b/arch/arm/plat-omap/fb.c
@@ -35,6 +35,65 @@
 
 #include plat/board.h
 
+#if defined(CONFIG_OMAP2_VRFB) || defined(CONFIG_OMAP2_VRFB_MODULE)
+
+/*
+ * The first memory resource is the register region for VRFB,
+ * the rest are VRFB virtual memory areas for each VRFB context.
+ */
+
+static const struct resource omap2_vrfb_resources[] = {
+   DEFINE_RES_MEM_NAMED(0x68008000u, 0x40, vrfb-regs),
+   DEFINE_RES_MEM_NAMED(0x7000u, 0x400, vrfb-area-0),
+   DEFINE_RES_MEM_NAMED(0x7400u, 0x400, vrfb-area-1),
+   DEFINE_RES_MEM_NAMED(0x7800u, 0x400, vrfb-area-2),
+   DEFINE_RES_MEM_NAMED(0x7c00u, 0x400, vrfb-area-3),
+};
+
+static const struct resource omap3_vrfb_resources[] = {
+   DEFINE_RES_MEM_NAMED(0x6C000180u, 0xc0, vrfb-regs),
+   DEFINE_RES_MEM_NAMED(0x7000u, 0x400, vrfb-area-0),
+   DEFINE_RES_MEM_NAMED(0x7400u, 0x400, vrfb-area-1),
+   DEFINE_RES_MEM_NAMED(0x7800u, 0x400, vrfb-area-2),
+   DEFINE_RES_MEM_NAMED(0x7c00u, 0x400, vrfb-area-3),
+   DEFINE_RES_MEM_NAMED(0xe000u, 0x400, vrfb-area-4),
+   DEFINE_RES_MEM_NAMED(0xe400u, 0x400, vrfb-area-5),
+   DEFINE_RES_MEM_NAMED(0xe800u, 0x400, vrfb-area-6),
+   DEFINE_RES_MEM_NAMED(0xec00u, 0x400, vrfb-area-7),
+   DEFINE_RES_MEM_NAMED(0xf000u, 0x400, vrfb-area-8),
+   DEFINE_RES_MEM_NAMED(0xf400u, 0x400, vrfb-area-9),
+   DEFINE_RES_MEM_NAMED(0xf800u, 0x400, vrfb-area-10),
+   DEFINE_RES_MEM_NAMED(0xfc00u, 0x400, vrfb-area-11),
+};
+
+static int __init omap_init_vrfb(void)
+{
+   struct platform_device *pdev;
+   const struct resource *res;
+   unsigned int num_res;
+
+   if (cpu_is_omap24xx()) {
+   res = omap2_vrfb_resources;
+   num_res = ARRAY_SIZE(omap2_vrfb_resources);
+   } else if (cpu_is_omap34xx()) {
+   res = omap3_vrfb_resources;
+   num_res = ARRAY_SIZE(omap3_vrfb_resources);
+   } else {
+   return 0;
+   }
+
+   pdev = platform_device_register_resndata(NULL, omapvrfb, -1,
+   res, num_res, NULL, 0);
+
+   if (IS_ERR(pdev))
+   return PTR_ERR(pdev);
+   else
+   return 0;
+}
+
+arch_initcall(omap_init_vrfb);
+#endif
+
 #if defined(CONFIG_FB_OMAP) || defined(CONFIG_FB_OMAP_MODULE)
 
 static bool omapfb_lcd_configured;
diff --git a/arch/arm/plat-omap/include/plat/vrfb.h 
b/arch/arm/plat-omap/include/plat/vrfb.h
index 3792bde..dafbb77 100644
--- a/arch/arm/plat-omap/include/plat/vrfb.h
+++ b/arch/arm/plat-omap/include/plat/vrfb.h
@@ -35,7 +35,7 @@ struct vrfb {
bool yuv_mode;
 };
 
-#ifdef CONFIG_OMAP2_VRFB
+#if defined(CONFIG_OMAP2_VRFB) || defined(CONFIG_OMAP2_VRFB_MODULE)
 extern int omap_vrfb_request_ctx(struct vrfb *vrfb);
 extern void omap_vrfb_release_ctx(struct vrfb *vrfb);
 extern void omap_vrfb_adjust_size(u16 *width, u16 *height,
diff --git a/drivers/video/omap2/Kconfig b/drivers/video/omap2/Kconfig
index d877c36..4700ca9 100644
--- a/drivers/video/omap2/Kconfig
+++ b/drivers/video/omap2/Kconfig
@@ -2,7 +2,7 @@ config OMAP2_VRAM
bool
 
 config OMAP2_VRFB
-   bool
+   tristate
 
 source drivers/video/omap2/dss/Kconfig
 source drivers/video/omap2/omapfb/Kconfig
diff --git a/drivers/video/omap2/vrfb.c b/drivers/video/omap2/vrfb.c
index 7e99022..fda45cc 100644
--- a/drivers/video/omap2/vrfb.c
+++ b/drivers/video/omap2/vrfb.c
@@ -26,9 +26,9 @@
 #include linux/io.h
 #include linux/bitops.h
 #include linux/mutex.h
+#include linux/platform_device.h
 
 #include plat/vrfb.h
-#include plat/sdrc.h
 
 #ifdef DEBUG
 #define DBG(format, ...) pr_debug(VRFB:  format, ## __VA_ARGS__)
@@ -36,10 +36,10 @@
 #define DBG(format, ...)
 #endif
 
-#define SMS_ROT_VIRT_BASE(context, rot) \
-   (((context = 4) ? 0xD000 : 0x7000) \
-+ (0x400 * (context)) \
-+ (0x100 * (rot)))
+#define SMS_ROT_CONTROL(context)   (0x0 + 0x10 * context)
+#define SMS_ROT_SIZE(context)  (0x4 + 0x10 * context)

[PATCHv2 2/3] OMAP: move arch/arm/plat-omap/include/plat/vrfb.h

2012-10-09 Thread Tomi Valkeinen
Now that vrfb driver is not omap dependent anymore, we can move vrfb.h
from arch/arm/plat-omap/include/plat to include/video/omapvrfb.h.

Signed-off-by: Tomi Valkeinen tomi.valkei...@ti.com
Cc: Tony Lindgren t...@atomide.com
Cc: Vaibhav Hiremath hvaib...@ti.com
---
 arch/arm/plat-omap/include/plat/vrfb.h|   66 -
 drivers/media/video/omap/omap_vout.c  |2 +-
 drivers/media/video/omap/omap_vout_vrfb.c |2 +-
 drivers/media/video/omap/omap_voutdef.h   |2 +-
 drivers/video/omap2/omapfb/omapfb-ioctl.c |2 +-
 drivers/video/omap2/omapfb/omapfb-main.c  |2 +-
 drivers/video/omap2/omapfb/omapfb-sysfs.c |2 +-
 drivers/video/omap2/vrfb.c|2 +-
 include/video/omapvrfb.h  |   66 +
 9 files changed, 73 insertions(+), 73 deletions(-)
 delete mode 100644 arch/arm/plat-omap/include/plat/vrfb.h
 create mode 100644 include/video/omapvrfb.h

diff --git a/arch/arm/plat-omap/include/plat/vrfb.h 
b/arch/arm/plat-omap/include/plat/vrfb.h
deleted file mode 100644
index dafbb77..000
--- a/arch/arm/plat-omap/include/plat/vrfb.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * VRFB Rotation Engine
- *
- * Copyright (C) 2009 Nokia Corporation
- * Author: Tomi Valkeinen tomi.valkei...@nokia.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.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
- */
-
-#ifndef __OMAP_VRFB_H__
-#define __OMAP_VRFB_H__
-
-#define OMAP_VRFB_LINE_LEN 2048
-
-struct vrfb {
-   u8 context;
-   void __iomem *vaddr[4];
-   unsigned long paddr[4];
-   u16 xres;
-   u16 yres;
-   u16 xoffset;
-   u16 yoffset;
-   u8 bytespp;
-   bool yuv_mode;
-};
-
-#if defined(CONFIG_OMAP2_VRFB) || defined(CONFIG_OMAP2_VRFB_MODULE)
-extern int omap_vrfb_request_ctx(struct vrfb *vrfb);
-extern void omap_vrfb_release_ctx(struct vrfb *vrfb);
-extern void omap_vrfb_adjust_size(u16 *width, u16 *height,
-   u8 bytespp);
-extern u32 omap_vrfb_min_phys_size(u16 width, u16 height, u8 bytespp);
-extern u16 omap_vrfb_max_height(u32 phys_size, u16 width, u8 bytespp);
-extern void omap_vrfb_setup(struct vrfb *vrfb, unsigned long paddr,
-   u16 width, u16 height,
-   unsigned bytespp, bool yuv_mode);
-extern int omap_vrfb_map_angle(struct vrfb *vrfb, u16 height, u8 rot);
-extern void omap_vrfb_restore_context(void);
-
-#else
-static inline int omap_vrfb_request_ctx(struct vrfb *vrfb) { return 0; }
-static inline void omap_vrfb_release_ctx(struct vrfb *vrfb) {}
-static inline void omap_vrfb_adjust_size(u16 *width, u16 *height,
-   u8 bytespp) {}
-static inline u32 omap_vrfb_min_phys_size(u16 width, u16 height, u8 bytespp)
-   { return 0; }
-static inline u16 omap_vrfb_max_height(u32 phys_size, u16 width, u8 bytespp)
-   { return 0; }
-static inline void omap_vrfb_setup(struct vrfb *vrfb, unsigned long paddr,
-   u16 width, u16 height, unsigned bytespp, bool yuv_mode) {}
-static inline int omap_vrfb_map_angle(struct vrfb *vrfb, u16 height, u8 rot)
-   { return 0; }
-static inline void omap_vrfb_restore_context(void) {}
-#endif
-#endif /* __VRFB_H */
diff --git a/drivers/media/video/omap/omap_vout.c 
b/drivers/media/video/omap/omap_vout.c
index f721fd2..940f39f 100644
--- a/drivers/media/video/omap/omap_vout.c
+++ b/drivers/media/video/omap/omap_vout.c
@@ -45,7 +45,7 @@
 #include media/v4l2-ioctl.h
 
 #include plat/dma.h
-#include plat/vrfb.h
+#include video/omapvrfb.h
 #include video/omapdss.h
 
 #include omap_voutlib.h
diff --git a/drivers/media/video/omap/omap_vout_vrfb.c 
b/drivers/media/video/omap/omap_vout_vrfb.c
index 4be26abf6c..6c37f92 100644
--- a/drivers/media/video/omap/omap_vout_vrfb.c
+++ b/drivers/media/video/omap/omap_vout_vrfb.c
@@ -17,7 +17,7 @@
 #include media/v4l2-device.h
 
 #include plat/dma.h
-#include plat/vrfb.h
+#include video/omapvrfb.h
 
 #include omap_voutdef.h
 #include omap_voutlib.h
diff --git a/drivers/media/video/omap/omap_voutdef.h 
b/drivers/media/video/omap/omap_voutdef.h
index 27a95d2..9ccfe1f 100644
--- a/drivers/media/video/omap/omap_voutdef.h
+++ b/drivers/media/video/omap/omap_voutdef.h
@@ -12,7 +12,7 @@
 #define OMAP_VOUTDEF_H
 
 #include video/omapdss.h
-#include plat/vrfb.h
+#include video/omapvrfb.h
 
 #define YUYV_BPP2
 #define RGB565_BPP  2
diff --git 

[PATCHv2 3/3] OMAP: SDRC: remove VRFB code

2012-10-09 Thread Tomi Valkeinen
Now that VRFB driver handles its registers independently, we can remove
the VRFB related code from OMAP's sdrc.

Signed-off-by: Tomi Valkeinen tomi.valkei...@ti.com
Cc: Tony Lindgren t...@atomide.com
---
 arch/arm/mach-omap2/sdrc.c |   16 
 arch/arm/plat-omap/include/plat/sdrc.h |7 ---
 2 files changed, 23 deletions(-)

diff --git a/arch/arm/mach-omap2/sdrc.c b/arch/arm/mach-omap2/sdrc.c
index e3d345f..4282e6e 100644
--- a/arch/arm/mach-omap2/sdrc.c
+++ b/arch/arm/mach-omap2/sdrc.c
@@ -160,19 +160,3 @@ void __init omap2_sdrc_init(struct omap_sdrc_params 
*sdrc_cs0,
sdrc_write_reg(l, SDRC_POWER);
omap2_sms_save_context();
 }
-
-void omap2_sms_write_rot_control(u32 val, unsigned ctx)
-{
-   sms_write_reg(val, SMS_ROT_CONTROL(ctx));
-}
-
-void omap2_sms_write_rot_size(u32 val, unsigned ctx)
-{
-   sms_write_reg(val, SMS_ROT_SIZE(ctx));
-}
-
-void omap2_sms_write_rot_physical_ba(u32 val, unsigned ctx)
-{
-   sms_write_reg(val, SMS_ROT_PHYSICAL_BA(ctx));
-}
-
diff --git a/arch/arm/plat-omap/include/plat/sdrc.h 
b/arch/arm/plat-omap/include/plat/sdrc.h
index 36d6a76..c68bab2 100644
--- a/arch/arm/plat-omap/include/plat/sdrc.h
+++ b/arch/arm/plat-omap/include/plat/sdrc.h
@@ -94,9 +94,6 @@
 /* SMS register offsets - read/write with sms_{read,write}_reg() */
 
 #define SMS_SYSCONFIG  0x010
-#define SMS_ROT_CONTROL(context)   (0x180 + 0x10 * context)
-#define SMS_ROT_SIZE(context)  (0x184 + 0x10 * context)
-#define SMS_ROT_PHYSICAL_BA(context)   (0x188 + 0x10 * context)
 /* REVISIT: fill in other SMS registers here */
 
 
@@ -137,10 +134,6 @@ int omap2_sdrc_get_params(unsigned long r,
 void omap2_sms_save_context(void);
 void omap2_sms_restore_context(void);
 
-void omap2_sms_write_rot_control(u32 val, unsigned ctx);
-void omap2_sms_write_rot_size(u32 val, unsigned ctx);
-void omap2_sms_write_rot_physical_ba(u32 val, unsigned ctx);
-
 #ifdef CONFIG_ARCH_OMAP2
 
 struct memory_timings {
-- 
1.7.9.5

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


RE: [PATCH 4/4] mtd: nand: omap2: Add data correction support

2012-10-09 Thread Philip, Avinash
On Fri, Oct 05, 2012 at 19:53:38, Ivan Djelic wrote:
 On Fri, Oct 05, 2012 at 09:51:50AM +0100, Philip, Avinash wrote:
  On Thu, Oct 04, 2012 at 15:51:03, Philip, Avinash wrote:
   On Thu, Oct 04, 2012 at 00:50:45, Ivan Djelic wrote:
On Wed, Oct 03, 2012 at 03:29:49PM +0100, Philip, Avinash wrote:
 ELM module can be used for error correction of BCH 4  8 bit. Also
 support read  write page in one shot by adding custom read_page 
 write_page methods. This helps in optimizing code.
 
 New structure member is_elm_used is added to know the status of
 whether the ELM module is used for error correction or not.
 
 Note:
 ECC layout of BCH8 uses 14 bytes for 512 byte of data to make 
 compatible
 with RBL ECC layout, even though the requirement was only 13 byte. 
 This
 results a common ecc layout across RBL, U-boot  Linux.
 

See a few comments below,

(...)
 +static int omap_elm_correct_data(struct mtd_info *mtd, u_char *dat,
 +   u_char *read_ecc, u_char *calc_ecc)
 +{
 +   struct omap_nand_info *info = container_of(mtd, struct 
 omap_nand_info,
 +   mtd);
 +   int eccsteps = info-nand.ecc.steps;
 +   int i , j, stat = 0;
 +   int eccsize, eccflag, size;
 +   struct elm_errorvec err_vec[ERROR_VECTOR_MAX];
 +   u_char *ecc_vec = calc_ecc;
 +   enum bch_ecc type;
 +   bool is_error_reported = false;
 +
 +   /* initialize elm error vector to zero */
 +   memset(err_vec, 0, sizeof(err_vec));
 +   if (info-nand.ecc.strength == BCH8_MAX_ERROR) {
 +   size = BCH8_SIZE;
 +   eccsize = BCH8_ECC_OOB_BYTES;
 +   type = BCH8_ECC;
 +   } else {
 +   size = BCH4_SIZE;
 +   eccsize = BCH4_SIZE;
 +   type = BCH4_ECC;
 +   }
 +
 +   for (i = 0; i  eccsteps ; i++) {
 +   eccflag = 0;/* initialize eccflag */
 +
 +   for (j = 0; (j  eccsize); j++) {
 +   if (read_ecc[j] != 0xFF) {
 +   eccflag = 1;/* data area is 
 flashed */

Just a reminder: this way of checking if a page has been programmed is 
not robust to bitflips,
so you may get into trouble with UBIFS on a fairly recent device.
  
  Sorry I missed this point.
  
  Here we were checking data in spare area (only in ecc layout 14*4 for BCH8) 
  is 0xFF. If all data
  in spare area is 0xFF, conclude that the page is erased  no need of error 
  correction. In case
  of bit flip present in spare area, page will be reported as uncorrectable.
  But I am not understand understand  trouble with UBIFS on a fairly recent 
  device.
  Can you little elaborativ
 
 There are at least 2 potential problems when reading an erased page with 
 bitflips:
 
 1. bitflip in data area and no bitflip in spare area (all 0xff)
 Your code will not perform any ECC correction.
 UBIFS does not like finding bitflips in empty pages, see for instance
 http://lists.infradead.org/pipermail/linux-mtd/2012-March/040328.html.

In case of error correction using ELM, syndrome vector calculated after reading
Data area  OOB area. So handling of erased page requires a software workaround.
I am planning something as follows.

I will first check calculated ecc, which would be zero for non error pages.
Then I would check 0xFF in OOB area (for erased page) by checking number of
bit zeros in OOB area.  If it is 0xFF (number of bit zero count is zero),
set entire page as 0xFF if number of bit zeros is less than max bit flips
(8 or 4) by counting the number of bit zero's in data area.

This logic is implemented in fsmc_nand.c

See commit
mtd: fsmc: Newly erased page read algorithm implemented

 
 2. bitflip in ECC bytes in spare area
 Your code will report an uncorrectable error upon reading; if this happens 
 while reading a partially programmed UBI block,
 I guess you will lose data.

In case of uncorrectable errors due to bit flips in spare area,
I can go on checking number of bit zero's in data area + OOB area
are less than max bit flips (8 or 4), I can go on setting the entire
page as 0xFF.

Thanks
Avinash

 
 BR,
 --
 Ivan
 

--
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 2/3] OMAP: move arch/arm/plat-omap/include/plat/vrfb.h

2012-10-09 Thread Hiremath, Vaibhav
On Tue, Oct 09, 2012 at 18:00:25, Valkeinen, Tomi wrote:
 Now that vrfb driver is not omap dependent anymore, we can move vrfb.h
 from arch/arm/plat-omap/include/plat to include/video/omapvrfb.h.
 

Which baseline you are using? I tried it with linux-omap/master, patch[1/3] is 
failing -

patching file arch/arm/plat-omap/include/plat/vrfb.h
patching file drivers/media/video/omap/omap_vout.c
Hunk #1 FAILED at 45.
1 out of 1 hunk FAILED -- saving rejects to file 
drivers/media/video/omap/omap_vout.c.rej
patching file drivers/media/video/omap/omap_vout_vrfb.c
Hunk #1 FAILED at 17.
1 out of 1 hunk FAILED -- saving rejects to file 
drivers/media/video/omap/omap_vout_vrfb.c.rej
patching file drivers/media/video/omap/omap_voutdef.h
Hunk #1 FAILED at 12.
1 out of 1 hunk FAILED -- saving rejects to file 
drivers/media/video/omap/omap_voutdef.h.rej
patching file drivers/video/omap2/omapfb/omapfb-ioctl.c
patching file drivers/video/omap2/omapfb/omapfb-main.c
Hunk #1 succeeded at 33 with fuzz 2 (offset 1 line).
patching file drivers/video/omap2/omapfb/omapfb-sysfs.c
patching file drivers/video/omap2/vrfb.c
patching file include/video/omapvrfb.h



Note that, the directory structure has been changed in the mainline,
Now V4L2 OMAP Display driver is in drivers/media/platform/omap/

You have to rebase the patches and resend it.

Thanks,
Vaibhav

 Signed-off-by: Tomi Valkeinen tomi.valkei...@ti.com
 Cc: Tony Lindgren t...@atomide.com
 Cc: Vaibhav Hiremath hvaib...@ti.com
 ---
  arch/arm/plat-omap/include/plat/vrfb.h|   66 
 -
  drivers/media/video/omap/omap_vout.c  |2 +-
  drivers/media/video/omap/omap_vout_vrfb.c |2 +-
  drivers/media/video/omap/omap_voutdef.h   |2 +-
  drivers/video/omap2/omapfb/omapfb-ioctl.c |2 +-
  drivers/video/omap2/omapfb/omapfb-main.c  |2 +-
  drivers/video/omap2/omapfb/omapfb-sysfs.c |2 +-
  drivers/video/omap2/vrfb.c|2 +-
  include/video/omapvrfb.h  |   66 
 +
  9 files changed, 73 insertions(+), 73 deletions(-)
  delete mode 100644 arch/arm/plat-omap/include/plat/vrfb.h
  create mode 100644 include/video/omapvrfb.h
 
 diff --git a/arch/arm/plat-omap/include/plat/vrfb.h 
 b/arch/arm/plat-omap/include/plat/vrfb.h
 deleted file mode 100644
 index dafbb77..000
 --- a/arch/arm/plat-omap/include/plat/vrfb.h
 +++ /dev/null
 @@ -1,66 +0,0 @@
 -/*
 - * VRFB Rotation Engine
 - *
 - * Copyright (C) 2009 Nokia Corporation
 - * Author: Tomi Valkeinen tomi.valkei...@nokia.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.
 - *
 - * This program is distributed in the hope that it will be useful, but
 - * WITHOUT ANY WARRANTY; without even the implied warranty of
 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 - * General Public License for more details.
 - *
 - * You should have received a copy of the GNU General Public License along
 - * with this program; if not, write to the Free Software Foundation, Inc.,
 - * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 - */
 -
 -#ifndef __OMAP_VRFB_H__
 -#define __OMAP_VRFB_H__
 -
 -#define OMAP_VRFB_LINE_LEN 2048
 -
 -struct vrfb {
 - u8 context;
 - void __iomem *vaddr[4];
 - unsigned long paddr[4];
 - u16 xres;
 - u16 yres;
 - u16 xoffset;
 - u16 yoffset;
 - u8 bytespp;
 - bool yuv_mode;
 -};
 -
 -#if defined(CONFIG_OMAP2_VRFB) || defined(CONFIG_OMAP2_VRFB_MODULE)
 -extern int omap_vrfb_request_ctx(struct vrfb *vrfb);
 -extern void omap_vrfb_release_ctx(struct vrfb *vrfb);
 -extern void omap_vrfb_adjust_size(u16 *width, u16 *height,
 - u8 bytespp);
 -extern u32 omap_vrfb_min_phys_size(u16 width, u16 height, u8 bytespp);
 -extern u16 omap_vrfb_max_height(u32 phys_size, u16 width, u8 bytespp);
 -extern void omap_vrfb_setup(struct vrfb *vrfb, unsigned long paddr,
 - u16 width, u16 height,
 - unsigned bytespp, bool yuv_mode);
 -extern int omap_vrfb_map_angle(struct vrfb *vrfb, u16 height, u8 rot);
 -extern void omap_vrfb_restore_context(void);
 -
 -#else
 -static inline int omap_vrfb_request_ctx(struct vrfb *vrfb) { return 0; }
 -static inline void omap_vrfb_release_ctx(struct vrfb *vrfb) {}
 -static inline void omap_vrfb_adjust_size(u16 *width, u16 *height,
 - u8 bytespp) {}
 -static inline u32 omap_vrfb_min_phys_size(u16 width, u16 height, u8 bytespp)
 - { return 0; }
 -static inline u16 omap_vrfb_max_height(u32 phys_size, u16 width, u8 bytespp)
 - { return 0; }
 -static inline void omap_vrfb_setup(struct vrfb *vrfb, unsigned long paddr,
 - u16 width, u16 height, unsigned bytespp, bool yuv_mode) {}
 -static inline int omap_vrfb_map_angle(struct vrfb *vrfb, u16 height, u8 rot)
 - { return 0; }
 -static inline void 

RE: [PATCHv2 2/3] OMAP: move arch/arm/plat-omap/include/plat/vrfb.h

2012-10-09 Thread Tomi Valkeinen
On Tue, 2012-10-09 at 12:54 +, Hiremath, Vaibhav wrote:
 On Tue, Oct 09, 2012 at 18:00:25, Valkeinen, Tomi wrote:
  Now that vrfb driver is not omap dependent anymore, we can move vrfb.h
  from arch/arm/plat-omap/include/plat to include/video/omapvrfb.h.
  
 
 Which baseline you are using? I tried it with linux-omap/master, patch[1/3] 
 is failing -

It's based on omapdss master, which is what I've sent in the pull
request for 3.7.

 patching file arch/arm/plat-omap/include/plat/vrfb.h
 patching file drivers/media/video/omap/omap_vout.c
 Hunk #1 FAILED at 45.
 1 out of 1 hunk FAILED -- saving rejects to file 
 drivers/media/video/omap/omap_vout.c.rej
 patching file drivers/media/video/omap/omap_vout_vrfb.c
 Hunk #1 FAILED at 17.
 1 out of 1 hunk FAILED -- saving rejects to file 
 drivers/media/video/omap/omap_vout_vrfb.c.rej
 patching file drivers/media/video/omap/omap_voutdef.h
 Hunk #1 FAILED at 12.
 1 out of 1 hunk FAILED -- saving rejects to file 
 drivers/media/video/omap/omap_voutdef.h.rej
 patching file drivers/video/omap2/omapfb/omapfb-ioctl.c
 patching file drivers/video/omap2/omapfb/omapfb-main.c
 Hunk #1 succeeded at 33 with fuzz 2 (offset 1 line).
 patching file drivers/video/omap2/omapfb/omapfb-sysfs.c
 patching file drivers/video/omap2/vrfb.c
 patching file include/video/omapvrfb.h
 
 
 
 Note that, the directory structure has been changed in the mainline,
 Now V4L2 OMAP Display driver is in drivers/media/platform/omap/
 
 You have to rebase the patches and resend it.

Yep, I'll rebase it on top of 3.7-rc1 when that's out, so that Tony can
pull that branch into his tree also. I guess the omap_vout changes
should apply easily, as it's just include filename changes.

 Tomi



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


Re: [PATCH 0/4] OMAP-GPMC generic timing migration

2012-10-09 Thread Afzal Mohammed

Hi Tony,

On Tuesday 09 October 2012 08:31 AM, Tony Lindgren wrote:

* Afzal Mohammedaf...@ti.com  [121005 09:02]:



Proposed generic routine has been tested on OneNAND (async) on
OMAP3EVM rev C (as mainline does not have the OneNAND support for this,
local patch were used to test). For other cases of custom timing
calculation (tusb6010, smc91x non-muxed, OneNAND sync), generic timing
calculation routine was verified by simulating on OMAP3EVM.

Have you tested to make sure this works if you change the
L3 frequency?


With changed L3 frequency it was not tested.

I do not have a single board that is supported in mainline that
calculates on the run gpmc timing from device timing. What has
been tested here is OneNAND working in asynchronous mode
on omap3evm, but it's support is not available in mainline, so
private patch had to be used to test it. All other peripherals
were tested by simulation, i.e. by comparing output from existing
custom timing routine  generic routine for particular frequencies.


That should probably be tested as a sanity check. Maybe you
can force the L3 for some test boots for this, I don't think
we scale it by default.


On omap3evm, don't know whether L3 frequency can be
changed  still have a working Kernel. I am not sure whether
it is worth attempting as OneNAND on omap3evm is not
supported in mainline.

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


Re: omap DSS cmdline resolution not working for HDMI?

2012-10-09 Thread Tomi Valkeinen
On Fri, 2012-10-05 at 09:43 -0700, Tony Lindgren wrote:

 Looks like somehow also output_size won't change when changing
 display output from DVI to HDMI.
 
 If I boot with DVI panel at 1600x1200, then try to switch to the
 HDMI monitor with the following script:
 
 #!/bin/sh
 
 export dvi=display0
 export hdmi=display1
 export overlay=overlay0
 
 echo 0  /sys/devices/platform/omapdss/$dvi/enabled
 echo 1  /sys/devices/platform/omapdss/$hdmi/enabled
 echo 85500,1366/70/213/143,768/3/24/3  
 /sys/devices/platform/omapdss/$hdmi/timings
 echo 0  /sys/devices/platform/omapdss/$overlay/enabled
 echo tv  /sys/devices/platform/omapdss/$overlay/manager
 #echo 1366,768  /sys/devices/platform/omapdss/$overlay/output_size
 echo 1  /sys/devices/platform/omapdss/$overlay/enabled
 cat /sys/devices/platform/omapdss/$hdmi/timings
 cat /sys/devices/platform/omapdss/$overlay/output_size
 
 I get the following which may provide more clues:
 
 [64370.820312] omapdss DISPC error: SYNC_LOST on channel tv, restarting the 
 output with video overlays dd
 [64370.831024] omapdss OVERLAY error: overlay 0 horizontally not inside the 
 display area (0 + 1600 = 13)
 [64370.840972] omapdss APPLY error: failed to enable manager 1: 
 check_settings failed
 [64370.849670] omapdss HDMI error: failed to power on device
 [64370.855407] omapdss error: failed to power on
 [64370.862487] omapdss OVERLAY error: overlay 0 horizontally not inside the 
 display area (0 + 1600 = 13)
 [64370.872436] omapdss APPLY error: failed to enable manager 1: 
 check_settings failed
 [64370.880798] omapdss HDMI error: failed to power on device
 [64370.886505] omapdss error: failed to power on
 85500,1366/70/213/143,768/3/24/3
 1600,1200

Well, it's not that simple =). There are three things to consider:

- Framebuffer in the sdram. It has xres and yres parameters.
- Overlay, and it's input size (from fb) and output sizes (must fit into
the display).
- Display, which has certain size depending on video mode.

Only VID overlays can have different input and output sizes, GFX overlay
does not support scaling.

In the script above you don't change the fb at all. You can do that with
when the overlay is disabled, for example:

fbset -xres 1366 -vxres 1366 -yres 768 -vyres 768

But that only works if there's enough memory allocated for the
framebuffer, but that is the case for you if the fb was bigger
initially. Otherwise you need to set the new size
with /sys/class/graphics/fb0/size before resizing the fb.

And, of course, the framebuffer cannot be in use at that time by, for
example, X.

Yes, it's complex! I hope omapdrm will make all things simple, and we
can forget omapfb. In hindsight, I should've designed omapfb to be much
simpler, and only use gfx overlay. Making it support all overlays is a
never ending source for problems and complexity.

 FYI, I'm also seeing the DVI monitor blank out on it's own for
 about a second or so on regular basis every 10 minutes or so.
 No idea what's causing that, maybe it's a reminder to take
 a short break :)

Well that's something different. I've recently done some testing with
using DSI PLL for generating pixel clock, and I've seen unstabilities
with that. But perhaps there's something else wrong also, even when
using the PRCM for pix clock as in your case.

Does your monitor ever report something like bad signal or such?

 Tomi



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


Re: [RFC 00/24] OMAP serial driver flow control fixes, and preparation for DMA engine conversion

2012-10-09 Thread Sourav

Hi,

On Saturday 06 October 2012 06:08 PM, Russell King - ARM Linux wrote:

Hi,

This series of patches fixes multiple flow control issues with the OMAP
serial driver, and prepares the driver for DMA engine conversion.  We
require hardware assisted flow control to work properly for DMA support
otherwise we have no way to properly pause the transmitter.

This is generated against v3.6, and has been developed mainly by testing
on the OMAP4430 SDP platform.

Flow control seems to be really broken in the OMAP serial driver as things
stand today.  It just about works with software flow control because the
generic serial core layer is inserting those characters, but only when the
legacy DMA support is not being used.  Otherwise, flow control is
completely non-functional.

Issues identified in the OMAP serial driver are:
- set_mctrl() can only assert modem control lines, once asserted it
   is not possible to deassert them.
- IXOFF controls sending of XON/XOFF characters, not the reception of
   these sequences.
- IXON controls the recognition of XON/XOFF characters, not the transmission
   of the same.
- Wrong bitmasks for hardware assisted software flow control.  Bit 2
   in EFR enables sending of XON2/XOFF2 which are never set.
- No point comparing received characters against XOFF2 ('special character
   detect') as XOFF2 is not set.
- Fix multiple places where bits 6 and 5 of MCR are attempted to be
   altered, but because EFR ECB is unset, these bits remain unaffected.
   This effectively prevents us accessing the right XON/XOFF/TCR/TLR
   registers.
- Remove unnecessary read-backs of EFR/MCR/LCR registers - these registers
   don't change beneath us, they are configuration registers which hold their
   values.  Not only does this simplify the code, but it makes it more
   readable, and more importantly ensures that we work from a consistent
   state where -efr never has ECB set, and -mcr never has the TCRTLR
   bit set.
- Fix disablement of hardware flow control and IXANY modes; once enabled
   these could never be disabled because nothing in the code ever clears
   these configuration bits.

Once that lot is fixed, these patches expand serial_core to permit hardware
assisted flow control by:
- adding throttle/unthrottle callbacks into low level serial drivers,
   which allow them to take whatever action is necessary with hardware
   assisted flow control to throttle the remote end.  In the case of
   OMAP serial, this means disabling the RX interrupts so that the FIFO
   fills to the watermark.

We then have a number of cleanups to the OMAP serial code to make the
set_termios() function clearer and less prone to the kinds of mistakes
identified above.  This results in a great simplification of the flow
control configuration code.

The OMAP serial driver hacks around with the transmit buffer allocation;
lets clean that up so that drivers can cleanly allocate their transmitter
buffer using coherent memory if that's what they desire.

Finally, the last few patches clean up the plat/omap-serial.h header file,
moving most of its contents into the OMAP serial driver itself.  Most of
this is private to the OMAP serial driver and should never have been
shared with anything else.

I have omitted to include the conversion of the transmit paths to DMA
engine.  Even with all the above fixed, it has issues when DMA transmit
is in progress, and a program issues a TCSETS call (as `less' does after
it has written its prompt.)  At the moment, this causes lots of junk to
be emitted from the serial port when issuing `dmesg | less' which sometimes
brings the port to a complete halt.

As the OMAP DMA hardware does not have a clean pause when performing a
MEM-DEV transfer (it discards its FIFO) I do not see a solution to this,
which probably means that we can _not_ ever support transmit DMA on OMAP
platforms.

This means the xmit buffer allocation patches are not that useful unless
a solution to that can be found.

Now, the remaining question is, how much of this patch set do we think
about merging, and when.  Given that flow control in this driver has been
broken for a very long time, and no one has apparantly noticed, I don't
think there's any urgency to this, so given its size, my preference would
be to queue it up for the next merge window.  The thing that would worry
me about applying some of the initial patches is that they may change
the behaviour today and make any problems here more visible.

___
linux-arm-kernel mailing list
linux-arm-ker...@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Boot Tested this patch series against v3.6 tag(applied cleanly) on panda 
board and

PM tested(hitting off in Idle and suspend) on omap3630 based beagle board.

Note, I also tested the patches against the current master but only 
after rebasing, since the current master includes serial patches from 
Felipe Balbi[1].

[1] https://lkml.org/lkml/2012/8/24/139

Re: [PATCH] ARM: OMAP4: hwmod data: Add McASP data port address space

2012-10-09 Thread Ricardo Neri

Hi Benoit,

Have you had a chance to look at this patch? Maybe you want me to submit 
it differently or to a different list?


Thanks!

Ricardo

On 09/27/2012 11:33 AM, Ricardo Neri wrote:

McASP has a configuration port and a data port. This patch adds the address
space entry for the data port as described in the OMAP4 TRM.

Also, add names to the address spaces.

Signed-off-by: Ricardo Neri ricardo.n...@ti.com
---
  arch/arm/mach-omap2/omap_hwmod_44xx_data.c |6 ++
  1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c 
b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
index f31f3bc..cb5b463 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -4951,10 +4951,16 @@ static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcasp 
= {

  static struct omap_hwmod_addr_space omap44xx_mcasp_dma_addrs[] = {
{
+   .name   = cfg,
.pa_start   = 0x49028000,
.pa_end = 0x490283ff,
.flags  = ADDR_TYPE_RT
},
+   {
+   .name   = dat,
+   .pa_start   = 0x4902A000,
+   .pa_end = 0x4902Afff,
+   },
{ }
  };



--
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] ARM: OMAP: warnings/hwmod/clock fixes for pre-3.7-rc1

2012-10-09 Thread Paul Walmsley
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

The following changes since commit 0e51793e162ca432fc5f04178cf82b80a92c2659:

  Merge branch 'for-linus' of git://git.linaro.org/people/rmk/linux-arm 
(2012-10-07 21:20:57 +0900)

are available in the git repository at:


  git://git.kernel.org/pub/scm/linux/kernel/git/pjw/omap-pending.git 
tags/omap-fixes-a-for-pre3.7

for you to fetch changes up to e9332b6eed82973a8f75f1f3d57babaa331d703c:

  ARM: OMAP4/AM335x: hwmod: fix disable_module regression in hardreset handling 
(2012-10-08 23:08:15 -0600)

- 
Some OMAP fixes for the 3.7 merge window, fixing mismerges, branch
integration issues, and bugs after the arm-soc merges.

Basic test logs are available here:

   http://www.pwsan.com/omap/testlogs/devel_late_fixes_3.7/20121009084003/

N800 isn't booting; this is a problem present in the base commit and
is due to serial driver breakage:

   http://www.spinics.net/lists/arm-kernel/msg196034.html

- 
Jon Hunter (2):
  ARM: OMAP2+: hwmod data: Fix PMU interrupt definitions
  ARM: OMAP3: fix workaround for EMU clockdomain

Paul Walmsley (2):
  ARM: OMAP: omap3evm: fix new sparse warning
  ARM: OMAP4/AM335x: hwmod: fix disable_module regression in hardreset 
handling

Vaibhav Hiremath (1):
  ARM: am33xx: clk: Update clkdev table to add mcasp alias

 arch/arm/mach-omap2/board-omap3evm.c   |3 +-
 arch/arm/mach-omap2/clock33xx_data.c   |2 +
 arch/arm/mach-omap2/clockdomain2xxx_3xxx.c |   44 ++--
 arch/arm/mach-omap2/omap_hwmod.c   |   31 --
 arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c |2 +-
 arch/arm/mach-omap2/omap_hwmod_3xxx_data.c |2 +-
 6 files changed, 54 insertions(+), 30 deletions(-)
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.12 (GNU/Linux)

iQIcBAEBAgAGBQJQdEqIAAoJEMePsQ0LvSpLjvYP/RlejvRetwDYUSpwjgre/xfz
BA+we3wgi/wgZ3xbdlcFKfdj2l+jzLxspr1pt6MSFzZqJJVKPj1xgHCPJZe4QFX3
waurd+p4OUcO7qKoLQo7up9nfzsI4vnxjyDXjEUCLjAaEq18qqMi4YQEdncotrZU
hOL8yFE9ol6Ds2dLtTulnxMfqbMILa5ek+NSVWizbQbVPh8opklRQwRSbYmAgCze
USY410kyP/WVXa1hern5UnyEo4nzVpXAFf4+3LVil05p/vWgB4i/JwUINAYNr1sr
L1ells+x0z9RKybTNsrDxTQmwY8Jr+TyZJ3uikccFTpqo+TfwcfZN++Qrx+/0Q5z
GCVB4dp2aH4QLas9yTFGp/3X2BiPx5AwKX9mqhnOR3peq1lBS1D9V+BTmKAHoY6n
w2XzAF3jpE2qNLnxIym46TJYRHGrc1o6U0U5dHxjQZVx796rgUHEIZEfVznWj6lS
GaU3b8YQKN3EPKbrdIQ2y5bVEf0SnLdiOjJo+tTVBGhQ7eiVMRN6btYt8Fod2Rlq
TXleGmDGKUKI43omeALn2fJWgNrm1GIPSPU1aa3TMZQN7qa/FHyAimcY5QOqU+HT
uCUmsSukw6oIfWvV8hyN/R7AovvqaKYpyPUvxOM09G/WnoRGahk3eFHpUcEGQGqD
6PQY5o1skH1C4B++o0EL
=Yvqo
-END PGP SIGNATURE-
--
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 1/5] omap fixes for v3.7-rc1

2012-10-09 Thread Tony Lindgren
The following changes since commit 5e090ed7af10729a396a25df43d69a236e789736:

  Merge tag 'soc-late' of 
git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc (2012-10-07 20:55:16 
+0900)

are available in the git repository at:


  git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap 
tags/omap-for-v3.7-rc1/fixes-signed

for you to fetch changes up to 224cd7115abb5b05a5d665551452c271449ce80b:

  arm/omap: Replace board_ref_clock with enum values (2012-10-08 18:09:30 -0700)


This branch contains one counter locking fix and an
alignment fix. Other fixes are warning fixes, fixes
for return value checks.

I've also included removal of some extra semicolons,
dropping of some duplicate includes, and an a change
for wl12xx enumeration that are not strictly fixes
but would be good to get out of the way for -rc1.


Afzal Mohammed (1):
  ARM: OMAP2+: gpmc: annotate exit sections properly

Axel Lin (1):
  ARM: OMAP: OMAP_DEBUG_LEDS needs to select LEDS_CLASS

Colin Cross (1):
  ARM: OMAP: counter: add locking to read_persistent_clock

Peter Senna Tschudin (3):
  arch/arm/mach-omap1/devices.c: Remove unecessary semicolon
  arch/arm/mach-omap2: Remove unecessary semicolon
  arch/arm/plat-omap/omap-pm-noop.c: Remove unecessary semicolon

R Sricharan (1):
  ARM: OMAP2+: Round of the carve out memory requested to section_size

Raphael Assenat (1):
  AM35xx: Add missing hwmod entry for the HDQ/1-Wire present in AM3505/3517 
CPUs.

Shubhrajyoti D (1):
  ARM: OMAP: rx51: Fix a section mismatch warn

Vaibhav Hiremath (1):
  ARM: OMAP2+: Add am335x evm and bone targets to common Makefile

Vikram Narayanan (1):
  arm/omap: Replace board_ref_clock with enum values

Wei Yongjun (4):
  OMAPDSS: fix return value check in create_dss_pdev()
  ARM: OMAP: hsmmc: fix return value check in omap_hsmmc_init_one()
  ARM: OMAP: fix return value check in realtime_counter_init()
  ARM: OMAP2+: remove duplicated include from board-omap3stalker.c

Yegor Yefremov (1):
  arm: increase FORCE_MAX_ZONEORDER for TI AM33XX

 arch/arm/Kconfig |1 +
 arch/arm/boot/dts/Makefile   |4 +++-
 arch/arm/mach-omap1/devices.c|2 +-
 arch/arm/mach-omap2/board-flash.c|2 +-
 arch/arm/mach-omap2/board-omap3stalker.c |5 -
 arch/arm/mach-omap2/board-omap4panda.c   |3 +--
 arch/arm/mach-omap2/board-rx51-peripherals.c |2 +-
 arch/arm/mach-omap2/board-zoom-peripherals.c |3 +--
 arch/arm/mach-omap2/clkt_clksel.c|2 +-
 arch/arm/mach-omap2/display.c|2 +-
 arch/arm/mach-omap2/gpmc.c   |4 ++--
 arch/arm/mach-omap2/hsmmc.c  |2 +-
 arch/arm/mach-omap2/mux.c|2 +-
 arch/arm/mach-omap2/omap-secure.c|4 ++--
 arch/arm/mach-omap2/omap_hwmod_3xxx_data.c   |7 ---
 arch/arm/mach-omap2/pm-debug.c   |2 +-
 arch/arm/mach-omap2/timer.c  |2 +-
 arch/arm/plat-omap/Kconfig   |1 +
 arch/arm/plat-omap/counter_32k.c |   21 ++---
 arch/arm/plat-omap/omap-pm-noop.c|8 
 20 files changed, 42 insertions(+), 37 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: [RFC PATCH 03/13] ARM: edma: add DT and runtime PM support for AM335x

2012-10-09 Thread Matt Porter
On Fri, Sep 21, 2012 at 08:53:06AM +, Hebbar, Gururaja wrote:
 On Thu, Sep 20, 2012 at 20:13:36, Porter, Matt wrote:
  Adds support for parsing the TI EDMA DT data into the required
  EDMA private API platform data.
  
  Calls runtime PM API only in the DT case in order to unidle the
  associated hwmods on AM335x.
  
  Signed-off-by: Matt Porter mpor...@ti.com
  ---
   arch/arm/common/edma.c   |  252 
  --
   arch/arm/include/asm/mach/edma.h |8 +-
   2 files changed, 244 insertions(+), 16 deletions(-)
 
 The binding documentation should be updated along with the driver
 change that does introduce the binding. You could just merged patch #4
 and #5.

Hi Gururaja,

Sorry I missed these comments for this long...

I've been asked by maintainers to keep the binding separate in other
drivers. It is documentation that is independent of the driver in
any case...I'll move the binding before this implementation though.

  diff --git a/arch/arm/common/edma.c b/arch/arm/common/edma.c
  index 001d268..f337f81 100644
  --- a/arch/arm/common/edma.c
  +++ b/arch/arm/common/edma.c
  @@ -24,6 +24,13 @@
   #include linux/platform_device.h
   #include linux/io.h
   #include linux/slab.h
  +#include linux/edma.h
  +#include linux/err.h
  +#include linux/of_address.h
  +#include linux/of_device.h
  +#include linux/of_dma.h
  +#include linux/of_irq.h
  +#include linux/pm_runtime.h
   
   #include asm/mach/edma.h
   
  @@ -1366,30 +1373,236 @@ void edma_clear_event(unsigned channel)
   EXPORT_SYMBOL(edma_clear_event);
   
   /*---*/
  +static int edma_of_read_u32_to_s8_array(const struct device_node *np,
  +const char *propname, s8 *out_values,
  +size_t sz)
  +{
  +   struct property *prop = of_find_property(np, propname, NULL);
  +   const __be32 *val;
  +
  +   if (!prop)
  +   return -EINVAL;
  +   if (!prop-value)
  +   return -ENODATA;
  +   if ((sz * sizeof(u32))  prop-length)
  +   return -EOVERFLOW;
  +
  +   val = prop-value;
  +
  +   while (sz--)
  +   *out_values++ = (s8)(be32_to_cpup(val++)  0xff);
  +
  +   /* Terminate it */
  +   *out_values++ = -1;
  +   *out_values++ = -1;
  +
  +   return 0;
  +}
  +
  +static int edma_of_read_u32_to_s16_array(const struct device_node *np,
  +const char *propname, s16 *out_values,
  +size_t sz)
  +{
  +   struct property *prop = of_find_property(np, propname, NULL);
  +   const __be32 *val;
  +
  +   if (!prop)
  +   return -EINVAL;
  +   if (!prop-value)
  +   return -ENODATA;
  +   if ((sz * sizeof(u32))  prop-length)
  +   return -EOVERFLOW;
  +
  +   val = prop-value;
  +
  +   while (sz--)
  +   *out_values++ = (s16)(be32_to_cpup(val++)  0x);
  +
  +   /* Terminate it */
  +   *out_values++ = -1;
  +   *out_values++ = -1;
  +
  +   return 0;
  +}
  +
  +static int edma_of_parse_dt(struct device *dev,
  +   struct device_node *node,
  +   struct edma_soc_info *pdata)
  +{
  +   int ret = 0;
  +   u32 value;
  +   struct property *prop;
  +   size_t sz;
  +   struct edma_rsv_info *rsv_info;
  +   s16 (*rsv_chans)[2], (*rsv_slots)[2];
  +   s8 (*queue_tc_map)[2], (*queue_priority_map)[2];
  +
  +   ret = of_property_read_u32(node, dma-channels, value);
  +   if (ret  0)
  +   return ret;
  +   pdata-n_channel = value;
  +
  +   ret = of_property_read_u32(node, ti,edma-regions, value);
  +   if (ret  0)
  +   return ret;
  +   pdata-n_region = value;
  +
  +   ret = of_property_read_u32(node, ti,edma-slots, value);
  +   if (ret  0)
  +   return ret;
  +   pdata-n_slot = value;
  +
  +   pdata-n_cc = 1;
  +   /* This is unused */
  +   pdata-n_tc = 3;
  +
  +   rsv_info =
  +   devm_kzalloc(dev, sizeof(struct edma_rsv_info), GFP_KERNEL);
  +   if (!rsv_info)
  +   return -ENOMEM;
  +   pdata-rsv = rsv_info;
  +
  +   /* Build the reserved channel/slots arrays */
  +   prop = of_find_property(node, ti,edma-reserved-channels, sz);
  +   if (!prop)
  +   return -EINVAL;
  +
  +   rsv_chans =
  +   devm_kzalloc(dev, sz/sizeof(s16) + 2*sizeof(s16), GFP_KERNEL);
  +   if (!rsv_chans)
  +   return -ENOMEM;
  +   pdata-rsv-rsv_chans = rsv_chans;
  +
  +   ret = edma_of_read_u32_to_s16_array(node, ti,edma-reserved-channels,
  +   (s16 *)rsv_chans, sz/sizeof(u32));
  +   if (ret  0)
  +   return ret;
  +
  +   prop = of_find_property(node, ti,edma-reserved-slots, sz);
  +   if (!prop)
  +   return -EINVAL;
  +
 
 Binding Documentation mentions edma-reserved-[channels/slots] as optional. 
 But here the code returns as error if they are not found. Kindly reconfirm
 
 From patch-set 5/13
 
 +Optional 

Re: [GIT PULL] ARM: OMAP: warnings/hwmod/clock fixes for pre-3.7-rc1

2012-10-09 Thread Tony Lindgren
* Paul Walmsley p...@pwsan.com [121009 09:05]:
 
 N800 isn't booting; this is a problem present in the base commit and
 is due to serial driver breakage:
 
http://www.spinics.net/lists/arm-kernel/msg196034.html

This might be related also to the n800 booting in sys mode
that causes issues with the recent hyp patches. A fix for
that has been queued, for more info see the thread
v2 2/7] ARM: virt: allow the kernel to be entered in HYP mode.

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: [GIT PULL] ARM: OMAP: warnings/hwmod/clock fixes for pre-3.7-rc1

2012-10-09 Thread Paul Walmsley
On Tue, 9 Oct 2012, Tony Lindgren wrote:

 * Paul Walmsley p...@pwsan.com [121009 09:05]:
  
  N800 isn't booting; this is a problem present in the base commit and
  is due to serial driver breakage:
  
 http://www.spinics.net/lists/arm-kernel/msg196034.html
 
 This might be related also to the n800 booting in sys mode
 that causes issues with the recent hyp patches. A fix for
 that has been queued, for more info see the thread
 v2 2/7] ARM: virt: allow the kernel to be entered in HYP mode.

Thanks for the pointer.  That one would break the boot quite early, right? 
This one has the same symptoms as the serial issue, where it bombs out 
after:

[0.948394] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[0.974273] omap_uart.0: ttyO0 at MMIO 0x4806a000 (irq = 88) is a OMAP UART0
[0.986968] omap_uart.1: ttyO1 at MMIO 0x4806c000 (irq = 89) is a OMAP UART1

(hang)

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


Re: [PATCH] ARM: OMAP: move old debug-devices.c and debug-leds.c to be OMAP2+ only for now

2012-10-09 Thread Paul Walmsley
On Mon, 8 Oct 2012, Tony Lindgren wrote:

 Hmm are you sure that omap1 is not using debug-leds.c?
 At least the initcall seems like it should run on omap1
 if enabled.

You're right, it's probably able to run on OMAP1.  Looks like I got 
confused by the bogus Kconfig dependency from OMAP_DEBUG_LEDS - 
OMAP_DEBUG_DEVICES, since debug_card_init() is only called from the H4 
board init.

 The sideways include here is OK, it does not get exposed to
 the drivers, it seems that plat-omap is still the right location
 for at least debug-leds.c code.

OK if you want to leave it there, it's fine with me.  Looks like it 
should go into drivers/ at some point though?

Will send a patch to do the sideways include to fix the sparse warning.


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


[PATCH] ARM: OMAP: resolve sparse warning concerning debug_card_init()

2012-10-09 Thread Paul Walmsley

Commit 801475ccb2b2c1928b22aec4b9e5285d9e347602 (ARM: OMAP: move
debug_card_init() function) results in the following new sparse
warning:

arch/arm/plat-omap/debug-devices.c:71:12: warning: symbol 'debug_card_init' was 
not declared. Should it be static?

Fix by implementing Tony's suggestion to add a sideways include to the
new location of the debug-devices.h file in arch/arm/mach-omap2/.

Signed-off-by: Paul Walmsley p...@pwsan.com
Cc: Igor Grinberg grinb...@compulab.co.il
Cc: Tony Lindgren t...@atomide.com
---
 arch/arm/plat-omap/debug-devices.c |1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/plat-omap/debug-devices.c 
b/arch/arm/plat-omap/debug-devices.c
index c7a4c09..5a4678e 100644
--- a/arch/arm/plat-omap/debug-devices.c
+++ b/arch/arm/plat-omap/debug-devices.c
@@ -16,6 +16,7 @@
 #include linux/smc91x.h
 
 #include mach/hardware.h
+#include ../mach-omap2/debug-devices.h
 
 /* Many OMAP development platforms reuse the same debug board; these
  * platforms include H2, H3, H4, and Perseus2.
-- 
1.7.10.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: [PATCHv2 1/3] OMAP: VRFB: convert vrfb to platform device

2012-10-09 Thread Kevin Hilman
Hi Tomi,

Tomi Valkeinen tomi.valkei...@ti.com writes:

 This patch converts vrfb library into a platform device, in an effort to
 remove omap dependencies.

 The platform device is registered in arch/arm/plat-omap/fb.c and
 assigned resources depending on whether running on omap2 or omap3.

 The vrfb driver will parse those resources and use them to access vrfb
 configuration registers and the vrfb virtual rotation areas.

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

[...]

I was having a quick look at this for the context save/restore piece in
order to understand how this driver's context is being saved/restored.

Looking at mainline, I don't see where omap_vrfb_restore_context() is
being called currently.  Am I missing something?

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 v2 1/2] omap3: Provide means for changing CSI2 PHY configuration

2012-10-09 Thread Kevin Hilman
Hi Sakari,

Sakari Ailus sakari.ai...@iki.fi writes:

 The OMAP 3630 has configuration how the ISP CSI-2 PHY pins are connected to
 the actual CSI-2 receivers outside the ISP itself. Allow changing this
 configuration from the ISP driver.

 Signed-off-by: Sakari Ailus sakari.ai...@iki.fi

These control module registers (CSIRXFE, CAMERA_PHY_CTRL) are in the
CORE powerdomain, so they will be lost during off-mode transitions.  So,
I suspect you'll also want to add them to the save/restore functions in
control.c in order for this to work across off-mode transitions.

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: [GIT PULL] ARM: OMAP: warnings/hwmod/clock fixes for pre-3.7-rc1

2012-10-09 Thread Tony Lindgren
* Paul Walmsley p...@pwsan.com [121009 12:31]:
 On Tue, 9 Oct 2012, Tony Lindgren wrote:
 
  * Paul Walmsley p...@pwsan.com [121009 09:05]:
   
   N800 isn't booting; this is a problem present in the base commit and
   is due to serial driver breakage:
   
  http://www.spinics.net/lists/arm-kernel/msg196034.html
  
  This might be related also to the n800 booting in sys mode
  that causes issues with the recent hyp patches. A fix for
  that has been queued, for more info see the thread
  v2 2/7] ARM: virt: allow the kernel to be entered in HYP mode.
 
 Thanks for the pointer.  That one would break the boot quite early, right? 
 This one has the same symptoms as the serial issue, where it bombs out 
 after:
 
 [0.948394] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
 [0.974273] omap_uart.0: ttyO0 at MMIO 0x4806a000 (irq = 88) is a OMAP 
 UART0
 [0.986968] omap_uart.1: ttyO1 at MMIO 0x4806c000 (irq = 89) is a OMAP 
 UART1
 
 (hang)

Yes the sys mode hangs right away and only prints a few lines
with earlyprintk.

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] ARM: OMAP: move old debug-devices.c and debug-leds.c to be OMAP2+ only for now

2012-10-09 Thread Tony Lindgren
* Paul Walmsley p...@pwsan.com [121009 13:12]:
 
 OK if you want to leave it there, it's fine with me.  Looks like it 
 should go into drivers/ at some point though?

Yes it should be just a regular device driver
eventually at some point. But no rush, let's first
get the dependencies between device drivers and core
omap code removed by removing the remaining mach and
plat includes.

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: omap DSS cmdline resolution not working for HDMI?

2012-10-09 Thread Tony Lindgren
* Tomi Valkeinen tomi.valkei...@ti.com [121009 06:08]:
 On Fri, 2012-10-05 at 09:43 -0700, Tony Lindgren wrote:
 
  Looks like somehow also output_size won't change when changing
  display output from DVI to HDMI.
  
  If I boot with DVI panel at 1600x1200, then try to switch to the
  HDMI monitor with the following script:
  
  #!/bin/sh
  
  export dvi=display0
  export hdmi=display1
  export overlay=overlay0
  
  echo 0  /sys/devices/platform/omapdss/$dvi/enabled
  echo 1  /sys/devices/platform/omapdss/$hdmi/enabled
  echo 85500,1366/70/213/143,768/3/24/3  
  /sys/devices/platform/omapdss/$hdmi/timings
  echo 0  /sys/devices/platform/omapdss/$overlay/enabled
  echo tv  /sys/devices/platform/omapdss/$overlay/manager
  #echo 1366,768  /sys/devices/platform/omapdss/$overlay/output_size
  echo 1  /sys/devices/platform/omapdss/$overlay/enabled
  cat /sys/devices/platform/omapdss/$hdmi/timings
  cat /sys/devices/platform/omapdss/$overlay/output_size
  
  I get the following which may provide more clues:
  
  [64370.820312] omapdss DISPC error: SYNC_LOST on channel tv, restarting the 
  output with video overlays dd
  [64370.831024] omapdss OVERLAY error: overlay 0 horizontally not inside the 
  display area (0 + 1600 = 13)
  [64370.840972] omapdss APPLY error: failed to enable manager 1: 
  check_settings failed
  [64370.849670] omapdss HDMI error: failed to power on device
  [64370.855407] omapdss error: failed to power on
  [64370.862487] omapdss OVERLAY error: overlay 0 horizontally not inside the 
  display area (0 + 1600 = 13)
  [64370.872436] omapdss APPLY error: failed to enable manager 1: 
  check_settings failed
  [64370.880798] omapdss HDMI error: failed to power on device
  [64370.886505] omapdss error: failed to power on
  85500,1366/70/213/143,768/3/24/3
  1600,1200
 
 Well, it's not that simple =). There are three things to consider:
 
 - Framebuffer in the sdram. It has xres and yres parameters.
 - Overlay, and it's input size (from fb) and output sizes (must fit into
 the display).
 - Display, which has certain size depending on video mode.
 
 Only VID overlays can have different input and output sizes, GFX overlay
 does not support scaling.
 
 In the script above you don't change the fb at all. You can do that with
 when the overlay is disabled, for example:
 
 fbset -xres 1366 -vxres 1366 -yres 768 -vyres 768
 
 But that only works if there's enough memory allocated for the
 framebuffer, but that is the case for you if the fb was bigger
 initially. Otherwise you need to set the new size
 with /sys/class/graphics/fb0/size before resizing the fb.
 
 And, of course, the framebuffer cannot be in use at that time by, for
 example, X.

Thanks for the explanation, I'll give that a try at some point.
 
 Yes, it's complex! I hope omapdrm will make all things simple, and we
 can forget omapfb. In hindsight, I should've designed omapfb to be much
 simpler, and only use gfx overlay. Making it support all overlays is a
 never ending source for problems and complexity.

Heh oh well it works reasonably for most cases I guess.
 
  FYI, I'm also seeing the DVI monitor blank out on it's own for
  about a second or so on regular basis every 10 minutes or so.
  No idea what's causing that, maybe it's a reminder to take
  a short break :)
 
 Well that's something different. I've recently done some testing with
 using DSI PLL for generating pixel clock, and I've seen unstabilities
 with that. But perhaps there's something else wrong also, even when
 using the PRCM for pix clock as in your case.
 
 Does your monitor ever report something like bad signal or such?

Yes I've seen that too, but that seems to be different issue and
I may have passed wrong timings in that case.

I guess the random blanking for a second or so could also be
an occastional bad timing. No warnings in that case on the monitor
though.

Regards,

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


Re: [PATCH v2 1/2] omap3: Provide means for changing CSI2 PHY configuration

2012-10-09 Thread Sakari Ailus
Hi Kevin,

Thanks for the comments!

On Tue, Oct 09, 2012 at 01:50:04PM -0700, Kevin Hilman wrote:
 Hi Sakari,
 
 Sakari Ailus sakari.ai...@iki.fi writes:
 
  The OMAP 3630 has configuration how the ISP CSI-2 PHY pins are connected to
  the actual CSI-2 receivers outside the ISP itself. Allow changing this
  configuration from the ISP driver.
 
  Signed-off-by: Sakari Ailus sakari.ai...@iki.fi
 
 These control module registers (CSIRXFE, CAMERA_PHY_CTRL) are in the
 CORE powerdomain, so they will be lost during off-mode transitions.  So,
 I suspect you'll also want to add them to the save/restore functions in
 control.c in order for this to work across off-mode transitions.

I've got another patch that implements this in the ISP driver instead.

URL:http://www.spinics.net/lists/linux-media/msg54781.html

The ISP also can't wake up the MPU from the off mode, so I don't think
losing the register contents is necessarily an issue. The registers will be
written to a new value whenever streaming is started. Perhaps adding a note
about that would be worthwhile.

Regards,

-- 
Sakari Ailus
e-mail: sakari.ai...@iki.fi XMPP: sai...@retiisi.org.uk
--
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 1/5] omap fixes for v3.7-rc1

2012-10-09 Thread Olof Johansson
Hi,


On Tue, Oct 9, 2012 at 11:46 AM, Tony Lindgren t...@atomide.com wrote:
 The following changes since commit 5e090ed7af10729a396a25df43d69a236e789736:

   Merge tag 'soc-late' of 
 git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc (2012-10-07 
 20:55:16 +0900)

 are available in the git repository at:


   git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap 
 tags/omap-for-v3.7-rc1/fixes-signed


Applied 1-5. Thanks!


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


[PATCH] rtc: kconfig: fix RTC_INTF defaults connected to RTC_CLASS

2012-10-09 Thread Kevin Hilman
From: Kevin Hilman khil...@ti.com

commit 6b8029fab64164b5895d58d23229b75c82e3a6fc (rtc: kconfig: remove
unnecessary dependencies) removed various 'depends on RTC_CLASS'
dependencies but also removed a few 'default RTC_CLASS' statements,
which actually changed default behavior.

This resulted in the various RTC interfaces (sysfs, proc, dev) all
being disabled by default, even when RTC_CLASS is enabled:

   # CONFIG_RTC_INTF_SYSFS is not set
   # CONFIG_RTC_INTF_PROC is not set
   # CONFIG_RTC_INTF_DEV is not set

which is different from previous behavior (all of these where enabled.)

To fix, add back the 'default RTC_CLASS' statments to each of the
RTC_INTF_* options.

I noticed this because some RTC tests started failing on my TI OMAP
platforms because /dev/rtc0 was not present anymore, even though the
driver was present and RTC_CLASS was enabled.

Cc: Venu Byravarasu vbyravar...@nvidia.com
Cc: Andrew Morton a...@linux-foundation.org
Signed-off-by: Kevin Hilman khil...@ti.com
---
Targeted as a fix for v3.7-rc.
Applies on Linus' master, just after merging Andrew's patch bomb
commit 11126c611e10abb18b6f1ed0300c0548c3906b54

 drivers/rtc/Kconfig |3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
index e069f17..19c03ab 100644
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -59,6 +59,7 @@ comment RTC interfaces
 config RTC_INTF_SYSFS
boolean /sys/class/rtc/rtcN (sysfs)
depends on SYSFS
+   default RTC_CLASS
help
  Say yes here if you want to use your RTCs using sysfs interfaces,
  /sys/class/rtc/rtc0 through /sys/.../rtcN.
@@ -68,6 +69,7 @@ config RTC_INTF_SYSFS
 config RTC_INTF_PROC
boolean /proc/driver/rtc (procfs for rtcN)
depends on PROC_FS
+   default RTC_CLASS
help
  Say yes here if you want to use your system clock RTC through
  the proc interface, /proc/driver/rtc.
@@ -79,6 +81,7 @@ config RTC_INTF_PROC
 
 config RTC_INTF_DEV
boolean /dev/rtcN (character devices)
+   default RTC_CLASS
help
  Say yes here if you want to use your RTCs using the /dev
  interfaces, which udev sets up as /dev/rtc0 through
-- 
1.7.9.2

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


Re: [PATCH 1/2] ARM: OMAP: Trivial driver changes to remove include plat/cpu.h

2012-10-09 Thread Tony Lindgren
* Péter Ujfalusi peter.ujfal...@ti.com [121009 02:03]:
 On 10/08/2012 07:35 PM, Tony Lindgren wrote:
 
  - omap-dma.c and omap-pcm.c can test the arch locally as
omap1 and omap2 cannot be compiled together because of
conflicting compiler flags
 
   sound/soc/omap/omap-pcm.c |9 +++--
 
 Tony: is this going to be included in 3.7?

Hmm I guess we could try to get this out of the way
to cut down the dependencies. Let's if maintainers
of the other affected drivers this is OK for the
-rc series.

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: Issue with _are_all_hardreset_lines_asserted()

2012-10-09 Thread Omar Ramirez Luna
Hi,

On 9 October 2012 00:38, Paul Walmsley p...@pwsan.com wrote:
 cc Vaibhav due to the AM33xx change

 Hi

 On Thu, 4 Oct 2012, Archit Taneja wrote:

 I was trying out the linux-next kernel, and I noticed that DSS MODULEMODE 
 bits
 are never cleared.

 In _omap4_disable_module(), there is a check:

   ...

   if (!_are_all_hardreset_lines_asserted(oh))
   return 0;

   /* MODULEMODE bits cleared here */
   ...
   ...
   ...

 The function _are_all_hardreset_lines_asserted() returns false if
 'oh-rst_lines_cnt == 0', so we bail out from _omap4_disable_module() before
 clearing the MODULEMODE bits.

 Is this correct behavior? This would prevent all hwmods who have 
 rst_lines_cnt
 as 0 to not get their MODULEMODE bits cleared.

 You're right, that looks bogus.  What do you think about the following
 patch?

I was a little busy creating the patch but seems like Paul beat me to
it, yes it was a wrong case on disable_module.

 From: Paul Walmsley p...@pwsan.com
 Date: Mon, 8 Oct 2012 23:08:15 -0600
 Subject: [PATCH] ARM: OMAP4/AM335x: hwmod: fix disable_module regression in
  hardreset handling

 Commit eb05f691290e99ee0bd1672317d6add789523c1e (ARM: OMAP: hwmod:
 partially un-reset hwmods might not be properly enabled) added code
 to skip the IP block disable sequence if any hardreset lines were left
 unasserted.  But this did not handle the case when no hardreset lines
 were associated with a module, which is the general case.  In that
 situation, the IP block would be skipped, which is likely to cause PM
 regressions.

 So, modify _omap4_disable_module() and _am33xx_disable_module() to
 only bail out early if there are any hardreset lines asserted.  And
 move the AM33xx test above the actual module disable code to ensure
 that the behavior is consistent.

I think that on _omap4_disable_module() we want to check if the module
is deasserted rather than if it is asserted.

E.g.: If you have 2 hwmods for the same module (ipu with reset cpu0
and mmu_ipu with reset mmu) controlled by different drivers,
depending on which one is idled first, the other one will cause L3
aborts given that the module is already disabled. So, if ipu is idled
and disabled first, then all tear down operations on iommu will cause
L3 aborts.

I created the following:

From: Omar Ramirez Luna omar.l...@linaro.org
Subject: [PATCH] ARM: OMAP: hwmod: allow hwmods without reset lines to be
 disabled

_are_all_hardreset_lines_asserted treats hwmods without reset lines
as always deasserted, this is correct for: _enable, _idle and
_shutdown paths, however for _omap4_disable_module it might not
result in the correct behavior, given that:

  - hwmod without reset line can be safely disabled.
  - hwmod with 1 or more reset lines, must be completely asserted
before disabled or be left to integration code to handle it.

Create a function to check for any hwmod to be partially out of
hardreset and bail of _omap4_disable_module if this is the case.
Hwmods without reset lines can skip these check and continue.

Reported-by: Archit Taneja a0393...@ti.com
Signed-off-by: Omar Ramirez Luna omar.l...@linaro.org
---
 arch/arm/mach-omap2/omap_hwmod.c |   30 --
 1 file changed, 28 insertions(+), 2 deletions(-)

diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index 299ca28..f9d9bfb 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -1698,6 +1698,29 @@ static bool
_are_all_hardreset_lines_asserted(struct omap_hwmod *oh)
 }

 /**
+ * _are_any_hardreset_lines_deasserted - true if part of @oh isn't hard-reset
+ * @oh: struct omap_hwmod *
+ *
+ * If any hardreset line associated with @oh is deasserted, then return true.
+ * Otherwise, if no hardreset lines associated with @oh are deasserted,
+ * then return false. This function is used to avoid SOC's disable_module to
+ * be called while the @oh is still deasserted.
+ *
+ * Check for oh-rst_lines_cnt is left to the caller, since a return value
+ * could mean that a hwmod with no reset lines is deasserted.
+ */
+static bool _are_any_hardreset_lines_deasserted(struct omap_hwmod *oh)
+{
+   int i;
+
+   for (i = 0; i  oh-rst_lines_cnt; i++)
+   if (_read_hardreset(oh, oh-rst_lines[i].name) == 0)
+   return true;
+
+   return false;
+}
+
+/**
  * _omap4_disable_module - enable CLKCTRL modulemode on OMAP4
  * @oh: struct omap_hwmod *
  *
@@ -1713,9 +1736,12 @@ static int _omap4_disable_module(struct omap_hwmod *oh)

/*
 * Since integration code might still be doing something, only
-* disable if all lines are under hardreset.
+* disable if all lines are under hardreset. Explicitly check for
+* reset lines before the call, otherwise the abscence of a reset
+* line is assumed as a deasserted hwmod and won't execute the
+* disable sequence.
 */
-   if 

Re: [PATCHv2 1/3] OMAP: VRFB: convert vrfb to platform device

2012-10-09 Thread Tomi Valkeinen
On Tue, 2012-10-09 at 13:37 -0700, Kevin Hilman wrote:
 Hi Tomi,
 
 Tomi Valkeinen tomi.valkei...@ti.com writes:
 
  This patch converts vrfb library into a platform device, in an effort to
  remove omap dependencies.
 
  The platform device is registered in arch/arm/plat-omap/fb.c and
  assigned resources depending on whether running on omap2 or omap3.
 
  The vrfb driver will parse those resources and use them to access vrfb
  configuration registers and the vrfb virtual rotation areas.
 
  Signed-off-by: Tomi Valkeinen tomi.valkei...@ti.com
  Cc: Tony Lindgren t...@atomide.com
 
 [...]
 
 I was having a quick look at this for the context save/restore piece in
 order to understand how this driver's context is being saved/restored.
 
 Looking at mainline, I don't see where omap_vrfb_restore_context() is
 being called currently.  Am I missing something?

No, the driver is missing something. I noticed the same thing. It seems
ctx restore for vrfb has never been functional in mainline. I don't
really have any recollection if this was left out intentionally from
mainline (possibly because we didn't have a good way to handle it at
that point), or was it just a mistake.

Nobody has complained about it, though, so it can't be a major problem
=).

Vrfb is a platform device/driver after this patch. Do you see any
problem with handling the context restore in runtime PM's runtime_resume
callback? Hmm, I guess then we could have a problem if omapdss and
omapfb are resumed before vrfb.

Any way to manage the suspend/resume ordering of unrelated (i.e. no
parent/child relation) devices?

 Tomi



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


Re: [PATCH] rtc: kconfig: fix RTC_INTF defaults connected to RTC_CLASS

2012-10-09 Thread Venu Byravarasu

On Wednesday 10 October 2012 05:39 AM, Kevin Hilman wrote:

From: Kevin Hilman khil...@ti.com

commit 6b8029fab64164b5895d58d23229b75c82e3a6fc (rtc: kconfig: remove
unnecessary dependencies) removed various 'depends on RTC_CLASS'
dependencies but also removed a few 'default RTC_CLASS' statements,
which actually changed default behavior.

This resulted in the various RTC interfaces (sysfs, proc, dev) all
being disabled by default, even when RTC_CLASS is enabled:

# CONFIG_RTC_INTF_SYSFS is not set
# CONFIG_RTC_INTF_PROC is not set
# CONFIG_RTC_INTF_DEV is not set

which is different from previous behavior (all of these where enabled.)

To fix, add back the 'default RTC_CLASS' statments to each of the
RTC_INTF_* options.

Thanks for fixing this.

  config RTC_INTF_DEV
boolean /dev/rtcN (character devices)
+   default RTC_CLASS
help
  Say yes here if you want to use your RTCs using the /dev
  interfaces, which udev sets up as /dev/rtc0 through

Acked-by: Venu Byravarasu vbyravar...@nvidia.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