Compile err when enable CONFIG_SND_OMAP_SOC_OMAP_HDMI

2012-05-30 Thread Xiao Jiang

Hello,

After enable SND_OMAP_SOC_OMAP_HDMI with omap2plus_defconfig, I got some 
err infos with latest

Linus's tree, does somebody also has the same issue?

sound/soc/omap/omap-hdmi.c:45:24: error: field 'dss_audio' has 
incomplete type

sound/soc/omap/omap-hdmi.c: In function 'omap_hdmi_dai_startup':
sound/soc/omap/omap-hdmi.c:67:27: error: 'struct omap_dss_driver' has no 
member named 'audio_supported'

sound/soc/omap/omap-hdmi.c: In function 'omap_hdmi_dai_prepare':
sound/soc/omap/omap-hdmi.c:79:29: error: 'struct omap_dss_driver' has no 
member named 'audio_enable'

sound/soc/omap/omap-hdmi.c: In function 'omap_hdmi_dai_hw_params':
sound/soc/omap/omap-hdmi.c:208:28: error: 'struct omap_dss_driver' has 
no member named 'audio_config'

sound/soc/omap/omap-hdmi.c: In function 'omap_hdmi_dai_trigger':
sound/soc/omap/omap-hdmi.c:224:29: error: 'struct omap_dss_driver' has 
no member named 'audio_start'
sound/soc/omap/omap-hdmi.c:229:23: error: 'struct omap_dss_driver' has 
no member named 'audio_stop'

sound/soc/omap/omap-hdmi.c: In function 'omap_hdmi_dai_shutdown':
sound/soc/omap/omap-hdmi.c:242:22: error: 'struct omap_dss_driver' has 
no member named 'audio_disable'

sound/soc/omap/omap-hdmi.c: In function 'omap_hdmi_dai_prepare':
sound/soc/omap/omap-hdmi.c:80:1: warning: control reaches end of 
non-void function


Regards,
Xiao

--
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] mmc: omap: Fix broken reg_shift initialization

2012-05-30 Thread Tony Lindgren
Commit fa550189 (mmc: core: Prevent eMMC VCC supply to be cut from late init)
slightly affected timings for how things are done for the omap MMC driver
causing the MMC cards not getting detected any longer.

Turns out this was caused by buggy reg_shift initialization in the omap
MMC driver that was happening after mmc_add_host() was being called.

Fix this by initializing reg_shift before mmc_add_host() is called.

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

---

Heh found it! Chris, maybe Cc stable on this one?

--- a/drivers/mmc/host/omap.c
+++ b/drivers/mmc/host/omap.c
@@ -1485,6 +1485,7 @@ static int __devinit mmc_omap_probe(struct 
platform_device *pdev)
}
 
host-nr_slots = pdata-nr_slots;
+   host-reg_shift = (cpu_is_omap7xx() ? 1 : 2);
 
host-mmc_omap_wq = alloc_workqueue(mmc_omap, 0, 0);
if (!host-mmc_omap_wq)
@@ -1500,8 +1501,6 @@ static int __devinit mmc_omap_probe(struct 
platform_device *pdev)
}
}
 
-   host-reg_shift = (cpu_is_omap7xx() ? 1 : 2);
-
return 0;
 
 err_destroy_wq:
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/3] watchdog: omap_wdt: add device tree support

2012-05-30 Thread Cousson, Benoit

On 5/30/2012 5:18 AM, Xiao Jiang wrote:

Jon Hunter wrote:

On 05/25/2012 05:42 AM, jgq...@gmail.com wrote:

From: Xiao Jiang jgq...@gmail.com

Add device table for omap_wdt to support dt.

Signed-off-by: Xiao Jiang jgq...@gmail.com
---
drivers/watchdog/omap_wdt.c | 8 
1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/drivers/watchdog/omap_wdt.c b/drivers/watchdog/omap_wdt.c
index 8285d65..d98c615 100644
--- a/drivers/watchdog/omap_wdt.c
+++ b/drivers/watchdog/omap_wdt.c
@@ -430,6 +430,13 @@ static int omap_wdt_resume(struct
platform_device *pdev)
#define omap_wdt_resume NULL
#endif

+static const struct of_device_id omap_wdt_of_match[] = {
+ { .compatible = ti,omap3-wdt, },
+ { .compatible = ti,omap4-wdt, },


If there is no difference between the OMAP3 and the OMAP4 WDT IP, just 
add one entry ti,omap3-wdt. And then in the OMAP4 DTS you will just 
put : compatible = ti,omap3-wdt; or compatible =  ti,omap4-wdt, 
ti,omap3-wdt;
I'm still a little bit confused about the real need for the 
ti,omap4-wdt: entry, but it seems to be the way to do it in PPC.



+ {},
+};
+MODULE_DEVICE_TABLE(of, omap_wdt_of_match);
+
static struct platform_driver omap_wdt_driver = {
.probe = omap_wdt_probe,
.remove = __devexit_p(omap_wdt_remove),
@@ -439,6 +446,7 @@ static struct platform_driver omap_wdt_driver = {
.driver = {
.owner = THIS_MODULE,
.name = omap_wdt,
+ .of_match_table = omap_wdt_of_match,
},
};



I think we need to add some code to the probe function that calls
of_match_device() and ensures we find a match. For example ...

if (of_have_populated_dt())
if (!of_match_device(omap_wdt_of_match, pdev-dev))
return -EINVAL;


Will add it in v2, thanks for suggestion.


No, in fact this is not needed. We need that mainly when several 
instances can match the same driver and thus we select the proper one 
using the of_match_device. Otherwise, just check is the device_node is 
there.


In that case, the driver does not even care about any DT node so there 
is no need to add extra code for that. Keep it simple.


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


Re: [PATCHv5 5/8] ARM: OMAP: hwmod: Add support for per hwmod/module context lost count

2012-05-30 Thread Tero Kristo
On Tue, 2012-05-29 at 14:32 -0500, Menon, Nishanth wrote:
 On Mon, May 14, 2012 at 5:03 AM, Tero Kristo t-kri...@ti.com wrote:
 [...]
  +/**
   * _enable - enable an omap_hwmod
   * @oh: struct omap_hwmod *
   *
  @@ -1599,6 +1629,8 @@ static int _enable(struct omap_hwmod *oh)
 _enable_clocks(oh);
 _enable_module(oh);
 
  +   _omap4_update_context_lost(oh);
  +
 r = _wait_target_ready(oh);
 if (!r) {
 /*
 
 Dumb q: Since we monitor the count around _enable, how do we ensure
 that context loss counter is accurate
 around OFF and idle transitions for domains that could have been
 hwauto? it might be good to have limitations
 in the $commit_message if it is not targeted to do so.

True, I can add a comment to the commit msg about this.

-Tero

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


Re: [PATCH 0/3] ARM: OMAP4: add support for TPS62361 PMIC

2012-05-30 Thread Tero Kristo
On Tue, 2012-05-29 at 14:29 -0700, Kevin Hilman wrote:
 Tero Kristo t-kri...@ti.com writes:
 
  Hi,
 
  This set adds support for TPS62361 PMIC, which is used to power
  MPU voltagedomain on OMAP4460 boards. These patches apply on top
  of 3.4 + my voltagedomain fixes set to avoid adding redundant code.
 
 Hmm... do you have an updated version of your voltagedomain fixes?  Or
 are you waiting for me to review something?  I thought I had been
 through them already, but if I have not, they slipped throught the
 cracks.  I'm sorry.  Can you please update/repost?

There have been some updates to the patches as per Nishanth's comments,
but I need to double check those before re-posting here. I can re-post
this series also once that is done.

-Tero

 
 Thanks.
 
 Kevin
 
  Working tree available here for interested parties:
 
  git://gitorious.org/~kristo/omap-pm/omap-pm-work.git
  branch: mainline-3.4-voltdm-tps-v1
 
  Tree has been tested with:
  - omap3beagle board
  - omap4panda es board (OMAP4460)
  - omap4blaze board (OMAP4430)
 
  Tested modifying the voltage levels on all core regulators (vdd1...vdd3)
  and measuring that the voltages do actually change.
 
  Patch #1 was needed before the voltages could be modified on a panda
  board es device, otherwise the timing for the I2C channel was so bogus
  it usually failed. The values used were taken from an android tree and
  are based on TI analysis.
 
  -Tero
 
  --
  To unsubscribe from this list: send the line unsubscribe linux-omap in
  the body of a message to majord...@vger.kernel.org
  More majordomo info at  http://vger.kernel.org/majordomo-info.html


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


Re: [PATCHv2 03/19] ARM: OMAP4: PM: Add device-off support

2012-05-30 Thread Tero Kristo
On Tue, 2012-05-29 at 11:31 -0700, Kevin Hilman wrote:
 Tero Kristo t-kri...@ti.com writes:
 
  On Wed, 2012-05-16 at 15:36 -0700, Kevin Hilman wrote:
  +Jean for functional power states
  
  Tero Kristo t-kri...@ti.com writes:
  
   This patch adds device off support to OMAP4 device type.
  
  Description is rather thin for a patch that is doing so much.
  
   OFF mode is disabled by default, 
  
  why?
 
  Good question. For historical reference I guess. The device off works
  pretty nicely with the current kernel already, so it should be possible
  to enable it by default and blame the people who break it.
 
  
   however, there are two ways to enable OFF mode:
   a) In the board file, call omap4_pm_off_mode_enable(1)
   b) Enable OFF mode using the debugfs entry
   echo 1/sys/kernel/debug/pm_debug/enable_off_mode
   (conversely echo '0' will disable it as well).
  
  This part needs to be a separate patch.
  
  But, as stated in the core retention series, I'd like to move away from
  these global flags all together.
  
  The way we manage the disabling of certain states (like off) is already
  clumsy for OMAP3, and it's getting worse with OMAP4.  Basically, I think
  this feature needs to be supported by using constraints on functional
  power states.   Having checks all over the place is getting unwieldy and
  not attractive to maintain.
  
  The combination of constraints and functional power states should make
  this much more manageable.   Until we have that, I'd prefer to keep
  the debugfs enable/disable stuff as separate patches at the end of the
  series used only for testing.
 
  Okay, this sounds like a good plan.
 
  
   Signed-off-by: Santosh Shilimkar santosh.shilim...@ti.com
   [t-kri...@ti.com: largely re-structured the code]
  
  then the sign-off above from Santosh probably doesn't apply anymore.
  You should change that to a Cc and just mention tht this is based upon
  some original work from Santosh.
 
  Yeah... I am not quite sure where the line goes here as I am modifying
  the patches quite heavily but try to keep credits to the original
  authors... will change this like so.
 
 I guess it's up to you whether you keep Santosh as author.  It all
 depends how much you've changed the original.  But you can use the
 changlog to give credits to Santosh, or state it was a collaboration,
 whatever you like.  You can say stuff like based on an origianl patch
 by..., and/or briefly summarize the changes you made from the original
 verions, etc.
 
  
  First,  some general comments:
  
  There is a lot going on in this patch, so it is hard to follow what all
  is related, and why.  Just a quick glance suggests it needs to be broken
  up into at least a few parts:
 
  What is the merge plan for the func power state stuff? I don't want to
  create new dependencies if unnecessary. Otherwise the split should be
  okay.
  
  - low-level PRM support: new APIs for various off-mode features)
(should probably be done on top of functional power states)
  - powerdomain core support or achievable states
(should probably be done on top of functional power states)
  - IRQ/GIC context save/restore
  - secure RAM save/restore (this has been tightly coupled to the GIC
but it's not obvious why)
 
  This is tightly coupled to GIC because the ROM code has following API
  calls:
 
  - save gic
  - save secure RAM
  - save secure all (gic + RAM + some other mysterious stuff)
 
  It is difficult/impossible to separate these without adding redundant
  code execution (e.g. doing a GIC save from the GIC code + then doing a
  second GIC save with save secure all from core PM code.)
 
 Ok, thanks for clarifying.
 
 That should be explained in the changelog for this patch when it's
 broken up.

Ok will add some comment about this.

 
  - PM debug support to enable/disable off-mode
(for testing only, not for merge)
  
   Signed-off-by: Tero Kristo t-kri...@ti.com
   ---
arch/arm/mach-omap2/omap-mpuss-lowpower.c |   10 -
arch/arm/mach-omap2/omap-wakeupgen.c  |   47 +++-
arch/arm/mach-omap2/pm-debug.c|   17 +--
arch/arm/mach-omap2/pm.h  |   20 +
arch/arm/mach-omap2/pm44xx.c  |   45 +++
arch/arm/mach-omap2/prm44xx.c |   66 
   +
6 files changed, 197 insertions(+), 8 deletions(-)
  
   diff --git a/arch/arm/mach-omap2/omap-mpuss-lowpower.c 
   b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
   index e02c082..7418e7c 100644
   --- a/arch/arm/mach-omap2/omap-mpuss-lowpower.c
   +++ b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
   @@ -60,6 +60,7 @@
#include prcm44xx.h
#include prm44xx.h
#include prm-regbits-44xx.h
   +#include cm44xx.h

#ifdef CONFIG_SMP

   @@ -263,9 +264,13 @@ int omap4_enter_lowpower(unsigned int cpu, unsigned 
   int power_state)
 * In MPUSS OSWR or device OFF, interrupt controller  contest 
   is lost.

Re: [PATCHv2 09/19] ARM: OMAP4: PM: add errata support

2012-05-30 Thread Tero Kristo
On Tue, 2012-05-29 at 15:10 -0500, Menon, Nishanth wrote:
 On Mon, May 14, 2012 at 5:18 AM, Tero Kristo t-kri...@ti.com wrote:
  Added similar PM errata flag support as omap3 has. A few errata flags
  will be added in subsequent patches.
 
 Considering that we might have erratas for future SoCs as well,
 should'nt we just
 set up a common errata flag for all SoCs and since we have i123 numbers, would
 it help being able to reuse errata flags cross SoC generations (if we need 
 to)?

Not sure... how quickly do we run out of bits that way? :) Also, at
least pm34xx / pm44xx erratas don't have anything in common. We can
probably re-use pm44xx erratas for omap5 though.

One annoyance is that, the OMAP4 erratas are going to have a number of
ROM code erratas on them, which don't really have any public i123
numbers available. .

-Tero

 
  Signed-off-by: Tero Kristo t-kri...@ti.com
  ---
   arch/arm/mach-omap2/pm.h |7 +++
   arch/arm/mach-omap2/pm44xx.c |1 +
   2 files changed, 8 insertions(+), 0 deletions(-)
 
  diff --git a/arch/arm/mach-omap2/pm.h b/arch/arm/mach-omap2/pm.h
  index ce1e27f..e53ee3c 100644
  --- a/arch/arm/mach-omap2/pm.h
  +++ b/arch/arm/mach-omap2/pm.h
  @@ -130,6 +130,13 @@ extern void enable_omap3630_toggle_l2_on_restore(void);
   static inline void enable_omap3630_toggle_l2_on_restore(void) { }
   #endif /* defined(CONFIG_PM)  defined(CONFIG_ARCH_OMAP3) */
 
  +#if defined(CONFIG_PM)  defined(CONFIG_ARCH_OMAP4)
  +extern u16 pm44xx_errata;
  +#define IS_PM44XX_ERRATUM(id)  (pm44xx_errata  (id))
  +#else
  +#define IS_PM44XX_ERRATUM(id)  0
  +#endif
  +
   #ifdef CONFIG_OMAP_SMARTREFLEX
   extern int omap_devinit_smartreflex(void);
   extern void omap_enable_smartreflex_on_init(void);
  diff --git a/arch/arm/mach-omap2/pm44xx.c b/arch/arm/mach-omap2/pm44xx.c
  index 8f0ec56..8238097 100644
  --- a/arch/arm/mach-omap2/pm44xx.c
  +++ b/arch/arm/mach-omap2/pm44xx.c
  @@ -35,6 +35,7 @@ struct power_state {
   };
 
   static LIST_HEAD(pwrst_list);
  +u16 pm44xx_errata;
 
   #ifdef CONFIG_SUSPEND
   static int omap4_pm_suspend(void)
  --
  1.7.4.1
 
 
  ___
  linux-arm-kernel mailing list
  linux-arm-ker...@lists.infradead.org
  http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
 
 
 Regards,
 Nishanth Menon


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


Re: [PATCHv2 14/19] ARM: OMAP4: wakeupgen: enable clocks for save_secure_all

2012-05-30 Thread Tero Kristo
On Tue, 2012-05-29 at 13:15 -0700, Kevin Hilman wrote:
 Tero Kristo t-kri...@ti.com writes:
 
  On Wed, 2012-05-16 at 17:06 -0700, Kevin Hilman wrote:
  +Benoit
  
  Tero Kristo t-kri...@ti.com writes:
  
   save_secure_all needs l3_main_3_ick and l4_secure_clkdm enabled,
   otherwise the secure ROM code will crash.
  
   Signed-off-by: Tero Kristo t-kri...@ti.com
  
  I think I mentioned this already (I'm already lost in what I've said for
  thisseries), but I don't think the secure RAM stuff belongs in the
  wakeupgen driver.
 
  As mentioned, save_secure_all saves:
  - secure RAM
  - GIC registers
  - some other mysterious stuff
 
  Attempting to do separate saves for secure RAM + GIC hang the device
  during wakeup, in addition to being really inefficient (secure API calls
  are expensive.)
 
 I guess my comment wasn't that this isn't needed, but that it doesn't
 seem to belong in the wakeupgen base (which should probably converted
 into a real driver.)
 
 Seems better to have this stuff in the secure code, maybe omap-secure.c?

That might be an option yes. I'll see if I can move these calls over
there.

-Tero

--
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] remoteproc: maintain a generic child device for each rproc

2012-05-30 Thread Stephen Boyd
On 5/26/2012 12:36 AM, Ohad Ben-Cohen wrote:
 For each registered rproc, maintain a generic remoteproc device whose
 parent is the low level platform-specific device (commonly a pdev, but
 it may certainly be any other type of device too).

 With this in hand, the resulting device hierarchy might then look like:

 omap-rproc.0
  |
  - remoteproc.0

It looks like remoteproc0, remoteproc1, etc. is what's used.

 |
 - virtio0
 |
 - virtio1
|
- rpmsg0
|
- rpmsg1
|
- rpmsg2

 Where:
 - omap-rproc.0 is the low level device that's bound to the
   driver which invokes rproc_register()
 - remoteproc.0 is the result of this patch, and will be added by the
   remoteproc framework when rproc_register() is invoked
 - virtio0 and virtio1 are vdevs that are registered by remoteproc
   when it realizes that they are supported by the firmware
   of the physical remote processor represented by omap-rproc.0
 - rpmsg0, rpmsg1 and rpmsg2 are rpmsg devices that represent rpmsg
   channels, and are registerd by the rpmsg bus when it gets notified
   about their existence

 Technically, this patch:
 - changes 'struct rproc' to contain this generic remoteproc.x device
 - creates a new remoteproc class, to which this new generic remoteproc.x
   device belong to.
 - adds a super simple enumeration method for the indices of the
   remoteproc.x devices
 - updates all dev_* messaging to use the generic remoteproc.x device
   instead of the low level platform-specific device

One complaint I've gotten is that the error messages are essentially
useless now. I believe there are some ongoing discussions on lkml to fix
this by traversing the device hierarchy to find the real device but
the hard part is finding the real device.

 - updates all dma_* allocations to use the parent of remoteproc.x (where
   the platform-specific memory pools, most commonly CMA, are to be found)

 Adding this generic device has several merits:
 - we can now add remoteproc runtime PM support simply by hooking onto the
   new remoteproc class
 - all remoteproc log messages will now carry a common name prefix
   instead of having a platform-specific one
 - having a device as part of the rproc struct makes it possible to simplify
   refcounting (see subsequent patch)

 Thanks to Stephen Boyd sb...@codeaurora.org for suggesting and
 discussing these ideas in one of the remoteproc review threads and
 to Fernando Guzman Lugo fernando.l...@ti.com for trying them out
 with the (upcoming) runtime PM support for remoteproc.
[snip]

 diff --git a/drivers/remoteproc/remoteproc_core.c 
 b/drivers/remoteproc/remoteproc_core.c
 index 464ea4f..9e3d4cf 100644
 --- a/drivers/remoteproc/remoteproc_core.c
 +++ b/drivers/remoteproc/remoteproc_core.c
 @@ -66,6 +66,9 @@ typedef int (*rproc_handle_resources_t)(struct rproc *rproc,
   struct resource_table *table, int len);
  typedef int (*rproc_handle_resource_t)(struct rproc *rproc, void *, int 
 avail);
  
 +/* Unique numbering for remoteproc devices */
 +static unsigned int dev_index;
 +

Hm... perhaps use that ida stuff instead of a raw integer?

 +static struct class rproc_class = {
 + .name   = remoteproc,
 + .owner  = THIS_MODULE,
 + .dev_release= rproc_class_release,
 +};

I'm not clear on busses versus classes. I recall seeing a thread where
someone said classes were on the way out and shouldn't be used but I
can't find it anymore. Should we use classes for devices that will never
have a matching driver?

 +
  /**
   * rproc_alloc() - allocate a remote processor handle
   * @dev: the underlying device
 @@ -1492,12 +1516,19 @@ struct rproc *rproc_alloc(struct device *dev, const 
 char *name,
   return NULL;
   }
  
 - rproc-dev = dev;
   rproc-name = name;
   rproc-ops = ops;
   rproc-firmware = firmware;
   rproc-priv = rproc[1];
  
 + device_initialize(rproc-dev);
 + rproc-dev.parent = dev;
 + rproc-dev.class = rproc_class;
 +
 + /* Assign a unique device index and name */
 + rproc-index = dev_index++;
 + dev_set_name(rproc-dev, remoteproc%d, rproc-index);
 +

This doesn't look thread safe. ida would fix this (ida_simple_get/remove
looks like what you want).

 diff --git a/include/linux/remoteproc.h b/include/linux/remoteproc.h
 index f1ffabb..0b835d3 100644
 --- a/include/linux/remoteproc.h
 +++ b/include/linux/remoteproc.h
 @@ -383,6 +383,7 @@ enum rproc_state {
   * @bootaddr: address of first instruction to boot rproc with (optional)
   * @rvdevs: list of remote virtio devices
   * @notifyids: idr for dynamically assigning rproc-wide unique notify ids
 + * @index: index of this rproc device
   */
  struct rproc {
   struct klist_node node;
 @@ -391,7 +392,7 @@ struct rproc {
   const char *firmware;
   void *priv;
   const struct rproc_ops *ops;
 - struct device *dev;
 + struct device dev;

I'm not sure if the 

Re: [RFC PATCH 11/11] ARM: DT: Add support to system control module for OMAP4

2012-05-30 Thread Cousson, Benoit

On 5/29/2012 11:49 AM, Konstantin Baydarov wrote:

   Hi, Eduardo.

On 05/25/2012 12:26 PM, Eduardo Valentin wrote:

This patch add device tree entries on OMAP4 based boards
for System Control Module (SCM).

Signed-off-by: Eduardo Valentineduardo.valen...@ti.com
---
  arch/arm/boot/dts/omap4.dtsi |   13 +
  1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi
index 359c497..d2cb392 100644
--- a/arch/arm/boot/dts/omap4.dtsi
+++ b/arch/arm/boot/dts/omap4.dtsi
@@ -272,5 +272,18 @@
ti,hwmods = mmc5;
ti,needs-special-reset;
};
+
+   ctrl_module_core: ctrl_module_core@4a002000 {
+   compatible = ti,omap4-control;
+   ti,hwmods = ctrl_module_core;
+   bandgap {
+   compatible = ti,omap4460-bandgap;
+   interrupts =0 126 4; /* talert */
+   ti,tshut-gpio =86; /* tshut */
+   };

I believe that CPU-specific bandgap definition should be moved to bard specific 
dts.


Mmm, why, since it is CPU specific and not board specific. I has to be 
in the SoC file.


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


Re: [PATCH 2/2] remoteproc: remove the now-redundant kref

2012-05-30 Thread Stephen Boyd
On 5/26/2012 12:36 AM, Ohad Ben-Cohen wrote:
  /* will be called when an rproc is added to the rprocs klist */
  static void klist_rproc_get(struct klist_node *n)
  {
   struct rproc *rproc = container_of(n, struct rproc, node);
  
 - kref_get(rproc-refcount);
 + get_device(rproc-dev);
  }
  
  /* will be called when an rproc is removed from the rprocs klist */
 @@ -1312,7 +1282,7 @@ static void klist_rproc_put(struct klist_node *n)
  {
   struct rproc *rproc = container_of(n, struct rproc, node);
  
 - kref_put(rproc-refcount, rproc_release);
 + put_device(rproc-dev);
  }
  
  static struct rproc *next_rproc(struct klist_iter *i)
 @@ -1354,7 +1324,7 @@ struct rproc *rproc_get_by_name(const char *name)
   klist_iter_init(rprocs, i);
   while ((rproc = next_rproc(i)) != NULL)
   if (!strcmp(rproc-name, name)) {
 - kref_get(rproc-refcount);
 + get_device(rproc-dev);
   break;
   }
   klist_iter_exit(i);
 @@ -1367,7 +1337,7 @@ struct rproc *rproc_get_by_name(const char *name)
  
   ret = rproc_boot(rproc);
   if (ret  0) {
 - kref_put(rproc-refcount, rproc_release);
 + put_device(rproc-dev);
   return NULL;
   }

I was hoping we could use class_for_each_device() and
class_find_device() to replace all this code. Then we wouldn't need all
this klist stuff that the class is taking care of already.

 @@ -1462,10 +1432,23 @@ int rproc_register(struct rproc *rproc)
  }
  EXPORT_SYMBOL(rproc_register);
  
 +/**
 + * rproc_class_release() - release a remote processor instance
 + * @dev: the rproc's device
 + *
 + * This function should _never_ be called directly.
 + *
 + * It will be called by the driver core when no one holds a valid pointer
 + * to @dev anymore.
 + */

Why is this added now and not in the previous patch?

  static void rproc_class_release(struct device *dev)
  {
   struct rproc *rproc = container_of(dev, struct rproc, dev);
  
 + dev_info(rproc-dev, releasing %s\n, rproc-name);
 +
 + rproc_delete_debug_dir(rproc);
 +
   idr_remove_all(rproc-notifyids);
   idr_destroy(rproc-notifyids);
  
[snip]
 @@ -1603,8 +1584,8 @@ int rproc_unregister(struct rproc *rproc)
  
   device_del(rproc-dev);
  
 - /* the rproc will only be released after its refcount drops to zero */
 - kref_put(rproc-refcount, rproc_release);
 + /* unroll rproc_alloc. TODO: we may want to let the users do that */
 + put_device(rproc-dev);

Yes I think we want rproc_free() to actually call put_device() the last
time and free the resources.

-- 
Sent by an employee of the Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum.

--
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 14/19] ARM: OMAP4: wakeupgen: enable clocks for save_secure_all

2012-05-30 Thread Tero Kristo
On Tue, 2012-05-29 at 15:48 -0500, Menon, Nishanth wrote:
 On Tue, May 29, 2012 at 3:15 PM, Kevin Hilman khil...@ti.com wrote:
  Tero Kristo t-kri...@ti.com writes:
 
  On Wed, 2012-05-16 at 17:06 -0700, Kevin Hilman wrote:
  +Benoit
 
  Tero Kristo t-kri...@ti.com writes:
 
   save_secure_all needs l3_main_3_ick and l4_secure_clkdm enabled,
   otherwise the secure ROM code will crash.
  
   Signed-off-by: Tero Kristo t-kri...@ti.com
 
  I think I mentioned this already (I'm already lost in what I've said for
  thisseries), but I don't think the secure RAM stuff belongs in the
  wakeupgen driver.
 
  As mentioned, save_secure_all saves:
  - secure RAM
  - GIC registers
  - some other mysterious stuff
 
  Attempting to do separate saves for secure RAM + GIC hang the device
  during wakeup, in addition to being really inefficient (secure API calls
  are expensive.)
 
  I guess my comment wasn't that this isn't needed, but that it doesn't
  seem to belong in the wakeupgen base (which should probably converted
  into a real driver.)
 
  Seems better to have this stuff in the secure code, maybe omap-secure.c?
 
 
 Perhaps OFF mode notifier might help best here. In addition - it might
 be safer to protect all calls with clkdm_wakeup around
 secure_dispatcher instead of just the save_secure_all.. ROM code is
 not smart enough around it.
 an completely safe version used by security driver can be found here:
 http://git.omapzoom.org/?p=kernel/omap.git;a=blob;f=security/smc/tf_comm_mshield.c;h=b5279fef0fa400438a57b3941af13d965e983bf0;hb=p-android-omap-3.0#l253
 

Thats true... the secure driver in mainline kernel is rather a stub.
Previous version of this patch actually had clkdm_wakeup around every
call to dispatcher, I just optimized it away. I can add it back in the
next version if you think that is better.

-Tero


--
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/3] ARM: OMAP4: VC: fix I2C timing

2012-05-30 Thread Tero Kristo
On Tue, 2012-05-29 at 14:30 -0700, Kevin Hilman wrote:
 Tero Kristo t-kri...@ti.com writes:
 
  Current I2C timing parameters do not work with Panda board at least.
  Parameters updated based on TI recommendation.
 
  Signed-off-by: Tero Kristo t-kri...@ti.com
 
 Let's fix this correctly by deriving/calculating them from the proper
 source clocks.

Hmm, I'll double check if these can actually be calculated or not.

-Tero

 
 Otherwise, this is going to work for Panda and break for something else.
 
 Kevin
 
  ---
   arch/arm/mach-omap2/vc.c |4 +++-
   1 files changed, 3 insertions(+), 1 deletions(-)
 
  diff --git a/arch/arm/mach-omap2/vc.c b/arch/arm/mach-omap2/vc.c
  index 1fd976e..a731400 100644
  --- a/arch/arm/mach-omap2/vc.c
  +++ b/arch/arm/mach-omap2/vc.c
  @@ -585,7 +585,9 @@ static void __init omap4_vc_init_channel(struct 
  voltagedomain *voltdm)
  omap4_set_timings(voltdm, true);
   
  /* XXX These are magic numbers and do not belong! */
  -   vc_val = (0x60  OMAP4430_SCLL_SHIFT | 0x26  OMAP4430_SCLH_SHIFT);
  +   vc_val = (0x28  OMAP4430_SCLL_SHIFT | 0x2c  OMAP4430_SCLH_SHIFT);
  +   vc_val |= (0x0b  OMAP4430_HSSCLL_SHIFT);
  +   vc_val |= (0x0  OMAP4430_HSSCLH_SHIFT);
  voltdm-write(vc_val, OMAP4_PRM_VC_CFG_I2C_CLK_OFFSET);
   }


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


latest kernel for am35xx

2012-05-30 Thread Maxim Podbereznyy
Hi!

I need to use the latest kernel at a am3517 based board where
Craneboard schematic was used as a reference. In addition to Cranboard
scheme I have wl1271 chip added and therefore I need a kernel - one of
the latests to support wireless feature.

The job I did:
1) used kernel from Craneboard (Mistral repository) - 2.6.32, no wl1271 support
2) OMAPPSP_04.02.00.07 - 2.6.37, tps65910 driver is broken
3) AM335x PSP 04.06.00.07 - does not compile for am3517evm

Can anybody suggest some alive kernel tree where tps65910 and wl1271
chips are supported? Having am3517evm or am3517crane board files would
be a great help!

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


Re: [RFC PATCH 11/11] ARM: DT: Add support to system control module for OMAP4

2012-05-30 Thread Konstantin Baydarov
On 05/30/2012 12:38 PM, Cousson, Benoit wrote:
 On 5/29/2012 11:49 AM, Konstantin Baydarov wrote:
Hi, Eduardo.

 On 05/25/2012 12:26 PM, Eduardo Valentin wrote:
 This patch add device tree entries on OMAP4 based boards
 for System Control Module (SCM).

 Signed-off-by: Eduardo Valentineduardo.valen...@ti.com
 ---
   arch/arm/boot/dts/omap4.dtsi |   13 +
   1 files changed, 13 insertions(+), 0 deletions(-)

 diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi
 index 359c497..d2cb392 100644
 --- a/arch/arm/boot/dts/omap4.dtsi
 +++ b/arch/arm/boot/dts/omap4.dtsi
 @@ -272,5 +272,18 @@
   ti,hwmods = mmc5;
   ti,needs-special-reset;
   };
 +
 +ctrl_module_core: ctrl_module_core@4a002000 {
 +compatible = ti,omap4-control;
 +ti,hwmods = ctrl_module_core;
 +bandgap {
 +compatible = ti,omap4460-bandgap;
 +interrupts =0 126 4; /* talert */
 +ti,tshut-gpio =86; /* tshut */
 +};
 I believe that CPU-specific bandgap definition should be moved to bard 
 specific dts.

 Mmm, why, since it is CPU specific and not board specific. I has to be in the 
 SoC file.
Speaking about omap4430 - omap4430 bandgap differs from omap4460, so if 
omap4430 bandgap support will be added to omap-bandgap driver the version of 
bandgap should specified in dts file. omap4.dtsi is a common for omap4 boards, 
that is why I'm suggesting to move bandgap description to probably board 
specific file.
Another solution is to determine bandgap type in driver probe function, but in 
that case ti,omap4460-bandgap in omap4.dtsi should be replaced to 
ti,omap4-bandgap.

  BR,
Konstantin Baydarov.

 Regards,
 Benoit

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


Re: [RFC PATCH 11/11] ARM: DT: Add support to system control module for OMAP4

2012-05-30 Thread Cousson, Benoit

On 5/30/2012 11:05 AM, Konstantin Baydarov wrote:

On 05/30/2012 12:38 PM, Cousson, Benoit wrote:

On 5/29/2012 11:49 AM, Konstantin Baydarov wrote:

Hi, Eduardo.

On 05/25/2012 12:26 PM, Eduardo Valentin wrote:

This patch add device tree entries on OMAP4 based boards for
System Control Module (SCM).


...


I believe that CPU-specific bandgap definition should be moved to
bard specific dts.


Mmm, why, since it is CPU specific and not board specific. I has to
be in the SoC file.

Speaking about omap4430 - omap4430 bandgap differs from omap4460, so
if omap4430 bandgap support will be added to omap-bandgap driver the
version of bandgap should specified in dts file. omap4.dtsi is a
common for omap4 boards, that is why I'm suggesting to move bandgap
description to probably board specific file.


OK, I got your point, but in that case we could potentially define a 
omap4460.dtsi file.



Another solution is to
determine bandgap type in driver probe function, but in that case
ti,omap4460-bandgap in omap4.dtsi should be replaced to
ti,omap4-bandgap.


Yes, this is the best solution, but that assume that we can identify the 
control module version from the HW, which is not necessarily true :-(


The IP_REVISION (offset = 0) value are unfortunately not documented, so 
we should read it to check if they are different from omap4430 and 4460.


The bitfield layout in that register is:

IP_REV_MAJOR: 8..10
IP_REV_CUSTOM: 6..7
IP_REV_MINOR: 0..5

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


Re: [PATCH 3/3] watchdog: omap_wdt: add device tree support

2012-05-30 Thread Xiao Jiang


If there is no difference between the OMAP3 and the OMAP4 WDT IP, 
just add one entry ti,omap3-wdt. And then in the OMAP4 DTS you will 
just put : compatible = ti,omap3-wdt; or compatible =  
ti,omap4-wdt, ti,omap3-wdt;
I'm still a little bit confused about the real need for the 
ti,omap4-wdt: entry, but it seems to be the way to do it in PPC.
I believe OMAP2, OMAP3 and OMAP4 share the same IP, so how about use 
ti, omap2-wdt? and other dts files
put compatible like ti,omap4-wdt, ti,omap2-wdt and ti,omap4-wdt, 
ti,omap2-wdt.


Typo, should be ti,omap3-wdt, ti,omap2-wdt and ti,omap4-wdt, 
ti,omap2-wdt.


Regards,
Xiao
--
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 11/11] ARM: DT: Add support to system control module for OMAP4

2012-05-30 Thread Konstantin Baydarov
  Hi.
On 05/30/2012 01:26 PM, Cousson, Benoit wrote:
 On 5/30/2012 11:05 AM, Konstantin Baydarov wrote:
 On 05/30/2012 12:38 PM, Cousson, Benoit wrote:
 On 5/29/2012 11:49 AM, Konstantin Baydarov wrote:
 Hi, Eduardo.

 On 05/25/2012 12:26 PM, Eduardo Valentin wrote:
 This patch add device tree entries on OMAP4 based boards for
 System Control Module (SCM).

 ...

 I believe that CPU-specific bandgap definition should be moved to
 bard specific dts.

 Mmm, why, since it is CPU specific and not board specific. I has to
 be in the SoC file.
 Speaking about omap4430 - omap4430 bandgap differs from omap4460, so
 if omap4430 bandgap support will be added to omap-bandgap driver the
 version of bandgap should specified in dts file. omap4.dtsi is a
 common for omap4 boards, that is why I'm suggesting to move bandgap
 description to probably board specific file.

 OK, I got your point, but in that case we could potentially define a 
 omap4460.dtsi file.

 Another solution is to
 determine bandgap type in driver probe function, but in that case
 ti,omap4460-bandgap in omap4.dtsi should be replaced to
 ti,omap4-bandgap.

 Yes, this is the best solution, but that assume that we can identify the 
 control module version from the HW, which is not necessarily true :-(

 The IP_REVISION (offset = 0) value are unfortunately not documented, so we 
 should read it to check if they are different from omap4430 and 4460.

 The bitfield layout in that register is:

 IP_REV_MAJOR: 8..10
 IP_REV_CUSTOM: 6..7
 IP_REV_MINOR: 0..5
Probably, cpu_is_omap443x() and cpu_is_omap446x() can be used in bandgap driver 
probe function. Actually many drivers use cpu_is_omap*():
drivers/mfd/omap-usb-host.c
drivers/mfd/twl-core.c

  BR,
Konstantin Baydarov.


 Regards,
 Benoit

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


Re: [RFC PATCH 11/11] ARM: DT: Add support to system control module for OMAP4

2012-05-30 Thread Cousson, Benoit

On 5/30/2012 12:17 PM, Konstantin Baydarov wrote:

   Hi.
On 05/30/2012 01:26 PM, Cousson, Benoit wrote:

On 5/30/2012 11:05 AM, Konstantin Baydarov wrote:

On 05/30/2012 12:38 PM, Cousson, Benoit wrote:

On 5/29/2012 11:49 AM, Konstantin Baydarov wrote:

Hi, Eduardo.

On 05/25/2012 12:26 PM, Eduardo Valentin wrote:

This patch add device tree entries on OMAP4 based boards for
System Control Module (SCM).


...


I believe that CPU-specific bandgap definition should be moved to
bard specific dts.


Mmm, why, since it is CPU specific and not board specific. I has to
be in the SoC file.

Speaking about omap4430 - omap4430 bandgap differs from omap4460, so
if omap4430 bandgap support will be added to omap-bandgap driver the
version of bandgap should specified in dts file. omap4.dtsi is a
common for omap4 boards, that is why I'm suggesting to move bandgap
description to probably board specific file.


OK, I got your point, but in that case we could potentially define a 
omap4460.dtsi file.


Another solution is to
determine bandgap type in driver probe function, but in that case
ti,omap4460-bandgap in omap4.dtsi should be replaced to
ti,omap4-bandgap.


Yes, this is the best solution, but that assume that we can identify the 
control module version from the HW, which is not necessarily true :-(

The IP_REVISION (offset = 0) value are unfortunately not documented, so we 
should read it to check if they are different from omap4430 and 4460.

The bitfield layout in that register is:

IP_REV_MAJOR: 8..10
IP_REV_CUSTOM: 6..7
IP_REV_MINOR: 0..5

Probably, cpu_is_omap443x() and cpu_is_omap446x() can be used in bandgap driver 
probe function. Actually many drivers use cpu_is_omap*():


No, we cannot, we are in the process of getting rid of that.
A driver should only focus on the IP version in theory. The CPU version 
is not the proper way of getting that. It will make the driver not 
scalable at all for future OMAP revision.



drivers/mfd/omap-usb-host.c
drivers/mfd/twl-core.c


Yeah, these are the ones that still need to be fixed...

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


Re: Ftrace Timer on OMAP3

2012-05-30 Thread Thomas Klute


Am 28.05.2012 10:24, schrieb Ming Lei:
 On Mon, May 28, 2012 at 2:56 PM, Hiremath, Vaibhav hvaib...@ti.com wrote:
 On Fri, May 25, 2012 at 20:49:07, Thomas Klute wrote:
 Hi everyone,

 we're having some trouble getting useful results from Ftrace on OMAP3
 (Gumstix Overo). As you can see in the example output below, function
 duration can't be displayed with a precision higher than about 30.5 us,
 which matches the frequency of the 32 kHz platform timer. For OMAP1,
 using OMAP_MPU_TIMER instead of CONFIG_OMAP_32K_TIMER should provide
 better results [1], but I couldn't find anything similar for OMAP3. Just
 setting CONFIG_OMAP_32K_TIMER=N didn't change the results. Did I miss
 anything, or isn't there any more precise timer?


 I believe you are using mainline kernel here, if yes, you should be enabling
 the dmtimer using commandline argument, clocksource=gp_timer.
 
 Also you need to pass 'nohlt' to kernel since gp_timer can't be kept
 when cpu is idled in deep state.

I use the linux-omap tree, but adding clocksource=gp_timer nohlt to
the kernel command line did the trick anyways. :-)

Thanks to both of you!
Thomas
--
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 11/11] ARM: DT: Add support to system control module for OMAP4

2012-05-30 Thread Eduardo Valentin
Hello,

On Wed, May 30, 2012 at 12:22:49PM +0200, Cousson Benoit wrote:
 On 5/30/2012 12:17 PM, Konstantin Baydarov wrote:
Hi.
 On 05/30/2012 01:26 PM, Cousson, Benoit wrote:
 On 5/30/2012 11:05 AM, Konstantin Baydarov wrote:
 On 05/30/2012 12:38 PM, Cousson, Benoit wrote:
 On 5/29/2012 11:49 AM, Konstantin Baydarov wrote:
 Hi, Eduardo.
 
 On 05/25/2012 12:26 PM, Eduardo Valentin wrote:
 This patch add device tree entries on OMAP4 based boards for
 System Control Module (SCM).
 
 ...
 
 I believe that CPU-specific bandgap definition should be moved to
 bard specific dts.
 
 Mmm, why, since it is CPU specific and not board specific. I has to
 be in the SoC file.
 Speaking about omap4430 - omap4430 bandgap differs from omap4460, so
 if omap4430 bandgap support will be added to omap-bandgap driver the
 version of bandgap should specified in dts file. omap4.dtsi is a
 common for omap4 boards, that is why I'm suggesting to move bandgap
 description to probably board specific file.
 
 OK, I got your point, but in that case we could potentially define a 
 omap4460.dtsi file.
 
 Another solution is to
 determine bandgap type in driver probe function, but in that case
 ti,omap4460-bandgap in omap4.dtsi should be replaced to
 ti,omap4-bandgap.
 
 Yes, this is the best solution, but that assume that we can identify the 
 control module version from the HW, which is not necessarily true :-(
 
 The IP_REVISION (offset = 0) value are unfortunately not documented, so we 
 should read it to check if they are different from omap4430 and 4460.
 
 The bitfield layout in that register is:
 
 IP_REV_MAJOR: 8..10
 IP_REV_CUSTOM: 6..7
 IP_REV_MINOR: 0..5

I have the weird deja vu feeling... 
The DT entry I sent, I already knew it would cause troubles :-)
Having it per board it would be really a PITA. Image that every
body doing a 4430 board needs to define a BG entry...
That would work, but still do we want this?

Benoit, I guess you should know my option by now.
Ideally we should rely on revision register to decide what to do in the driver.
And as we discussed, looks like for BG this is somewhat non-existing.

If we go with the SCM revision register, what do we do if the BG goes away from 
SCM?

If we go with ti,omap4-bandgap, we still need a way to say if it is 4430, 
4460 or 4470.
There are configuration / settings specific for each. Not only on bandgap,
but also wrt to sensor location and hotspot extrapolation rules.

Because we lack a revision register for bandgap, one way to go is to have still 
the
revisioning on the same way: ti,omap-bandgap, but having a omap.dtsi
per omap revision. But do we want to this only due to bandgap?
BTW, is it only BG which is suffering of this issue?

 Probably, cpu_is_omap443x() and cpu_is_omap446x() can be used in bandgap 
 driver probe function. Actually many drivers use cpu_is_omap*():


No please! Let's not use that stuff...

 
 No, we cannot, we are in the process of getting rid of that.
 A driver should only focus on the IP version in theory. The CPU
 version is not the proper way of getting that. It will make the
 driver not scalable at all for future OMAP revision.
 
 drivers/mfd/omap-usb-host.c
 drivers/mfd/twl-core.c
 
 Yeah, these are the ones that still need to be fixed...

agreed with Benoit here.

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


[RFC PATCH 1/5] arm: omap: hwmod: make *phy_48m* as the main_clk of ocp2scp

2012-05-30 Thread Kishon Vijay Abraham I
Made *ocp2scp_usb_phy_phy_48m* as the main_clk for ocp2scp.
Since this ocp2scp module does not have any fck but does have a
single opt_clock, it is added as the main_clk for ocp2scp.

Signed-off-by: Kishon Vijay Abraham I kis...@ti.com
---
 arch/arm/mach-omap2/omap_hwmod_44xx_data.c |1 +
 1 files changed, 1 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 950454a..249ff76 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -2508,6 +2508,7 @@ static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod = 
{
.name   = ocp2scp_usb_phy,
.class  = omap44xx_ocp2scp_hwmod_class,
.clkdm_name = l3_init_clkdm,
+   .main_clk   = ocp2scp_usb_phy_phy_48m,
.prcm = {
.omap4 = {
.clkctrl_offs = 
OMAP4_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL_OFFSET,
-- 
1.7.5.4

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


[RFC PATCH 0/5] omap: add ocp2scp as a misc driver

2012-05-30 Thread Kishon Vijay Abraham I
This patch series is done as a preparatory step for adding phy drivers
for dwc3 and musb.

This series adds a new driver for ocp2scp to which phy drivers are connected.

I'm planning to send phy drivers asap. Meanwhile I'd like to get some
review comments for this series. I have also plans to send device tree
adaptation of the ocp2scp driver.

Developed on
http://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-next

If it has to be based on some other tree, please let me know.

Kishon Vijay Abraham I (5):
  arm: omap: hwmod: make *phy_48m* as the main_clk of ocp2scp
  arm: omap: remove ocp2scp_usb_phy_ick clock node
  drivers: misc: omap: add a new driver for ocp2scp
  ARM: OMAP4: add _dev_attr_ to ocp2scp for representing usb_phy
  arm: omap: ocp2scp: create omap device for ocp2scp

 arch/arm/mach-omap2/clock44xx_data.c   |   11 ---
 arch/arm/mach-omap2/devices.c  |   72 +++
 arch/arm/mach-omap2/omap_hwmod_44xx_data.c |   22 +
 drivers/misc/Kconfig   |8 ++
 drivers/misc/Makefile  |1 +
 drivers/misc/omap-ocp2scp.c|  135 
 include/linux/platform_data/omap_ocp2scp.h |   31 +++
 7 files changed, 269 insertions(+), 11 deletions(-)
 create mode 100644 drivers/misc/omap-ocp2scp.c
 create mode 100644 include/linux/platform_data/omap_ocp2scp.h

-- 
1.7.5.4

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


[RFC PATCH 5/5] arm: omap: ocp2scp: create omap device for ocp2scp

2012-05-30 Thread Kishon Vijay Abraham I
Platfrom device for ocp2scp is created using omap_device_build in
devices file. This is used for both omap4(musb) and omap5(dwc3).

Signed-off-by: Kishon Vijay Abraham I kis...@ti.com
---
 arch/arm/mach-omap2/devices.c |   72 +
 1 files changed, 72 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
index ae62ece..d87cf40 100644
--- a/arch/arm/mach-omap2/devices.c
+++ b/arch/arm/mach-omap2/devices.c
@@ -18,6 +18,7 @@
 #include linux/slab.h
 #include linux/of.h
 #include linux/platform_data/omap4-keypad.h
+#include linux/platform_data/omap_ocp2scp.h
 
 #include mach/hardware.h
 #include mach/irqs.h
@@ -659,6 +660,76 @@ void __init omap242x_init_mmc(struct 
omap_mmc_platform_data **mmc_data)
 
 #endif
 
+#if defined(CONFIG_OMAP_OCP2SCP) || defined(CONFIG_OMAP_OCP2SCP_MODULE)
+static int count_ocp2scp_devices(struct omap_ocp2scp_dev *ocp2scp_dev)
+{
+   int cnt = 0;
+
+   while (ocp2scp_dev-drv_name != NULL) {
+   cnt++;
+   ocp2scp_dev++;
+   }
+
+   return cnt;
+}
+
+static void omap_init_ocp2scp(void)
+{
+   struct omap_hwmod   *oh;
+   struct platform_device  *pdev;
+   int bus_id = -1, dev_cnt = 0, i;
+   struct omap_ocp2scp_dev *ocp2scp_dev;
+   const char  *oh_name, *name;
+   struct omap_ocp2scp_platform_data *pdata;
+
+   oh_name = ocp2scp_usb_phy;
+   name= omap-ocp2scp;
+
+   oh = omap_hwmod_lookup(oh_name);
+   if (!oh) {
+   pr_err(%s: could not find omap_hwmod for %s\n, __func__,
+   oh_name);
+   return;
+   }
+
+   pdata = kzalloc(sizeof(*pdata), GFP_KERNEL);
+   if (!pdata) {
+   pr_err(%s: No memory for ocp2scp pdata\n, __func__);
+   return;
+   }
+
+   ocp2scp_dev = oh-dev_attr;
+   dev_cnt = count_ocp2scp_devices(ocp2scp_dev);
+
+   if (!dev_cnt) {
+   pr_err(%s: No devices connected to ocp2scp\n, __func__);
+   return;
+   }
+
+   pdata-devices = kzalloc(sizeof(struct omap_ocp2scp_dev *)
+   * dev_cnt, GFP_KERNEL);
+   if (!pdata-devices) {
+   pr_err(%s: No memory for ocp2scp pdata devices\n, __func__);
+   return;
+   }
+
+   for (i = 0; i  dev_cnt; i++, ocp2scp_dev++)
+   pdata-devices[i] = ocp2scp_dev;
+
+   pdata-dev_cnt  = dev_cnt;
+
+   pdev = omap_device_build(name, bus_id, oh, pdata, sizeof(*pdata), NULL,
+   0, false);
+   if (IS_ERR(pdev)) {
+   pr_err(Could not build omap_device for %s %s\n,
+   name, oh_name);
+   return;
+   }
+}
+#else
+static inline void omap_init_ocp2scp(void) { }
+#endif
+
 /*-*/
 
 #if defined(CONFIG_HDQ_MASTER_OMAP) || defined(CONFIG_HDQ_MASTER_OMAP_MODULE)
@@ -745,6 +816,7 @@ static int __init omap2_init_devices(void)
omap_init_sham();
omap_init_aes();
omap_init_vout();
+   omap_init_ocp2scp();
 
return 0;
 }
-- 
1.7.5.4

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


[RFC PATCH 4/5] ARM: OMAP4: add _dev_attr_ to ocp2scp for representing usb_phy

2012-05-30 Thread Kishon Vijay Abraham I
In order to reflect devices(usb_phy) attached to ocp2scp bus, ocp2scp
is assigned a device attribute to represent the attached devices.

Signed-off-by: Kishon Vijay Abraham I kis...@ti.com
Cc: Benoit Cousson b-cous...@ti.com
---
 arch/arm/mach-omap2/omap_hwmod_44xx_data.c |   21 +
 1 files changed, 21 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 249ff76..b5a91e8 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -19,6 +19,7 @@
  */
 
 #include linux/io.h
+#include linux/platform_data/omap_ocp2scp.h
 
 #include plat/omap_hwmod.h
 #include plat/cpu.h
@@ -2499,6 +2500,25 @@ static struct omap_hwmod_class 
omap44xx_ocp2scp_hwmod_class = {
.name   = ocp2scp,
 };
 
+/* ocp2scp dev_attr */
+static struct resource omap44xx_usb_phy_and_pll_addrs[] = {
+   {
+   .name   = usb_phy,
+   .start  = 0x4a0ad080,
+   .end= 0x4a0ae000,
+   .flags  = IORESOURCE_MEM,
+   },
+   { }
+};
+
+static struct omap_ocp2scp_dev ocp2scp_dev_attr[] = {
+   {
+   .drv_name   = omap-usb2,
+   .res= omap44xx_usb_phy_and_pll_addrs,
+   },
+   { }
+};
+
 /* ocp2scp_usb_phy */
 static struct omap_hwmod_opt_clk ocp2scp_usb_phy_opt_clks[] = {
{ .role = phy_48m, .clk = ocp2scp_usb_phy_phy_48m },
@@ -2516,6 +2536,7 @@ static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod = 
{
.modulemode   = MODULEMODE_HWCTRL,
},
},
+   .dev_attr   = ocp2scp_dev_attr,
.opt_clks   = ocp2scp_usb_phy_opt_clks,
.opt_clks_cnt   = ARRAY_SIZE(ocp2scp_usb_phy_opt_clks),
 };
-- 
1.7.5.4

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


[RFC PATCH 3/5] drivers: misc: omap: add a new driver for ocp2scp

2012-05-30 Thread Kishon Vijay Abraham I
Adds a new driver _ocp2scp_. This driver takes the responsibility of creating
all the devices that is connected to OCP2SCP. In the case of OMAP4, USB2PHY
is connected to ocp2scp.

Signed-off-by: Kishon Vijay Abraham I kis...@ti.com
---
 drivers/misc/Kconfig   |8 ++
 drivers/misc/Makefile  |1 +
 drivers/misc/omap-ocp2scp.c|  135 
 include/linux/platform_data/omap_ocp2scp.h |   31 +++
 4 files changed, 175 insertions(+), 0 deletions(-)
 create mode 100644 drivers/misc/omap-ocp2scp.c
 create mode 100644 include/linux/platform_data/omap_ocp2scp.h

diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
index 2661f6e..c70aa15 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -508,6 +508,14 @@ config USB_SWITCH_FSA9480
  stereo and mono audio, video, microphone and UART data to use
  a common connector port.
 
+config OMAP_OCP2SCP
+   tristate OMAP OCP2SCP DRIVER
+   help
+ Driver to enable ocp2scp module which transforms ocp interface
+ protocol to scp protocol. In OMAP4, USB PHY is connected via
+ OCP2SCP and in OMAP5, both USB PHY and SATA PHY is connected via
+ OCP2SCP.
+
 source drivers/misc/c2port/Kconfig
 source drivers/misc/eeprom/Kconfig
 source drivers/misc/cb710/Kconfig
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
index 456972f..4d7c8ce 100644
--- a/drivers/misc/Makefile
+++ b/drivers/misc/Makefile
@@ -50,4 +50,5 @@ obj-y += lis3lv02d/
 obj-y  += carma/
 obj-$(CONFIG_USB_SWITCH_FSA9480) += fsa9480.o
 obj-$(CONFIG_ALTERA_STAPL) +=altera-stapl/
+obj-$(CONFIG_OMAP_OCP2SCP) += omap-ocp2scp.o
 obj-$(CONFIG_INTEL_MEI)+= mei/
diff --git a/drivers/misc/omap-ocp2scp.c b/drivers/misc/omap-ocp2scp.c
new file mode 100644
index 000..c53b9f4
--- /dev/null
+++ b/drivers/misc/omap-ocp2scp.c
@@ -0,0 +1,135 @@
+/*
+ * omap-ocp2scp.c - transform ocp interface protocol to scp protocol
+ *
+ * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Author: Kishon Vijay Abraham I kis...@ti.com
+ *
+ * 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.
+ *
+ */
+
+#include linux/module.h
+#include linux/platform_device.h
+#include linux/err.h
+#include linux/pm_runtime.h
+#include linux/platform_data/omap_ocp2scp.h
+
+/**
+ * _count_resources - count for the number of resources
+ * @res: struct resource *
+ *
+ * Count and return the number of resources populated for the device that is
+ * connected to ocp2scp.
+ */
+static unsigned _count_resources(struct resource *res)
+{
+   int cnt = 0;
+
+   while (res-start != res-end) {
+   cnt++;
+   res++;
+   }
+
+   return cnt;
+}
+
+static int ocp2scp_remove_devices(struct device *dev, void *c)
+{
+   struct platform_device *pdev = to_platform_device(dev);
+
+   platform_device_unregister(pdev);
+
+   return 0;
+}
+
+static int __devinit omap_ocp2scp_probe(struct platform_device *pdev)
+{
+   int ret;
+   unsignedres_cnt, i;
+   struct platform_device  *pdev_child;
+   struct omap_ocp2scp_platform_data   *pdata;
+   struct omap_ocp2scp_dev *dev;
+
+   pdata = pdev-dev.platform_data;
+   if (!pdata) {
+   dev_err(pdev-dev, OCP2SCP initialized without plat data\n);
+   return -EINVAL;
+   }
+
+   for (i = 0, dev = *pdata-devices; i  pdata-dev_cnt; i++, dev++) {
+   res_cnt = _count_resources(dev-res);
+
+   pdev_child = platform_device_alloc(dev-drv_name, -1);
+   if (!pdev_child) {
+   dev_err(pdev-dev, failed to allocate memory for 
ocp2scp child\n);
+   return -ENOMEM;
+   }
+
+   ret = platform_device_add_resources(pdev_child, dev-res,
+   res_cnt);
+   if (ret) {
+   dev_err(pdev-dev, failed to add resources for 
ocp2scp child\n);
+   goto err0;
+   }
+
+   pdev_child-dev.parent  = pdev-dev;
+
+   ret = platform_device_add(pdev_child);
+   if (ret) {
+   dev_err(pdev-dev, failed to register ocp2scp child 
device\n);
+   goto err0;
+   }
+

[RFC PATCH 2/5] arm: omap: remove ocp2scp_usb_phy_ick clock node

2012-05-30 Thread Kishon Vijay Abraham I
ocp2scp_usb_phy_ick clock node was a fake clock node created
to control MODULEMODE of ocp2scp. Since the hwmod for ocp2scp is now added
(which can be used to control MODULEMODE) this clock node is removed.

Cc: Benoit Cousson b-cous...@ti.com
Signed-off-by: Kishon Vijay Abraham I kis...@ti.com
---
 arch/arm/mach-omap2/clock44xx_data.c |   11 ---
 1 files changed, 0 insertions(+), 11 deletions(-)

diff --git a/arch/arm/mach-omap2/clock44xx_data.c 
b/arch/arm/mach-omap2/clock44xx_data.c
index 2172f66..3e2cccf 100644
--- a/arch/arm/mach-omap2/clock44xx_data.c
+++ b/arch/arm/mach-omap2/clock44xx_data.c
@@ -2132,16 +2132,6 @@ static struct clk ocp2scp_usb_phy_phy_48m = {
.recalc = followparent_recalc,
 };
 
-static struct clk ocp2scp_usb_phy_ick = {
-   .name   = ocp2scp_usb_phy_ick,
-   .ops= clkops_omap2_dflt,
-   .enable_reg = OMAP4430_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL,
-   .enable_bit = OMAP4430_MODULEMODE_HWCTRL,
-   .clkdm_name = l3_init_clkdm,
-   .parent = l4_div_ck,
-   .recalc = followparent_recalc,
-};
-
 static struct clk ocp_wp_noc_ick = {
.name   = ocp_wp_noc_ick,
.ops= clkops_omap2_dflt,
@@ -3277,7 +3267,6 @@ static struct omap_clk omap44xx_clks[] = {
CLK(NULL,   mmc4_fck, mmc4_fck,  
CK_443X),
CLK(NULL,   mmc5_fck, mmc5_fck,  
CK_443X),
CLK(NULL,   ocp2scp_usb_phy_phy_48m,  
ocp2scp_usb_phy_phy_48m,   CK_443X),
-   CLK(NULL,   ocp2scp_usb_phy_ick,  ocp2scp_usb_phy_ick,   
CK_443X),
CLK(NULL,   ocp_wp_noc_ick,   ocp_wp_noc_ick,
CK_443X),
CLK(omap_rng, ick,  rng_ick,   
CK_443X),
CLK(NULL,   sha2md5_fck,  sha2md5_fck,   
CK_443X),
-- 
1.7.5.4

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


Re: [PATCH 1/2] remoteproc: maintain a generic child device for each rproc

2012-05-30 Thread Ohad Ben-Cohen
Hi Stephen,

As always - thanks for your review!

On Wed, May 30, 2012 at 11:36 AM, Stephen Boyd sb...@codeaurora.org wrote:
 It looks like remoteproc0, remoteproc1, etc. is what's used.

Thanks, I'll update the commit log.

 One complaint I've gotten is that the error messages are essentially
 useless now. I believe there are some ongoing discussions on lkml to fix
 this by traversing the device hierarchy to find the real device but
 the hard part is finding the real device.

You probably refer to the discussions around the input subsystem's pull request.

I was thinking about that too when creating this patch, and it looks
like whatever Greg will come up with on that matter will benefit us
too. So taking that into account, it might make more sense to do stick
with the virtual device rather than use the real one here (we'll end
up having more information in the long run).

 +/* Unique numbering for remoteproc devices */
 +static unsigned int dev_index;
 +

 Hm... perhaps use that ida stuff instead of a raw integer?

That one got me thinking.

The immediate instinct is to do want to have a fully dynamic and
recyclable enumeration method, like ida provides.

But if you think of it, a mere integer have a strong advantage here:
the fact that the indices it provides don't recycle so fast is a plus,
because if a device was removed and recreated (or just removed and
another one then shows up), you get different indices. So a quick
glimpse at the logs is enough to tell that a new device was created.

But adding a spin lock to make this thread safe takes the simplicity
charm away. So in that respect, using an ida is much more attractive.

 I'm not clear on busses versus classes.

I think that busses is a whole lot more complex beast. Probably the
main indication we want one is when we need to match drivers to
devices.

In this case, I was more wondering between using a class to a device type.

 I recall seeing a thread where
 someone said classes were on the way out and shouldn't be used but I
 can't find it anymore.

I also remembered a similar discussion at a plumbers mini-conf about
2-3 years ago too, so I looked at device_type as an alternative to
class. The former looks somewhat simpler, but I couldn't find any
major advantage for using one over the other, and both seem to be in
use by many subsystems.

 Should we use classes for devices that will never
 have a matching driver?

It's not strictly required, but in case we want to provide these
devices some common behavior (and in our case we want them all to have
the same release handler, and very soon, the same PM handlers, too),
then a class (or a type) is helpful.

It looks like moving from a class to a type is quite trivial, in case
classes do eventually go away (or an advantage of using the latter
shows up), but I'm not aware of any other viable alternative for us
other than class/type.

 +     /* Assign a unique device index and name */
 +     rproc-index = dev_index++;
 +     dev_set_name(rproc-dev, remoteproc%d, rproc-index);
 +

 This doesn't look thread safe. ida would fix this (ida_simple_get/remove
 looks like what you want).

Yes, that's a good point, and will probably win this integer vs. ida case.

 @@ -391,7 +392,7 @@ struct rproc {
       const char *firmware;
       void *priv;
       const struct rproc_ops *ops;
 -     struct device *dev;
 +     struct device dev;

 I'm not sure if the kernel-doc for this field is accurate anymore. Is it
 an 'underlying device' still?

It's not, thanks for pointing it out!

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


Re: [RFC PATCH 11/11] ARM: DT: Add support to system control module for OMAP4

2012-05-30 Thread Cousson, Benoit

On 5/30/2012 12:42 PM, Eduardo Valentin wrote:

Hello,

On Wed, May 30, 2012 at 12:22:49PM +0200, Cousson Benoit wrote:

On 5/30/2012 12:17 PM, Konstantin Baydarov wrote:

   Hi.
On 05/30/2012 01:26 PM, Cousson, Benoit wrote:

On 5/30/2012 11:05 AM, Konstantin Baydarov wrote:

On 05/30/2012 12:38 PM, Cousson, Benoit wrote:

On 5/29/2012 11:49 AM, Konstantin Baydarov wrote:

Hi, Eduardo.

On 05/25/2012 12:26 PM, Eduardo Valentin wrote:

This patch add device tree entries on OMAP4 based boards for
System Control Module (SCM).


...


I believe that CPU-specific bandgap definition should be moved to
bard specific dts.


Mmm, why, since it is CPU specific and not board specific. I has to
be in the SoC file.

Speaking about omap4430 - omap4430 bandgap differs from omap4460, so
if omap4430 bandgap support will be added to omap-bandgap driver the
version of bandgap should specified in dts file. omap4.dtsi is a
common for omap4 boards, that is why I'm suggesting to move bandgap
description to probably board specific file.


OK, I got your point, but in that case we could potentially define a 
omap4460.dtsi file.


Another solution is to
determine bandgap type in driver probe function, but in that case
ti,omap4460-bandgap in omap4.dtsi should be replaced to
ti,omap4-bandgap.


Yes, this is the best solution, but that assume that we can identify the 
control module version from the HW, which is not necessarily true :-(

The IP_REVISION (offset = 0) value are unfortunately not documented, so we 
should read it to check if they are different from omap4430 and 4460.

The bitfield layout in that register is:

IP_REV_MAJOR: 8..10
IP_REV_CUSTOM: 6..7
IP_REV_MINOR: 0..5


I have the weird deja vu feeling...


I know :-)


The DT entry I sent, I already knew it would cause troubles :-)
Having it per board it would be really a PITA. Image that every
body doing a 4430 board needs to define a BG entry...
That would work, but still do we want this?


No, in fact I do not want to do that if we can avoid it.


Benoit, I guess you should know my option by now.
Ideally we should rely on revision register to decide what to do in the driver.
And as we discussed, looks like for BG this is somewhat non-existing.


Oops, sorry I was thinking about the SCM revision :-(

The register seems to be there with the layout detailed before. I just 
do not have a clue about the value we should expect. That's why we have 
to read it on both 4430 and 4460 to check if some bits are different.



If we go with the SCM revision register, what do we do if the BG goes away from 
SCM?


Yeah, good point.
But, if at some point the BG becomes a real IP with an OCP port, then we 
will have a TI wrapper on top of it with the proper revision register... 
at least in theory :-)



If we go with ti,omap4-bandgap, we still need a way to say if it is 4430, 
4460 or 4470.


Yeah, so we should check if at least that SCM revision field is meaningful.


There are configuration / settings specific for each. Not only on bandgap,
but also wrt to sensor location and hotspot extrapolation rules.


Assuming the SCM version is usable we can extract from that some SW 
revision for each sub IP.
But it is still not clear how the children will be aware of the parent 
revision :-(

Exported a get_scm_revision is doable potentially.


Because we lack a revision register for bandgap, one way to go is to have still 
the
revisioning on the same way: ti,omap-bandgap, but having a omap.dtsi
per omap revision. But do we want to this only due to bandgap?
BTW, is it only BG which is suffering of this issue?


Mmm, probably not, that being said, SCM is probably the worst IP we have 
on OMAP :-)


Regards,
Benoit



Probably, cpu_is_omap443x() and cpu_is_omap446x() can be used in bandgap driver 
probe function. Actually many drivers use cpu_is_omap*():



No please! Let's not use that stuff...



No, we cannot, we are in the process of getting rid of that.
A driver should only focus on the IP version in theory. The CPU
version is not the proper way of getting that. It will make the
driver not scalable at all for future OMAP revision.


drivers/mfd/omap-usb-host.c
drivers/mfd/twl-core.c


Yeah, these are the ones that still need to be fixed...


agreed with Benoit here.



Regards,
Benoit


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


Re: [PATCH 2/2] remoteproc: remove the now-redundant kref

2012-05-30 Thread Ohad Ben-Cohen
On Wed, May 30, 2012 at 11:42 AM, Stephen Boyd sb...@codeaurora.org wrote:
 I was hoping we could use class_for_each_device() and
 class_find_device() to replace all this code. Then we wouldn't need all
 this klist stuff that the class is taking care of already.

Awesome! This really is worth a shot.

 +/**
 + * rproc_class_release() - release a remote processor instance
 + * @dev: the rproc's device
 + *
 + * This function should _never_ be called directly.
 + *
 + * It will be called by the driver core when no one holds a valid pointer
 + * to @dev anymore.
 + */

 Why is this added now and not in the previous patch?

Hmm, probably because it was copied from rproc_release, which was
killed in this patch. I can probably shift it to the first patch since
I'm anyway doing some changes.

 -     /* the rproc will only be released after its refcount drops to zero */
 -     kref_put(rproc-refcount, rproc_release);
 +     /* unroll rproc_alloc. TODO: we may want to let the users do that */
 +     put_device(rproc-dev);

 Yes I think we want rproc_free() to actually call put_device() the last
 time and free the resources.

Yeah that was one of the options I considered.

In general, we have three options here:
1. Remove this last put_device invocation, and require users to call
rproc_free() even after they call rproc_unregister().
2. Let rproc_unregister() still do this, by calling rproc_free().
3. Let rproc_unregister() still do this, by invoking put_device().

I think that (1) looks better since it makes the interface symmetric
and straight forward.

(2) and (3) may be simper because users only need to call
rproc_unregister and that's it.

I eventually decided against (1) because I was concerned it will only
confuse users at this point.

But if you think that (1) is nicer too then maybe we should go ahead
and do that change.

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


[RFC PATCH 3/3] arm: omap: phy: remove unused functions from omap-phy-internal.c

2012-05-30 Thread Kishon Vijay Abraham I
All the unnessary functions in omap-phy-internal is removed.
These functionality are now handled by omap-usb2 phy driver.

Cc: Felipe Balbi ba...@ti.com
Signed-off-by: Kishon Vijay Abraham I kis...@ti.com
---
 arch/arm/mach-omap2/omap_phy_internal.c |  138 ---
 arch/arm/mach-omap2/twl-common.c|5 -
 2 files changed, 0 insertions(+), 143 deletions(-)

diff --git a/arch/arm/mach-omap2/omap_phy_internal.c 
b/arch/arm/mach-omap2/omap_phy_internal.c
index b2c9253..9a9e960 100644
--- a/arch/arm/mach-omap2/omap_phy_internal.c
+++ b/arch/arm/mach-omap2/omap_phy_internal.c
@@ -31,144 +31,6 @@
 #include plat/usb.h
 #include mach/control.h
 
-/* OMAP control module register for UTMI PHY */
-#define CONTROL_DEV_CONF   0x300
-#define PHY_PD 0x1
-
-#define USBOTGHS_CONTROL   0x33c
-#defineAVALID  BIT(0)
-#defineBVALID  BIT(1)
-#defineVBUSVALID   BIT(2)
-#defineSESSEND BIT(3)
-#defineIDDIG   BIT(4)
-
-static struct clk *phyclk, *clk48m, *clk32k;
-static void __iomem *ctrl_base;
-static int usbotghs_control;
-
-int omap4430_phy_init(struct device *dev)
-{
-   ctrl_base = ioremap(OMAP443X_SCM_BASE, SZ_1K);
-   if (!ctrl_base) {
-   pr_err(control module ioremap failed\n);
-   return -ENOMEM;
-   }
-   /* Power down the phy */
-   __raw_writel(PHY_PD, ctrl_base + CONTROL_DEV_CONF);
-
-   if (!dev) {
-   iounmap(ctrl_base);
-   return 0;
-   }
-
-   phyclk = clk_get(dev, ocp2scp_usb_phy_ick);
-   if (IS_ERR(phyclk)) {
-   dev_err(dev, cannot clk_get ocp2scp_usb_phy_ick\n);
-   iounmap(ctrl_base);
-   return PTR_ERR(phyclk);
-   }
-
-   clk48m = clk_get(dev, ocp2scp_usb_phy_phy_48m);
-   if (IS_ERR(clk48m)) {
-   dev_err(dev, cannot clk_get ocp2scp_usb_phy_phy_48m\n);
-   clk_put(phyclk);
-   iounmap(ctrl_base);
-   return PTR_ERR(clk48m);
-   }
-
-   clk32k = clk_get(dev, usb_phy_cm_clk32k);
-   if (IS_ERR(clk32k)) {
-   dev_err(dev, cannot clk_get usb_phy_cm_clk32k\n);
-   clk_put(phyclk);
-   clk_put(clk48m);
-   iounmap(ctrl_base);
-   return PTR_ERR(clk32k);
-   }
-   return 0;
-}
-
-int omap4430_phy_set_clk(struct device *dev, int on)
-{
-   static int state;
-
-   if (on  !state) {
-   /* Enable the phy clocks */
-   clk_enable(phyclk);
-   clk_enable(clk48m);
-   clk_enable(clk32k);
-   state = 1;
-   } else if (state) {
-   /* Disable the phy clocks */
-   clk_disable(phyclk);
-   clk_disable(clk48m);
-   clk_disable(clk32k);
-   state = 0;
-   }
-   return 0;
-}
-
-int omap4430_phy_power(struct device *dev, int ID, int on)
-{
-   if (on) {
-   if (ID)
-   /* enable VBUS valid, IDDIG groung */
-   __raw_writel(AVALID | VBUSVALID, ctrl_base +
-   USBOTGHS_CONTROL);
-   else
-   /*
-* Enable VBUS Valid, AValid and IDDIG
-* high impedance
-*/
-   __raw_writel(IDDIG | AVALID | VBUSVALID,
-   ctrl_base + USBOTGHS_CONTROL);
-   } else {
-   /* Enable session END and IDIG to high impedance. */
-   __raw_writel(SESSEND | IDDIG, ctrl_base +
-   USBOTGHS_CONTROL);
-   }
-   return 0;
-}
-
-int omap4430_phy_suspend(struct device *dev, int suspend)
-{
-   if (suspend) {
-   /* Disable the clocks */
-   omap4430_phy_set_clk(dev, 0);
-   /* Power down the phy */
-   __raw_writel(PHY_PD, ctrl_base + CONTROL_DEV_CONF);
-
-   /* save the context */
-   usbotghs_control = __raw_readl(ctrl_base + USBOTGHS_CONTROL);
-   } else {
-   /* Enable the internel phy clcoks */
-   omap4430_phy_set_clk(dev, 1);
-   /* power on the phy */
-   if (__raw_readl(ctrl_base + CONTROL_DEV_CONF)  PHY_PD) {
-   __raw_writel(~PHY_PD, ctrl_base + CONTROL_DEV_CONF);
-   mdelay(200);
-   }
-
-   /* restore the context */
-   __raw_writel(usbotghs_control, ctrl_base + USBOTGHS_CONTROL);
-   }
-
-   return 0;
-}
-
-int omap4430_phy_exit(struct device *dev)
-{
-   if (ctrl_base)
-   iounmap(ctrl_base);
-   if (phyclk)
-   clk_put(phyclk);
-   if 

[RFC PATCH 1/3] drivers: usb: otg: add a new driver for omap usb2 phy

2012-05-30 Thread Kishon Vijay Abraham I
All phy related programming like enabling/disabling the clocks, powering
on/off the phy is taken care of by this driver. It is also used for OTG
related functionality like srp.

Cc: Felipe Balbi ba...@ti.com
Signed-off-by: Kishon Vijay Abraham I kis...@ti.com
---
 drivers/usb/otg/Kconfig   |   17 ++-
 drivers/usb/otg/Makefile  |1 +
 drivers/usb/otg/omap-usb2.c   |  232 +
 include/linux/usb/omap_usb.h  |   47 
 include/linux/usb/phy_companion.h |   34 ++
 5 files changed, 327 insertions(+), 4 deletions(-)
 create mode 100644 drivers/usb/otg/omap-usb2.c
 create mode 100644 include/linux/usb/omap_usb.h
 create mode 100644 include/linux/usb/phy_companion.h

diff --git a/drivers/usb/otg/Kconfig b/drivers/usb/otg/Kconfig
index e2840f1..3264c0d 100644
--- a/drivers/usb/otg/Kconfig
+++ b/drivers/usb/otg/Kconfig
@@ -73,10 +73,8 @@ config TWL6030_USB
help
  Enable this to support the USB OTG transceiver on TWL6030
  family chips. This TWL6030 transceiver has the VBUS and ID GND
- and OTG SRP events capabilities. For all other transceiver 
functionality
- UTMI PHY is embedded in OMAP4430. The internal PHY configurations APIs
- are hooked to this driver through platform_data structure.
- The definition of internal PHY APIs are in the mach-omap2 layer.
+  and OTG SRP events capabilities. For all other transceiver
+ functionality UTMI PHY is embedded in OMAP4430.
 
 config OMAP4_USB_PHY
tristate Texas Instruments OMAP4+ USB pin control driver
@@ -91,6 +89,17 @@ config OMAP4_USB_PHY
  performing the above mentioned configuration, API's are added in
  by this children of the control module driver.
 
+config OMAP_USB2
+   tristate OMAP USB2 PHY Driver
+   depends on OMAP_OCP2SCP
+   depends on OMAP4_USB_PHY
+   select USB_OTG_UTILS
+   help
+ Enable this to support the transceiver that is part of SOC. This
+ driver takes care of all the PHY functionality apart from comparator.
+ The USB OTG controller communicates with the comparator using this
+ driver.
+
 config NOP_USB_XCEIV
tristate NOP USB Transceiver Driver
select USB_OTG_UTILS
diff --git a/drivers/usb/otg/Makefile b/drivers/usb/otg/Makefile
index 60c8c83..2f02912 100644
--- a/drivers/usb/otg/Makefile
+++ b/drivers/usb/otg/Makefile
@@ -14,6 +14,7 @@ obj-$(CONFIG_ISP1301_OMAP)+= isp1301_omap.o
 obj-$(CONFIG_TWL4030_USB)  += twl4030-usb.o
 obj-$(CONFIG_TWL6030_USB)  += twl6030-usb.o
 obj-$(CONFIG_OMAP4_USB_PHY)+= omap4-usb-phy.o
+obj-$(CONFIG_OMAP_USB2)+= omap-usb2.o
 obj-$(CONFIG_NOP_USB_XCEIV)+= nop-usb-xceiv.o
 obj-$(CONFIG_USB_ULPI) += ulpi.o
 obj-$(CONFIG_USB_ULPI_VIEWPORT)+= ulpi_viewport.o
diff --git a/drivers/usb/otg/omap-usb2.c b/drivers/usb/otg/omap-usb2.c
new file mode 100644
index 000..ccd74b6
--- /dev/null
+++ b/drivers/usb/otg/omap-usb2.c
@@ -0,0 +1,232 @@
+/*
+ * omap-usb2.c - USB PHY, talking to musb controller in OMAP.
+ *
+ * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * Author: Kishon Vijay Abraham I kis...@ti.com
+ *
+ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+#include linux/module.h
+#include linux/platform_device.h
+#include linux/slab.h
+#include linux/of.h
+#include linux/usb/omap_usb.h
+#include linux/usb/phy_companion.h
+#include linux/clk.h
+#include linux/err.h
+#include linux/pm_runtime.h
+#include linux/delay.h
+#include linux/mfd/omap_control.h
+#include linux/usb/omap4_usb_phy.h
+
+/**
+ * omap_usb2_set_comparator - links the comparator present in the sytem with
+ * this phy
+ * @comparator - the companion phy(comparator) for this phy
+ *
+ * The phy companion driver should call this API passing the phy_companion
+ * filled with set_vbus and start_srp to be used by usb phy.
+ *
+ * For use by phy companion driver
+ */
+void omap_usb2_set_comparator(struct phy_companion *comparator)
+{
+   struct usb_phy  *x = usb_get_phy(USB_PHY_TYPE_USB2);
+   struct omap_usb *phy = phy_to_omapusb(x);
+
+   phy-comparator = comparator;
+}
+EXPORT_SYMBOL_GPL(omap_usb2_set_comparator);
+
+static int omap_usb_set_vbus(struct usb_otg *otg, bool enabled)
+{
+ 

[RFC PATCH 0/3] usb: musb: add new phy driver

2012-05-30 Thread Kishon Vijay Abraham I
This series adds a new usb2 phy driver. The device for which is created
by the ocp2scp driver. This also uses control module driver.

This series converts twl6030 as a comparator driver (previously it was
also the phy driver) and makes use of omap-usb2 as the phy driver.

Instead of notification mechanism by power chip to omap glue to pass detection
of any events, an export API has been added in omap glue. Both twl4030 and
twl6030 will call to this API to pass any event. (twl6030 is used in omap4 and
twl4030 is used in omap3).

This series depends on:
*[RFC PATCH 00/11] OMAP System Control Module* patch series
However System Control Module driver has only dt support, so wouldn't
be able to test this patch series. However I'll adapt omap usb2 phy
driver and musb driver for dt and send it asap to the list.

This series also depends on:
*[PATCH v3 0/3] usb: multi-phy support* patch series
*[RFC PATCH 0/5] omap: add ocp2scp as a misc driver* patch series

Compile tested only.

Kishon Vijay Abraham I (3):
  drivers: usb: otg: add a new driver for omap usb2 phy
  usb: musb: omap glue: use omap-usb2 as the phy driver
  arm: omap: phy: remove unused functions from omap-phy-internal.c

 arch/arm/mach-omap2/omap_phy_internal.c |  138 --
 arch/arm/mach-omap2/twl-common.c|5 -
 arch/arm/mach-omap2/usb-musb.c  |3 -
 drivers/usb/musb/musb_core.h|1 -
 drivers/usb/musb/omap2430.c |  150 ++--
 drivers/usb/otg/Kconfig |   17 ++-
 drivers/usb/otg/Makefile|1 +
 drivers/usb/otg/omap-usb2.c |  232 +++
 drivers/usb/otg/twl4030-usb.c   |   40 ++
 drivers/usb/otg/twl6030-usb.c   |  172 +--
 include/linux/usb/musb-omap.h   |   31 
 include/linux/usb/omap_usb.h|   47 ++
 include/linux/usb/phy_companion.h   |   34 +
 13 files changed, 514 insertions(+), 357 deletions(-)
 create mode 100644 drivers/usb/otg/omap-usb2.c
 create mode 100644 include/linux/usb/musb-omap.h
 create mode 100644 include/linux/usb/omap_usb.h
 create mode 100644 include/linux/usb/phy_companion.h

-- 
1.7.5.4

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


Re: [PATCH 1/3] arm/dts: add wdt node for omap3 and omap4

2012-05-30 Thread Jon Hunter

On 05/29/2012 10:19 PM, Xiao Jiang wrote:
 Jon Hunter wrote:
 On 05/25/2012 05:42 AM, jgq...@gmail.com wrote:
  
 From: Xiao Jiang jgq...@gmail.com

 Add wdt node to support dt.

 Signed-off-by: Xiao Jiang jgq...@gmail.com
 ---
  arch/arm/boot/dts/omap3.dtsi |5 +
  arch/arm/boot/dts/omap4.dtsi |5 +
  2 files changed, 10 insertions(+), 0 deletions(-)

 diff --git a/arch/arm/boot/dts/omap3.dtsi b/arch/arm/boot/dts/omap3.dtsi
 index 99474fa..039df5c 100644
 --- a/arch/arm/boot/dts/omap3.dtsi
 +++ b/arch/arm/boot/dts/omap3.dtsi
 @@ -215,5 +215,10 @@
  compatible = ti,omap3-hsmmc;
  ti,hwmods = mmc3;
  };
 +
 +wdt: wdt@48314000{
 

 Minor comment, may be call this wdt2 as this is watchdog timer 2. Also
 ass a space between the address and the {.

   
 Ok, will change it to wdt2: wdt@48314000 {.
 +compatible = ti,omap3-wdt;
 +ti,hwmods = wd_timer2;
 +};
  };
  };
 diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi
 index 359c497..d01403d 100644
 --- a/arch/arm/boot/dts/omap4.dtsi
 +++ b/arch/arm/boot/dts/omap4.dtsi
 @@ -272,5 +272,10 @@
  ti,hwmods = mmc5;
  ti,needs-special-reset;
  };
 +
 +wdt: wdt@4a314000{
 

 Same as above.

   
 Ditto.
 +compatible = ti,omap4-wdt;
 +ti,hwmods = wd_timer2;
 +};
  };
  };
 

 Also we should add some documentation to describe the binding. Here it
 is very simple, but nonetheless we should have something as we have for
 gpio [1].

   
 Thanks for reminding, how about below patch?
 
 diff --git a/Documentation/devicetree/bindings/watchdog/omap-wdt.txt
 b/Documentation/devicetree/bindings/watchdog/omap-wdt.txt
 new file mode 100644
 index 000..4272d06
 --- /dev/null
 +++ b/Documentation/devicetree/bindings/watchdog/omap-wdt.txt
 @@ -0,0 +1,15 @@
 +TI Watchdog Timer (WDT) Controller for OMAP
 +
 +Required properties:
 +- compatible:
 +  - ti,omap2-wdt for OMAP2
 +  - ti,omap3-wdt for OMAP3
 +  - ti,omap4-wdt for OMAP4
 +- ti,hwmods: Name of the hwmod associated to the WDT
 +
 +Examples:
 +
 +wdt2: wdt@73f98000 {
 +   compatible = ti,omap4-wdt;
 +   ti,hwmods = wd_timer2;
 +};

Yes looks good. Thanks! Minor nit-pick in the example I would just copy
the omap4 node completely with the actual omap4 address :-)

Cheers
Jon
--
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 09/19] ARM: OMAP4: PM: add errata support

2012-05-30 Thread Menon, Nishanth
On Wed, May 30, 2012 at 3:32 AM, Tero Kristo t-kri...@ti.com wrote:
 On Tue, 2012-05-29 at 15:10 -0500, Menon, Nishanth wrote:
 On Mon, May 14, 2012 at 5:18 AM, Tero Kristo t-kri...@ti.com wrote:
  Added similar PM errata flag support as omap3 has. A few errata flags
  will be added in subsequent patches.

 Considering that we might have erratas for future SoCs as well,
 should'nt we just
 set up a common errata flag for all SoCs and since we have i123 numbers, 
 would
 it help being able to reuse errata flags cross SoC generations (if we need 
 to)?

 Not sure... how quickly do we run out of bits that way? :) Also, at
 least pm34xx / pm44xx erratas don't have anything in common. We can
 probably re-use pm44xx erratas for omap5 though.

 One annoyance is that, the OMAP4 erratas are going to have a number of
 ROM code erratas on them, which don't really have any public i123
 numbers available. .

Sounds good to me.

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


Re: [RFC PATCH 1/5] arm: omap: hwmod: make *phy_48m* as the main_clk of ocp2scp

2012-05-30 Thread Shilimkar, Santosh
On Wed, May 30, 2012 at 4:26 PM, Kishon Vijay Abraham I kis...@ti.com wrote:
 Made *ocp2scp_usb_phy_phy_48m* as the main_clk for ocp2scp.
 Since this ocp2scp module does not have any fck but does have a
 single opt_clock, it is added as the main_clk for ocp2scp.

 Signed-off-by: Kishon Vijay Abraham I kis...@ti.com
 ---


  arch/arm/mach-omap2/omap_hwmod_44xx_data.c |    1 +
  1 files changed, 1 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 950454a..249ff76 100644
 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
 +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
 @@ -2508,6 +2508,7 @@ static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod 
 = {
        .name           = ocp2scp_usb_phy,
        .class          = omap44xx_ocp2scp_hwmod_class,
        .clkdm_name     = l3_init_clkdm,
 +       .main_clk       = ocp2scp_usb_phy_phy_48m,
        .prcm = {
                .omap4 = {
                        .clkctrl_offs = 
 OMAP4_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL_OFFSET,
 --
 1.7.5.4

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

Minor ..
$subject
s/arm: omap: / ARM: OMAP

An maintain this naming consistency since one of
the patch in the series uses capital where as others
not
--
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 2/5] arm: omap: remove ocp2scp_usb_phy_ick clock node

2012-05-30 Thread Shilimkar, Santosh
On Wed, May 30, 2012 at 4:26 PM, Kishon Vijay Abraham I kis...@ti.com wrote:
 ocp2scp_usb_phy_ick clock node was a fake clock node created
 to control MODULEMODE of ocp2scp. Since the hwmod for ocp2scp is now added
 (which can be used to control MODULEMODE) this clock node is removed.

 Cc: Benoit Cousson b-cous...@ti.com
 Signed-off-by: Kishon Vijay Abraham I kis...@ti.com
 ---
  arch/arm/mach-omap2/clock44xx_data.c |   11 ---

Have you patched clock44xx_data.c manually or you have a patch for
the clock_data autogen script to generate it ?

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


Re: [RFC PATCH 3/5] drivers: misc: omap: add a new driver for ocp2scp

2012-05-30 Thread Shilimkar, Santosh
On Wed, May 30, 2012 at 4:26 PM, Kishon Vijay Abraham I kis...@ti.com wrote:
 Adds a new driver _ocp2scp_. This driver takes the responsibility of creating
 all the devices that is connected to OCP2SCP. In the case of OMAP4, USB2PHY
 is connected to ocp2scp.

 Signed-off-by: Kishon Vijay Abraham I kis...@ti.com
 ---
[...]

 +++ b/drivers/misc/omap-ocp2scp.c
 @@ -0,0 +1,135 @@
 +/*
 + * omap-ocp2scp.c - transform ocp interface protocol to scp protocol
 + *
 + * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com
s/2011/2012

[...]

 diff --git a/include/linux/platform_data/omap_ocp2scp.h 
 b/include/linux/platform_data/omap_ocp2scp.h
 new file mode 100644
 index 000..dcbbf2a
 --- /dev/null
 +++ b/include/linux/platform_data/omap_ocp2scp.h
 @@ -0,0 +1,31 @@
 +/*
 + * omap_ocp2scp.h -- ocp2scp header file
 + *
 + * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com
Dito.
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/3] watchdog: omap_wdt: add device tree support

2012-05-30 Thread Jon Hunter
Hi Benoit,

On 05/30/2012 02:54 AM, Cousson, Benoit wrote:
 On 5/30/2012 5:18 AM, Xiao Jiang wrote:
 Jon Hunter wrote:
 On 05/25/2012 05:42 AM, jgq...@gmail.com wrote:
 From: Xiao Jiang jgq...@gmail.com

 Add device table for omap_wdt to support dt.

 Signed-off-by: Xiao Jiang jgq...@gmail.com
 ---
 drivers/watchdog/omap_wdt.c | 8 
 1 files changed, 8 insertions(+), 0 deletions(-)

 diff --git a/drivers/watchdog/omap_wdt.c b/drivers/watchdog/omap_wdt.c
 index 8285d65..d98c615 100644
 --- a/drivers/watchdog/omap_wdt.c
 +++ b/drivers/watchdog/omap_wdt.c
 @@ -430,6 +430,13 @@ static int omap_wdt_resume(struct
 platform_device *pdev)
 #define omap_wdt_resume NULL
 #endif

 +static const struct of_device_id omap_wdt_of_match[] = {
 + { .compatible = ti,omap3-wdt, },
 + { .compatible = ti,omap4-wdt, },
 
 If there is no difference between the OMAP3 and the OMAP4 WDT IP, just
 add one entry ti,omap3-wdt. And then in the OMAP4 DTS you will just
 put : compatible = ti,omap3-wdt; or compatible =  ti,omap4-wdt,
 ti,omap3-wdt;

Hmmm ... comparing the omap3 and omap4 wdt registers there are some
differences. omap4 seems to have more registers than omap3. May be we
are not using these right now, but from a register perspective the wdt
in omap2, omap3 and omap4 appear to be slightly different. The revision
ID register on omap3 and omap4 have different values too.

I guess from a driver perspective there is no difference, but it seemed
to me that the IP is not completely the same.

 I'm still a little bit confused about the real need for the
 ti,omap4-wdt: entry, but it seems to be the way to do it in PPC.
 
 + {},
 +};
 +MODULE_DEVICE_TABLE(of, omap_wdt_of_match);
 +
 static struct platform_driver omap_wdt_driver = {
 .probe = omap_wdt_probe,
 .remove = __devexit_p(omap_wdt_remove),
 @@ -439,6 +446,7 @@ static struct platform_driver omap_wdt_driver = {
 .driver = {
 .owner = THIS_MODULE,
 .name = omap_wdt,
 + .of_match_table = omap_wdt_of_match,
 },
 };


 I think we need to add some code to the probe function that calls
 of_match_device() and ensures we find a match. For example ...

 if (of_have_populated_dt())
 if (!of_match_device(omap_wdt_of_match, pdev-dev))
 return -EINVAL;

 Will add it in v2, thanks for suggestion.
 
 No, in fact this is not needed. We need that mainly when several
 instances can match the same driver and thus we select the proper one
 using the of_match_device. Otherwise, just check is the device_node is
 there.
 
 In that case, the driver does not even care about any DT node so there
 is no need to add extra code for that. Keep it simple.

Ok. So are you saying get rid of the match table altogether? In other
words, drop this patch?

I agree that it does not really do anything today, but I did not know if
in the future you were planning to pass things like, register addresses,
via DT.

Cheers
Jon
--
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 1/3] drivers: usb: otg: add a new driver for omap usb2 phy

2012-05-30 Thread Shilimkar, Santosh
On Wed, May 30, 2012 at 8:04 PM, Kishon Vijay Abraham I kis...@ti.com wrote:
 All phy related programming like enabling/disabling the clocks, powering
 on/off the phy is taken care of by this driver. It is also used for OTG
 related functionality like srp.

 Cc: Felipe Balbi ba...@ti.com
 Signed-off-by: Kishon Vijay Abraham I kis...@ti.com
 ---
  drivers/usb/otg/Kconfig           |   17 ++-
  drivers/usb/otg/Makefile          |    1 +
  drivers/usb/otg/omap-usb2.c       |  232 
 +
  include/linux/usb/omap_usb.h      |   47 
  include/linux/usb/phy_companion.h |   34 ++
  5 files changed, 327 insertions(+), 4 deletions(-)
  create mode 100644 drivers/usb/otg/omap-usb2.c
  create mode 100644 include/linux/usb/omap_usb.h
  create mode 100644 include/linux/usb/phy_companion.h


[...]

 diff --git a/drivers/usb/otg/omap-usb2.c b/drivers/usb/otg/omap-usb2.c
 new file mode 100644
 index 000..ccd74b6
 --- /dev/null
 +++ b/drivers/usb/otg/omap-usb2.c
 @@ -0,0 +1,232 @@
 +/*
 + * omap-usb2.c - USB PHY, talking to musb controller in OMAP.
 + *
 + * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com
s/2011/2012
 + * This program is free software; you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
 + * the Free Software Foundation; either version 2 of the License, or
 + * (at your option) any later version.
 + *
 + * Author: Kishon Vijay Abraham I kis...@ti.com
 + *
 + * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
 + *
 + */
 +
 +#include linux/module.h
 +#include linux/platform_device.h
 +#include linux/slab.h
 +#include linux/of.h
 +#include linux/usb/omap_usb.h
 +#include linux/usb/phy_companion.h
 +#include linux/clk.h
 +#include linux/err.h
 +#include linux/pm_runtime.h
 +#include linux/delay.h
Do you need it ?

 +#include linux/mfd/omap_control.h
 +#include linux/usb/omap4_usb_phy.h
 +
 +/**
 + * omap_usb2_set_comparator - links the comparator present in the sytem with
 + *     this phy
 + * @comparator - the companion phy(comparator) for this phy
 + *
 + * The phy companion driver should call this API passing the phy_companion
 + * filled with set_vbus and start_srp to be used by usb phy.
 + *
 + * For use by phy companion driver
 + */
 +void omap_usb2_set_comparator(struct phy_companion *comparator)
 +{
 +       struct usb_phy  *x = usb_get_phy(USB_PHY_TYPE_USB2);
 +       struct omap_usb *phy = phy_to_omapusb(x);
 +
 +       phy-comparator = comparator;
 +}
 +EXPORT_SYMBOL_GPL(omap_usb2_set_comparator);
 +
 +static int omap_usb_set_vbus(struct usb_otg *otg, bool enabled)
 +{
 +       struct omap_usb *phy = phy_to_omapusb(otg-phy);
 +
 +       if (!phy-comparator)
 +               return -ENODEV;
 +
 +       return phy-comparator-set_vbus(phy-comparator, enabled);
 +}
 +
 +static int omap_usb_start_srp(struct usb_otg *otg)
 +{
 +       struct omap_usb *phy = phy_to_omapusb(otg-phy);
 +
 +       if (!phy-comparator)
 +               return -ENODEV;
 +
 +       return phy-comparator-start_srp(phy-comparator);
 +}
 +
 +static int omap_usb_set_host(struct usb_otg *otg, struct usb_bus *host)
 +{
 +       struct usb_phy  *phy = otg-phy;
 +
 +       otg-host = host;
 +       if (!host)
 +               phy-state = OTG_STATE_UNDEFINED;
 +
 +       return 0;
 +}
 +
 +static int omap_usb_set_peripheral(struct usb_otg *otg,
 +               struct usb_gadget *gadget)
 +{
 +       struct usb_phy  *phy = otg-phy;
 +
 +       otg-gadget = gadget;
 +       if (!gadget)
 +               phy-state = OTG_STATE_UNDEFINED;
 +
 +       return 0;
 +}
 +
 +static int omap_usb2_suspend(struct usb_phy *x, int suspend)
 +{
 +       struct omap_usb *phy = phy_to_omapusb(x);
 +
 +       if (suspend  !phy-is_suspended) {
 +               pm_runtime_put_sync(phy-dev);
 +               phy-is_suspended = 1;
 +       } else if (!suspend  phy-is_suspended) {
 +               pm_runtime_get_sync(phy-dev);
 +               phy-is_suspended = 0;
 +       }
 +
 +       return 0;
 +}
 +
 +static int __devinit omap_usb2_probe(struct platform_device *pdev)
 +{
 +       struct omap_usb                 *phy;
 +       struct usb_otg                  *otg;
 +
 +       phy = devm_kzalloc(pdev-dev, sizeof(*phy), GFP_KERNEL);
 +       if (!phy) {
 +               dev_err(pdev-dev, unable to allocate memory for USB2 
 PHY\n);
 +               return -ENOMEM;
 +       }
 +
 +       otg = devm_kzalloc(pdev-dev, sizeof(*otg), GFP_KERNEL);
 +       if (!otg) {
 +               dev_err(pdev-dev, unable to allocate memory for USB 
 

Re: [RFC PATCH 3/3] arm: omap: phy: remove unused functions from omap-phy-internal.c

2012-05-30 Thread Shilimkar, Santosh
On Wed, May 30, 2012 at 8:04 PM, Kishon Vijay Abraham I kis...@ti.com wrote:
 All the unnessary functions in omap-phy-internal is removed.
 These functionality are now handled by omap-usb2 phy driver.

Cool. One less item in platform code.
--
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 17/19] ARM: OMAP4: put cpu1 back to sleep if no wake request

2012-05-30 Thread Menon, Nishanth
On Mon, May 21, 2012 at 5:40 AM, Shilimkar, Santosh
santosh.shilim...@ti.com wrote:


 Not sure what you mean wakeup issue on GP device.

 IIUC, the issue is:
 Wakeup from device OFF, hardware releases the reset for both CPUs,
 This is special case and applicable only for device OFF. The reason
 CPU1 needs to be hold back, because the security SW is affined with
 CPU0 which needs to be up and running for any of the ROM code APIs
 to work. Like setting up SMP bit, AUX control etc. Without CPU0 booted,
 CPU1 won't be able to execute those ROM functions and hence won't be
 able to boot properly.

 I think the limitation is applicable to all OMAP4 devices as well as OMAP5
 devices.
yes, the stagger of CPU1 behind CPU0 has a few factors:
HS devices with an older PPA release has a bug where caches can be
messed up and GP devices
need slightly different WA. with the older PPA, we put CPU1 back to
OFF when we detect that CPU0 is not ready for action
you can find the details and documentation in the link below:
http://git.omapzoom.org/?p=kernel/omap.git;a=blob;f=arch/arm/mach-omap2/sleep44xx.S;h=0c28def8f644e9803564bb66c8cfe8c580898978;hb=p-android-omap-3.0#l342


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


Re: [RFC PATCH 2/5] arm: omap: remove ocp2scp_usb_phy_ick clock node

2012-05-30 Thread Cousson, Benoit

On 5/30/2012 4:51 PM, Shilimkar, Santosh wrote:

On Wed, May 30, 2012 at 4:26 PM, Kishon Vijay Abraham Ikis...@ti.com  wrote:

ocp2scp_usb_phy_ick clock node was a fake clock node created
to control MODULEMODE of ocp2scp. Since the hwmod for ocp2scp is now added
(which can be used to control MODULEMODE) this clock node is removed.

Cc: Benoit Coussonb-cous...@ti.com
Signed-off-by: Kishon Vijay Abraham Ikis...@ti.com
---
  arch/arm/mach-omap2/clock44xx_data.c |   11 ---


Have you patched clock44xx_data.c manually or you have a patch for
the clock_data autogen script to generate it ?


I have a series that will remove all these clock nodes. I should be able 
to post that soon.


Potentially at that time, Kishon might be able to drop that patch.

Regards,
Benoit

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


Re: [PATCH 3/3] watchdog: omap_wdt: add device tree support

2012-05-30 Thread Cousson, Benoit

Hi Jon,

On 5/30/2012 5:03 PM, Jon Hunter wrote:

Hi Benoit,

On 05/30/2012 02:54 AM, Cousson, Benoit wrote:

On 5/30/2012 5:18 AM, Xiao Jiang wrote:

Jon Hunter wrote:

On 05/25/2012 05:42 AM, jgq...@gmail.com wrote:

From: Xiao Jiangjgq...@gmail.com

Add device table for omap_wdt to support dt.

Signed-off-by: Xiao Jiangjgq...@gmail.com
---
drivers/watchdog/omap_wdt.c | 8 
1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/drivers/watchdog/omap_wdt.c b/drivers/watchdog/omap_wdt.c
index 8285d65..d98c615 100644
--- a/drivers/watchdog/omap_wdt.c
+++ b/drivers/watchdog/omap_wdt.c
@@ -430,6 +430,13 @@ static int omap_wdt_resume(struct
platform_device *pdev)
#define omap_wdt_resume NULL
#endif

+static const struct of_device_id omap_wdt_of_match[] = {
+ { .compatible = ti,omap3-wdt, },
+ { .compatible = ti,omap4-wdt, },


If there is no difference between the OMAP3 and the OMAP4 WDT IP, just
add one entry ti,omap3-wdt. And then in the OMAP4 DTS you will just
put : compatible = ti,omap3-wdt; or compatible =  ti,omap4-wdt,
ti,omap3-wdt;


Hmmm ... comparing the omap3 and omap4 wdt registers there are some
differences. omap4 seems to have more registers than omap3. May be we
are not using these right now, but from a register perspective the wdt
in omap2, omap3 and omap4 appear to be slightly different. The revision
ID register on omap3 and omap4 have different values too.

I guess from a driver perspective there is no difference, but it seemed
to me that the IP is not completely the same.


Well, in that case, and assuming that there is no proper HW_REVISION 
information to detect the IP difference, the proper compatible entries 
will indeed have to be used.





I'm still a little bit confused about the real need for the
ti,omap4-wdt: entry, but it seems to be the way to do it in PPC.


+ {},
+};
+MODULE_DEVICE_TABLE(of, omap_wdt_of_match);
+
static struct platform_driver omap_wdt_driver = {
.probe = omap_wdt_probe,
.remove = __devexit_p(omap_wdt_remove),
@@ -439,6 +446,7 @@ static struct platform_driver omap_wdt_driver = {
.driver = {
.owner = THIS_MODULE,
.name = omap_wdt,
+ .of_match_table = omap_wdt_of_match,
},
};



I think we need to add some code to the probe function that calls
of_match_device() and ensures we find a match. For example ...

if (of_have_populated_dt())
if (!of_match_device(omap_wdt_of_match,pdev-dev))
return -EINVAL;


Will add it in v2, thanks for suggestion.


No, in fact this is not needed. We need that mainly when several
instances can match the same driver and thus we select the proper one
using the of_match_device. Otherwise, just check is the device_node is
there.

In that case, the driver does not even care about any DT node so there
is no need to add extra code for that. Keep it simple.


Ok. So are you saying get rid of the match table altogether? In other
words, drop this patch?


No, the match table is used by the LDM to find the proper driver to be 
bound to a device. So we do need it. But we do not have to use the 
of_match_device if we do not want to get the entry in the device table.



I agree that it does not really do anything today, but I did not know if
in the future you were planning to pass things like, register addresses,
via DT.


Well, yes we will have to, otherwise people will keep complaining that 
our DTS sucks and are not compliant with the DTS standards :-)


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


Re: [PATCH 3/3] watchdog: omap_wdt: add device tree support

2012-05-30 Thread Jon Hunter
Hi Benoit,

On 05/30/2012 10:30 AM, Cousson, Benoit wrote:
 Hi Jon,
 
 On 5/30/2012 5:03 PM, Jon Hunter wrote:
 Hi Benoit,

 On 05/30/2012 02:54 AM, Cousson, Benoit wrote:
 On 5/30/2012 5:18 AM, Xiao Jiang wrote:
 Jon Hunter wrote:
 On 05/25/2012 05:42 AM, jgq...@gmail.com wrote:
 From: Xiao Jiangjgq...@gmail.com

 Add device table for omap_wdt to support dt.

 Signed-off-by: Xiao Jiangjgq...@gmail.com
 ---
 drivers/watchdog/omap_wdt.c | 8 
 1 files changed, 8 insertions(+), 0 deletions(-)

 diff --git a/drivers/watchdog/omap_wdt.c
 b/drivers/watchdog/omap_wdt.c
 index 8285d65..d98c615 100644
 --- a/drivers/watchdog/omap_wdt.c
 +++ b/drivers/watchdog/omap_wdt.c
 @@ -430,6 +430,13 @@ static int omap_wdt_resume(struct
 platform_device *pdev)
 #define omap_wdt_resume NULL
 #endif

 +static const struct of_device_id omap_wdt_of_match[] = {
 + { .compatible = ti,omap3-wdt, },
 + { .compatible = ti,omap4-wdt, },

 If there is no difference between the OMAP3 and the OMAP4 WDT IP, just
 add one entry ti,omap3-wdt. And then in the OMAP4 DTS you will just
 put : compatible = ti,omap3-wdt; or compatible =  ti,omap4-wdt,
 ti,omap3-wdt;

 Hmmm ... comparing the omap3 and omap4 wdt registers there are some
 differences. omap4 seems to have more registers than omap3. May be we
 are not using these right now, but from a register perspective the wdt
 in omap2, omap3 and omap4 appear to be slightly different. The revision
 ID register on omap3 and omap4 have different values too.

 I guess from a driver perspective there is no difference, but it seemed
 to me that the IP is not completely the same.
 
 Well, in that case, and assuming that there is no proper HW_REVISION
 information to detect the IP difference, the proper compatible entries
 will indeed have to be used.

So looking at a 4460 and 3430, the WIDR register (IP revision) can be
used to distinguish between IP revisions. So it appears that we do have
proper HW REV info.

So may be I am not completely up to speed of the intent of the
compatible field. In other words, should this be used to indicate if the
IP is same/compatible or the driver is compatible or both. Technically
right now we could just have ti-omap2-wdt for all omap2+ devices as
the driver is compatible for all devices. However, technically, the IP
is not completely the same but it is compatible :-)

 I'm still a little bit confused about the real need for the
 ti,omap4-wdt: entry, but it seems to be the way to do it in PPC.

 + {},
 +};
 +MODULE_DEVICE_TABLE(of, omap_wdt_of_match);
 +
 static struct platform_driver omap_wdt_driver = {
 .probe = omap_wdt_probe,
 .remove = __devexit_p(omap_wdt_remove),
 @@ -439,6 +446,7 @@ static struct platform_driver omap_wdt_driver = {
 .driver = {
 .owner = THIS_MODULE,
 .name = omap_wdt,
 + .of_match_table = omap_wdt_of_match,
 },
 };


 I think we need to add some code to the probe function that calls
 of_match_device() and ensures we find a match. For example ...

 if (of_have_populated_dt())
 if (!of_match_device(omap_wdt_of_match,pdev-dev))
 return -EINVAL;

 Will add it in v2, thanks for suggestion.

 No, in fact this is not needed. We need that mainly when several
 instances can match the same driver and thus we select the proper one
 using the of_match_device. Otherwise, just check is the device_node is
 there.

 In that case, the driver does not even care about any DT node so there
 is no need to add extra code for that. Keep it simple.

 Ok. So are you saying get rid of the match table altogether? In other
 words, drop this patch?
 
 No, the match table is used by the LDM to find the proper driver to be
 bound to a device. So we do need it. But we do not have to use the
 of_match_device if we do not want to get the entry in the device table.

Ok, thanks.

 I agree that it does not really do anything today, but I did not know if
 in the future you were planning to pass things like, register addresses,
 via DT.
 
 Well, yes we will have to, otherwise people will keep complaining that
 our DTS sucks and are not compliant with the DTS standards :-)

Ok.

Jon
--
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 04/19] ARM: OMAP4: PM: save/restore all DPLL settings in OFF mode

2012-05-30 Thread Kevin Hilman
Menon, Nishanth n...@ti.com writes:

 On Thu, May 17, 2012 at 3:52 AM, Shilimkar, Santosh
 santosh.shilim...@ti.com wrote:
 On Thu, May 17, 2012 at 12:34 PM, Shilimkar, Santosh
 santosh.shilim...@ti.com wrote:
 On Thu, May 17, 2012 at 4:12 AM, Kevin Hilman khil...@ti.com wrote:
 Tero Kristo t-kri...@ti.com writes:

 [...]
 - Rather than hooking into omap4_enter_lowpower(), should use
  the cluster PM enter/exit notifier chain.

 This is again specific to device OFF only and not related to CPU
 cluster state as such. So I don't think notifiers should be used here.

 O.w even when we attempt just MPU OSWR C-state, all these functions will
 get called in notifier chain.

 Just a thought, we can have a separate notifier chain for device OFF. It can
 allow use to get rid of 'enable_off_mode kind of flags and can be
 used by many drivers too.

 Like the overall idea, but one minor dumb concern might be sequencing
 of notifiers
  - OFF entry and restore needs things to be executed in a specific sequence.
 How do we plan to ensure the sequence is maintained in a notifier call
 chain? one
 possible option might be a priority based scheme?

Or just combine the events that need a specific sequence into single
notifier callback function.

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] ARM: OMAP3/4: consolidate cpuidle Makefile

2012-05-30 Thread Kevin Hilman
Daniel Lezcano daniel.lezc...@linaro.org writes:

 On 05/14/2012 06:42 AM, Rajendra Nayak wrote:
 On Thursday 10 May 2012 03:32 PM, Daniel Lezcano wrote:
 The current Makefile compiles the cpuidle34xx.c and cpuidle44xx.c files
 even if the cpuidle option is not set in the kernel.

 This patch fixes this by creating a section in the Makefile where these
 files are compiled only if the CONFIG_CPU_IDLE option is set.

 This modification breaks an implicit dependency between CPU_IDLE and
 PM as
 they belong to the same block in the Makefile. This is fixed in the
 Kconfig
 by selecting explicitely PM is CPU_IDLE is set.

 The linux coding style recommend to use no-op functions in the headers
 when the subsystem is disabled instead of adding big section in C files.
 
 Looks good to me.
 Reviewed-by: Rajendra Nayak rna...@ti.com

 Hi Kevin,

 I think I addressed all the points. Is it possible to consider this
 patch for inclusion ?


Yes.  I'll queue up as a cleanup for v3.6 with the reviewed-by from
Rajendra.

Thanks,

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: [PATCHv2 04/19] ARM: OMAP4: PM: save/restore all DPLL settings in OFF mode

2012-05-30 Thread Menon, Nishanth
On Wed, May 30, 2012 at 12:59 PM, Kevin Hilman khil...@ti.com wrote:
 Menon, Nishanth n...@ti.com writes:

 On Thu, May 17, 2012 at 3:52 AM, Shilimkar, Santosh
 santosh.shilim...@ti.com wrote:
 On Thu, May 17, 2012 at 12:34 PM, Shilimkar, Santosh
 santosh.shilim...@ti.com wrote:
 On Thu, May 17, 2012 at 4:12 AM, Kevin Hilman khil...@ti.com wrote:
 Tero Kristo t-kri...@ti.com writes:

 [...]
 - Rather than hooking into omap4_enter_lowpower(), should use
  the cluster PM enter/exit notifier chain.

 This is again specific to device OFF only and not related to CPU
 cluster state as such. So I don't think notifiers should be used here.

 O.w even when we attempt just MPU OSWR C-state, all these functions will
 get called in notifier chain.

 Just a thought, we can have a separate notifier chain for device OFF. It can
 allow use to get rid of 'enable_off_mode kind of flags and can be
 used by many drivers too.

 Like the overall idea, but one minor dumb concern might be sequencing
 of notifiers
  - OFF entry and restore needs things to be executed in a specific sequence.
 How do we plan to ensure the sequence is maintained in a notifier call
 chain? one
 possible option might be a priority based scheme?

 Or just combine the events that need a specific sequence into single
 notifier callback function.
There is other issues in case of failure cases - abort of OFF
sequence due to pending interrupt
detected as part of a notifier - error handling needs to be sane in
proper sequence.
I understand and appreciate the intent of replacing the single mega
enter_sleep with a chain of notifiers
but any such option will need to be scalable enough to handle weird
erratum handling (HSI CAWAKE as an example)
which potentially break the logic flow and be either be equal or
better than what we have today interms of
error handling. since these notifiers will be triggered for
CPUIDLE(performance sensitive) and suspend, the intricacies
might be better understood by seeing how this proposed notifiers look like.

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


Re: [RFC PATCH 0/5] omap: add ocp2scp as a misc driver

2012-05-30 Thread Arnd Bergmann
On Wednesday 30 May 2012, Kishon Vijay Abraham I wrote:
 
 This patch series is done as a preparatory step for adding phy drivers
 for dwc3 and musb.
 
 This series adds a new driver for ocp2scp to which phy drivers are connected.
 
 I'm planning to send phy drivers asap. Meanwhile I'd like to get some
 review comments for this series. I have also plans to send device tree
 adaptation of the ocp2scp driver.
 
 Developed on
 http://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-next
 
 If it has to be based on some other tree, please let me know.

This must be the most pointless driver I've seen in a long time. It doesn't
actually do anything at all, it just creates child devices from a static
lookup table.

Just put the devices you actually want into the device tree instead and
have them automatically created.

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


Re: [PATCH] ARM: OMAP3/4: consolidate cpuidle Makefile

2012-05-30 Thread Daniel Lezcano
On 05/30/2012 08:07 PM, Kevin Hilman wrote:
 Daniel Lezcano daniel.lezc...@linaro.org writes:
 
 On 05/14/2012 06:42 AM, Rajendra Nayak wrote:
 On Thursday 10 May 2012 03:32 PM, Daniel Lezcano wrote:
 The current Makefile compiles the cpuidle34xx.c and cpuidle44xx.c files
 even if the cpuidle option is not set in the kernel.

 This patch fixes this by creating a section in the Makefile where these
 files are compiled only if the CONFIG_CPU_IDLE option is set.

 This modification breaks an implicit dependency between CPU_IDLE and
 PM as
 they belong to the same block in the Makefile. This is fixed in the
 Kconfig
 by selecting explicitely PM is CPU_IDLE is set.

 The linux coding style recommend to use no-op functions in the headers
 when the subsystem is disabled instead of adding big section in C files.

 Looks good to me.
 Reviewed-by: Rajendra Nayak rna...@ti.com

 Hi Kevin,

 I think I addressed all the points. Is it possible to consider this
 patch for inclusion ?

 
 Yes.  I'll queue up as a cleanup for v3.6 with the reviewed-by from
 Rajendra.

Cool !

Thanks
  -- Daniel

-- 
 http://www.linaro.org/ Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  http://www.facebook.com/pages/Linaro Facebook |
http://twitter.com/#!/linaroorg Twitter |
http://www.linaro.org/linaro-blog/ Blog

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


Re: [PATCH 0/2] OMAP: mailbox initial device tree support

2012-05-30 Thread Omar Ramirez Luna
Hi,

On 24 May 2012 10:44, Cousson, Benoit b-cous...@ti.com wrote:
 On 5/2/2012 7:42 AM, Bedia, Vaibhav wrote:

 Hi Omar,

 On Tue, May 01, 2012 at 23:17:38, Omar Ramirez Luna wrote:

 To allow mailbox driver to function with device tree.

 Tested in OMAP4 and OMAP3. OMAP2 untested.


 I think the mailbox code needs a cleanup similar to what you
 had proposed earlier [1] before the device tree support is added.

 We probably need to decide whether the number of mailbox sub-modules
 should be part of hwmod attribute or come from device tree. IMO the
 static allocation of the mailboxes is better suited in the device-tree
 data.


 Ideally yes, but that assumes we are supporting only DT boot method, which
 is still not the case today.

 That being said, the driver might still be able to leverage DT if available
 already.


 This can be done later as well.

 Omar,
 That's up to you.

Thanks for the ack on the 2nd patch.

Yes, I think these changes doesn't depend on the cleanup of the
driver, they could be included prior to them.

Regards,

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


Re: [PATCHv2 19/19] ARM: OMAP4: powerdomain: update mpu / core off counters during device off

2012-05-30 Thread Menon, Nishanth
On Mon, May 14, 2012 at 5:18 AM, Tero Kristo t-kri...@ti.com wrote:
 Currently device off does not have any counters / timers of its own
 and it is impossible to track the time spent in this state. In device
 off, MPU / CORE powerdomains enter OSWR, so normally the RETENTION
 state times / counts are increased during device off.

 This patch adds a new field to the powerdomain struct for context loss
 register, which is checked during pwrdm_post_transition to see if
 a device off type context loss has happened. If this is the case,
 the counters + timers for OFF state are touched instead of RETENTION.

 Signed-off-by: Tero Kristo t-kri...@ti.com
 ---
  arch/arm/mach-omap2/omap-mpuss-lowpower.c   |    1 -
  arch/arm/mach-omap2/powerdomain.c           |    9 +
  arch/arm/mach-omap2/powerdomain.h           |    2 ++
  arch/arm/mach-omap2/powerdomains44xx_data.c |    2 ++
  arch/arm/mach-omap2/prm44xx.c               |   15 +++
  arch/arm/mach-omap2/prm44xx.h               |    2 ++
  6 files changed, 30 insertions(+), 1 deletions(-)

 diff --git a/arch/arm/mach-omap2/omap-mpuss-lowpower.c 
 b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
 index 1f06f97..f187025 100644
 --- a/arch/arm/mach-omap2/omap-mpuss-lowpower.c
 +++ b/arch/arm/mach-omap2/omap-mpuss-lowpower.c
 @@ -404,7 +404,6 @@ int omap4_enter_lowpower(unsigned int cpu, unsigned int 
 power_state)
        if (omap4_device_prev_state_off()) {
                omap4_dpll_resume_off();
                omap4_cm_resume_off();
 -               omap4_device_clear_prev_off_state();

We should probably delete the function in it's entirety - not just the
call - the original implementation just clears L3 and this
implementation seems superior.

        }

  sar_save_failed:
 diff --git a/arch/arm/mach-omap2/powerdomain.c 
 b/arch/arm/mach-omap2/powerdomain.c
 index 96ad3dbe..f13bb2c 100644
 --- a/arch/arm/mach-omap2/powerdomain.c
 +++ b/arch/arm/mach-omap2/powerdomain.c
 @@ -156,6 +156,15 @@ static int _pwrdm_state_switch(struct powerdomain 
 *pwrdm, int flag)
                break;
        case PWRDM_STATE_PREV:
                prev = pwrdm_read_prev_pwrst(pwrdm);
 +
 +               /*
 +                * If powerdomain has context offset defined, check if
 +                * the domain has lost context (i.e. entered off)
 +                */
 +               if (pwrdm-context_offs)
 +                       if (omap4_pwrdm_lost_context_rff(pwrdm-prcm_offs,
 +                                                        pwrdm-context_offs))

We should wrap this under pwrdm_lost_context(pwrdm)
pwrdm_lost_context should call the arch_pwrdm-lost_context_rff as
needed? the rest of the powerdomain.c does not use OMAP4 specific
APIs.


 +                               prev = PWRDM_POWER_OFF;
                if (pwrdm-state != prev)
                        pwrdm-state_counter[prev]++;
                if (prev == PWRDM_POWER_RET)
 diff --git a/arch/arm/mach-omap2/powerdomain.h 
 b/arch/arm/mach-omap2/powerdomain.h
 index 0d72a8a..a427645 100644
 --- a/arch/arm/mach-omap2/powerdomain.h
 +++ b/arch/arm/mach-omap2/powerdomain.h
 @@ -82,6 +82,7 @@ struct powerdomain;
  * @name: Powerdomain name
  * @voltdm: voltagedomain containing this powerdomain
  * @prcm_offs: the address offset from CM_BASE/PRM_BASE
 + * @context_offs: the address offset for the CONTEXT register
  * @prcm_partition: (OMAP4 only) the PRCM partition ID containing @prcm_offs
  * @pwrsts: Possible powerdomain power states
  * @pwrsts_logic_ret: Possible logic power states when pwrdm in RETENTION
 @@ -106,6 +107,7 @@ struct powerdomain {
                struct voltagedomain *ptr;
        } voltdm;
        const s16 prcm_offs;
 +       const s16 context_offs;
        const u8 pwrsts;
        const u8 pwrsts_logic_ret;
        const u8 flags;
 diff --git a/arch/arm/mach-omap2/powerdomains44xx_data.c 
 b/arch/arm/mach-omap2/powerdomains44xx_data.c
 index d8701ce..c4de02f 100644
 --- a/arch/arm/mach-omap2/powerdomains44xx_data.c
 +++ b/arch/arm/mach-omap2/powerdomains44xx_data.c
 @@ -36,6 +36,7 @@ static struct powerdomain core_44xx_pwrdm = {
        .voltdm           = { .name = core },
        .prcm_offs        = OMAP4430_PRM_CORE_INST,
        .prcm_partition   = OMAP4430_PRM_PARTITION,
 +       .context_offs     = OMAP4_RM_L3_1_L3_1_CONTEXT_OFFSET,
        .pwrsts           = PWRSTS_RET_ON,
        .pwrsts_logic_ret = PWRSTS_OFF_RET,
        .banks            = 5,
 @@ -205,6 +206,7 @@ static struct powerdomain mpu_44xx_pwrdm = {
        .voltdm           = { .name = mpu },
        .prcm_offs        = OMAP4430_PRM_MPU_INST,
        .prcm_partition   = OMAP4430_PRM_PARTITION,
 +       .context_offs     = OMAP4_RM_MPU_MPU_CONTEXT_OFFSET,
        .pwrsts           = PWRSTS_RET_ON,
        .pwrsts_logic_ret = PWRSTS_OFF_RET,
        .banks            = 3,

Why are we not populating the rest of the CONTEXT_OFFSET registers?

 diff --git a/arch/arm/mach-omap2/prm44xx.c b/arch/arm/mach-omap2/prm44xx.c
 

Re: [PATCH 4/6] ARM: OMAP4: PMU: Add runtime PM support

2012-05-30 Thread Kevin Hilman
Jon Hunter jon-hun...@ti.com writes:

 Hi Kevin,

 On 05/29/2012 05:07 PM, Jon Hunter wrote:
 Hi Kevin,
 
 On 05/29/2012 04:17 PM, Kevin Hilman wrote:
 Jon Hunter jon-hun...@ti.com writes:

 From: Jon Hunter jon-hun...@ti.com

 This patch is based upon Ming Lei's patch to add runtime PM support for 
 OMAP4
 [1]. In Ming's original patch the CTI interrupts were being enabled during
 runtime when the PMU was used but they were only configured once during 
 init.
 Therefore move the configuration of the CTI interrupts to the runtime PM
 functions.

 Lovely.  This is exactly the workaround I was hoping to see.   Thanks!

 Some comments below...
 
 Thanks! Great timing, I am getting ready to post V2 :-)
 
 [1] 
 http://lists.infradead.org/pipermail/linux-arm-kernel/2011-November/074153.html

 Cc: Ming Lei ming@canonical.com
 Cc: Will Deacon will.dea...@arm.com
 Cc: Benoit Cousson b-cous...@ti.com
 Cc: Paul Walmsley p...@pwsan.com
 Cc: Kevin Hilman khil...@ti.com

 Signed-off-by: Jon Hunter jon-hun...@ti.com
 ---
  arch/arm/mach-omap2/devices.c |   50 
 ++--
  1 files changed, 27 insertions(+), 23 deletions(-)

 diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
 index 636533d..b02aa81 100644
 --- a/arch/arm/mach-omap2/devices.c
 +++ b/arch/arm/mach-omap2/devices.c
 @@ -18,6 +18,7 @@
  #include linux/slab.h
  #include linux/of.h
  #incluhttp://marc.info/?l=linux-arm-kernelm=132227620816504w=2de 
 linux/platform_data/omap4-keypad.h
 +#include linux/pm_runtime.h
  
  #include mach/hardware.h
  #include mach/irqs.h
 @@ -434,13 +435,22 @@ static struct omap_device_pm_latency 
 omap_pmu_latency[] = {
  };
  
  static struct cti omap4_cti[2];
 +static struct platform_device *pmu_dev;
  
  static void omap4_enable_cti(int irq)
  {
 -  if (irq == OMAP44XX_IRQ_CTI0)
 +  pm_runtime_get_sync(pmu_dev-dev);
 +  if (irq == OMAP44XX_IRQ_CTI0) {
 +  /* configure CTI0 for pmu irq routing */
 +  cti_unlock(omap4_cti[0]);
 +  cti_map_trigger(omap4_cti[0], 1, 6, 2);
cti_enablook at thisle(omap4_cti[0]);
 -  else if (irq == OMAP44XX_IRQ_CTI1)
 +  } else if (irq == OMAP44XX_IRQ_CTI1) {
 +  /* configure CTI1 for pmu irq routing */
 +  cti_unlolook at thisck(omap4_cti[1]);
 +  cti_map_trigger(omap4_cti[1], 1, 6, 2);
cti_enable(omap4_cti[1]);
 +  }
  }

 The cti_* functions really belong in the -runtime_resume() callback.

 In the case of multiple users, I don't think the current implementation
 will do what is intended.  IOW, you only want to (re)init for the first
 user (when runtime PM usecount goes from zero to one.)   That is when
 the -runtime_resume() is called.   For a 2nd user, the
 -runtime_resume() callback will not be called, but the cti_* functions
 will still be called.   I don't think that is what you want.
 
 Ah, yes that would not work. Ok, let me make that change.

 Actually, looking at this some more, the above omap4_enable_cti()
 function is getting called from armpmu_reserve_hardware() function in
 the pmu driver. In armpmu_reserve_hardware(), it calls reserve_pmu() to
 see if the PMU is in-use and if not acquires it. So I believe that this
 code should be atomic already. May be Will or Ming can confirm. However,
 if this is the case, then do you agree we should be ok?

 I can see that ideally, we should use -runtime_resume/suspend, but the
 arm-pmu does not currently have support for these functions and hence
 there is no easy way to specify such platform functions. Obviously it
 could be done but would be a bigger change.

 Let me know your thoughts.

I'm guessing you probably know my thoughts since you've already thought
through how this should probably look.

Basically, I don't like the result when we have to hack around missing
runtime PM support for a driver, so IMO, the driver should be updated.

IOW, it looks to me like the armpmu driver should grow runtime PM
support.  The current armpmu_release|reserve should probably be replaced
with runtime PM get/put, and the functionality in those functions would
be the runtime PM callbacks instead.

Will, any objections to armpmu growing runtime PM support?

Kevin

P.S.  Jon, for readability sake, any objections to  moving the PMU device init
out of devices.c into pmu.c?  devices.c is awful crowded.

--
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 04/19] ARM: OMAP4: PM: save/restore all DPLL settings in OFF mode

2012-05-30 Thread Kevin Hilman
Menon, Nishanth n...@ti.com writes:

 On Wed, May 30, 2012 at 12:59 PM, Kevin Hilman khil...@ti.com wrote:
 Menon, Nishanth n...@ti.com writes:

 On Thu, May 17, 2012 at 3:52 AM, Shilimkar, Santosh
 santosh.shilim...@ti.com wrote:
 On Thu, May 17, 2012 at 12:34 PM, Shilimkar, Santosh
 santosh.shilim...@ti.com wrote:
 On Thu, May 17, 2012 at 4:12 AM, Kevin Hilman khil...@ti.com wrote:
 Tero Kristo t-kri...@ti.com writes:

 [...]
 - Rather than hooking into omap4_enter_lowpower(), should use
  the cluster PM enter/exit notifier chain.

 This is again specific to device OFF only and not related to CPU
 cluster state as such. So I don't think notifiers should be used here.

 O.w even when we attempt just MPU OSWR C-state, all these functions will
 get called in notifier chain.

 Just a thought, we can have a separate notifier chain for device OFF. It 
 can
 allow use to get rid of 'enable_off_mode kind of flags and can be
 used by many drivers too.

 Like the overall idea, but one minor dumb concern might be sequencing
 of notifiers
  - OFF entry and restore needs things to be executed in a specific sequence.
 How do we plan to ensure the sequence is maintained in a notifier call
 chain? one
 possible option might be a priority based scheme?

 Or just combine the events that need a specific sequence into single
 notifier callback function.
 There is other issues in case of failure cases - abort of OFF
 sequence due to pending interrupt
 detected as part of a notifier - error handling needs to be sane in
 proper sequence.
 I understand and appreciate the intent of replacing the single mega
 enter_sleep with a chain of notifiers
 but any such option will need to be scalable enough to handle weird
 erratum handling (HSI CAWAKE as an example)
 which potentially break the logic flow and be either be equal or
 better than what we have today interms of
 error handling. since these notifiers will be triggered for
 CPUIDLE(performance sensitive) and suspend, the intricacies
 might be better understood by seeing how this proposed notifiers look like.

Makes sense.  Thanks for clarifying.

What $SUBJECT series proposed was indeed a mega function, but one that
was just a list of function calls with no error checking or recovery,
and no documentation/description about dependencies/sequencing etc. etc.
Based on the patches at hadn (which is all reviewers have to go on),
notifiers seemed to be a good fit.

If there are good reasons that all of the device-off events need to be
coordinated/synchronized/sequenced (and it sounds like there are, thanks
for pointing them out), I am not opposed to that approach.  It simply
needs to be well described in the changlog.

Thanks,

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] ARM: OMAP3/4: consolidate cpuidle Makefile

2012-05-30 Thread Kevin Hilman
Daniel Lezcano daniel.lezc...@linaro.org writes:

 On 05/30/2012 08:07 PM, Kevin Hilman wrote:
 Daniel Lezcano daniel.lezc...@linaro.org writes:
 
 On 05/14/2012 06:42 AM, Rajendra Nayak wrote:
 On Thursday 10 May 2012 03:32 PM, Daniel Lezcano wrote:
 The current Makefile compiles the cpuidle34xx.c and cpuidle44xx.c files
 even if the cpuidle option is not set in the kernel.

 This patch fixes this by creating a section in the Makefile where these
 files are compiled only if the CONFIG_CPU_IDLE option is set.

 This modification breaks an implicit dependency between CPU_IDLE and
 PM as
 they belong to the same block in the Makefile. This is fixed in the
 Kconfig
 by selecting explicitely PM is CPU_IDLE is set.

 The linux coding style recommend to use no-op functions in the headers
 when the subsystem is disabled instead of adding big section in C files.

 Looks good to me.
 Reviewed-by: Rajendra Nayak rna...@ti.com

 Hi Kevin,

 I think I addressed all the points. Is it possible to consider this
 patch for inclusion ?

 
 Yes.  I'll queue up as a cleanup for v3.6 with the reviewed-by from
 Rajendra.

 Cool !


Sorry for the lag.  Since this one patch was a bit late for 3.5, I had
it on my to look at later pile while tracking down various regressions
introduced in 3.5.

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


[GIT PULL] OMAP PM fixes for v3.5-rc

2012-05-30 Thread Kevin Hilman
Tony,

Here's a couple PM related fixes for v3.5-rc, based on your cleanup
branch.

Kevin


The following changes since commit 2c65e7440d56b3b285d1c95563b4dcce8e40dea3:

  GPMC: add ECC control definitions (2012-05-10 09:39:47 -0700)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm.git 
for_3.5/fixes/pm

for you to fetch changes up to 1ce029968718477149e7f1fb245a8e82c690cc4a:

  arm: omap3: am35x: Don't mark missing features as present (2012-05-11 
16:47:19 -0700)


Kevin Hilman (1):
  ARM: OMAP3: PM: fix shared PRCM interrupts: leave disabled at boot

Mark A. Greer (1):
  arm: omap3: am35x: Don't mark missing features as present

NeilBrown (1):
  ARM: OMAP2+: INTC: fix suspend abort, set IRQCHIP_SKIP_SET_WAKE

 arch/arm/mach-omap2/id.c   |   11 +++
 arch/arm/mach-omap2/irq.c  |1 +
 arch/arm/mach-omap2/pm34xx.c   |1 +
 arch/arm/mach-omap2/prm2xxx_3xxx.c |   14 +++---
 4 files changed, 24 insertions(+), 3 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: Compile err when enable CONFIG_SND_OMAP_SOC_OMAP_HDMI

2012-05-30 Thread Ricardo Neri

+Tomi

Hi Xiao,

On 05/30/2012 02:14 AM, Xiao Jiang wrote:

Hello,

After enable SND_OMAP_SOC_OMAP_HDMI with omap2plus_defconfig, I got some
err infos with latest
Linus's tree, does somebody also has the same issue?

sound/soc/omap/omap-hdmi.c:45:24: error: field 'dss_audio' has
incomplete type
sound/soc/omap/omap-hdmi.c: In function 'omap_hdmi_dai_startup':
sound/soc/omap/omap-hdmi.c:67:27: error: 'struct omap_dss_driver' has no
member named 'audio_supported'
sound/soc/omap/omap-hdmi.c: In function 'omap_hdmi_dai_prepare':
sound/soc/omap/omap-hdmi.c:79:29: error: 'struct omap_dss_driver' has no
member named 'audio_enable'
sound/soc/omap/omap-hdmi.c: In function 'omap_hdmi_dai_hw_params':
sound/soc/omap/omap-hdmi.c:208:28: error: 'struct omap_dss_driver' has
no member named 'audio_config'
sound/soc/omap/omap-hdmi.c: In function 'omap_hdmi_dai_trigger':
sound/soc/omap/omap-hdmi.c:224:29: error: 'struct omap_dss_driver' has
no member named 'audio_start'
sound/soc/omap/omap-hdmi.c:229:23: error: 'struct omap_dss_driver' has
no member named 'audio_stop'
sound/soc/omap/omap-hdmi.c: In function 'omap_hdmi_dai_shutdown':
sound/soc/omap/omap-hdmi.c:242:22: error: 'struct omap_dss_driver' has
no member named 'audio_disable'
sound/soc/omap/omap-hdmi.c: In function 'omap_hdmi_dai_prepare':
sound/soc/omap/omap-hdmi.c:80:1: warning: control reaches end of
non-void function


Build breaks because there some patches [1] that are still missing in 
Linus' tree. ASoC HDMI audio driver for OMAP[2] now uses the new DSS 
audio functionality in [1], but ASoC patches were merged first. DSS 
patches have been accepted and they are part of Tomi's pull request for 
DSS for K3.5. Hopefully this will be fixed when v3.5-rc1 is out.


BR,

Ricardo

[1].http://www.spinics.net/lists/linux-omap/msg69466.html
[2].http://www.spinics.net/lists/linux-omap/msg70561.html


Regards,
Xiao

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


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


[GIT PULL] OMAP: AM3xxx: cpu_is dead code removal

2012-05-30 Thread Kevin Hilman
Tony,

These couple patches didn't make it for v3.5 because of some cross-tree
dependencies.  All the dependencies are now merged (after Linus merged
arm-soc/next/pm), so here's the remaining patches.

Not sure if you want to get them in for 3.5-rc or queue them in your
cleanup branch for v3.6.  Up to you.

Kevin


The following changes since commit cdd3a354a05b0c33fe33ab11a0fb0838396cad19:

  Merge tag 'pm' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc 
(2012-05-22 09:41:01 -0700)

are available in the git repository at:


  git://git.kernel.org/pub/scm/linux/kernel/git/khilman/linux-omap-pm.git 
for_3.5/cleanup/am3xxx-cpu-is-leftovers

for you to fetch changes up to 96f3994929c05a21d757a83613d2710b780ea2b4:

  ARM: OMAP: SoC detection: remove unused cpu_is macros (2012-05-25 15:48:48 
-0700)


Kevin Hilman (2):
  ARM: OMAP3: clock data: cleanup AM3[35]x SoC detection
  ARM: OMAP: SoC detection: remove unused cpu_is macros

 arch/arm/mach-omap2/clock3xxx_data.c  |2 +-
 arch/arm/plat-omap/include/plat/cpu.h |   33 -
 2 files changed, 1 insertion(+), 34 deletions(-)
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 4/6] ARM: OMAP4: PMU: Add runtime PM support

2012-05-30 Thread Will Deacon
Hi Kevin,

On Wed, May 30, 2012 at 10:50:01PM +0100, Kevin Hilman wrote:
 Basically, I don't like the result when we have to hack around missing
 runtime PM support for a driver, so IMO, the driver should be updated.
 
 IOW, it looks to me like the armpmu driver should grow runtime PM
 support.  The current armpmu_release|reserve should probably be replaced
 with runtime PM get/put, and the functionality in those functions would
 be the runtime PM callbacks instead.
 
 Will, any objections to armpmu growing runtime PM support?

My plan for the armpmu reservation is to kill the global reservation scheme
that we currently have and push those function pointers into the arm_pmu,
so that fits with what you'd like.

The only concern I have is that we need the mutual exclusion even when we
don't have support for runtime PM. If we can solve that then I'm fine with
the approach.

Cheers,

Will
--
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 04/19] ARM: OMAP4: PM: save/restore all DPLL settings in OFF mode

2012-05-30 Thread Shilimkar, Santosh
On Thu, May 31, 2012 at 3:39 AM, Kevin Hilman khil...@ti.com wrote:
 Menon, Nishanth n...@ti.com writes:

 On Wed, May 30, 2012 at 12:59 PM, Kevin Hilman khil...@ti.com wrote:
 Menon, Nishanth n...@ti.com writes:

 On Thu, May 17, 2012 at 3:52 AM, Shilimkar, Santosh
 santosh.shilim...@ti.com wrote:
 On Thu, May 17, 2012 at 12:34 PM, Shilimkar, Santosh
 santosh.shilim...@ti.com wrote:
 On Thu, May 17, 2012 at 4:12 AM, Kevin Hilman khil...@ti.com wrote:
 Tero Kristo t-kri...@ti.com writes:

 [...]
 - Rather than hooking into omap4_enter_lowpower(), should use
  the cluster PM enter/exit notifier chain.

 This is again specific to device OFF only and not related to CPU
 cluster state as such. So I don't think notifiers should be used here.

 O.w even when we attempt just MPU OSWR C-state, all these functions will
 get called in notifier chain.

 Just a thought, we can have a separate notifier chain for device OFF. It 
 can
 allow use to get rid of 'enable_off_mode kind of flags and can be
 used by many drivers too.

 Like the overall idea, but one minor dumb concern might be sequencing
 of notifiers
  - OFF entry and restore needs things to be executed in a specific 
 sequence.
 How do we plan to ensure the sequence is maintained in a notifier call
 chain? one
 possible option might be a priority based scheme?

 Or just combine the events that need a specific sequence into single
 notifier callback function.
 There is other issues in case of failure cases - abort of OFF
 sequence due to pending interrupt
 detected as part of a notifier - error handling needs to be sane in
 proper sequence.
 I understand and appreciate the intent of replacing the single mega
 enter_sleep with a chain of notifiers
 but any such option will need to be scalable enough to handle weird
 erratum handling (HSI CAWAKE as an example)
 which potentially break the logic flow and be either be equal or
 better than what we have today interms of
 error handling. since these notifiers will be triggered for
 CPUIDLE(performance sensitive) and suspend, the intricacies
 might be better understood by seeing how this proposed notifiers look like.

 Makes sense.  Thanks for clarifying.

 What $SUBJECT series proposed was indeed a mega function, but one that
 was just a list of function calls with no error checking or recovery,
 and no documentation/description about dependencies/sequencing etc. etc.
 Based on the patches at hadn (which is all reviewers have to go on),
 notifiers seemed to be a good fit.

 If there are good reasons that all of the device-off events need to be
 coordinated/synchronized/sequenced (and it sounds like there are, thanks
 for pointing them out), I am not opposed to that approach.  It simply
 needs to be well described in the changlog.

There are sequence dependencies but lot of code can be extracted and put
into smaller blocks that is independent.

I agree for the error handling part notifier chain could be an issue.

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


Re: Compile err when enable CONFIG_SND_OMAP_SOC_OMAP_HDMI

2012-05-30 Thread Xiao Jiang

Ricardo Neri wrote:

+Tomi

Hi Xiao,

On 05/30/2012 02:14 AM, Xiao Jiang wrote:

Hello,

After enable SND_OMAP_SOC_OMAP_HDMI with omap2plus_defconfig, I got some
err infos with latest
Linus's tree, does somebody also has the same issue?

sound/soc/omap/omap-hdmi.c:45:24: error: field 'dss_audio' has
incomplete type
sound/soc/omap/omap-hdmi.c: In function 'omap_hdmi_dai_startup':
sound/soc/omap/omap-hdmi.c:67:27: error: 'struct omap_dss_driver' has no
member named 'audio_supported'
sound/soc/omap/omap-hdmi.c: In function 'omap_hdmi_dai_prepare':
sound/soc/omap/omap-hdmi.c:79:29: error: 'struct omap_dss_driver' has no
member named 'audio_enable'
sound/soc/omap/omap-hdmi.c: In function 'omap_hdmi_dai_hw_params':
sound/soc/omap/omap-hdmi.c:208:28: error: 'struct omap_dss_driver' has
no member named 'audio_config'
sound/soc/omap/omap-hdmi.c: In function 'omap_hdmi_dai_trigger':
sound/soc/omap/omap-hdmi.c:224:29: error: 'struct omap_dss_driver' has
no member named 'audio_start'
sound/soc/omap/omap-hdmi.c:229:23: error: 'struct omap_dss_driver' has
no member named 'audio_stop'
sound/soc/omap/omap-hdmi.c: In function 'omap_hdmi_dai_shutdown':
sound/soc/omap/omap-hdmi.c:242:22: error: 'struct omap_dss_driver' has
no member named 'audio_disable'
sound/soc/omap/omap-hdmi.c: In function 'omap_hdmi_dai_prepare':
sound/soc/omap/omap-hdmi.c:80:1: warning: control reaches end of
non-void function


Build breaks because there some patches [1] that are still missing in 
Linus' tree. ASoC HDMI audio driver for OMAP[2] now uses the new DSS 
audio functionality in [1], but ASoC patches were merged first. DSS 
patches have been accepted and they are part of Tomi's pull request 
for DSS for K3.5. Hopefully this will be fixed when v3.5-rc1 is out.



Ricardo, thanks for your detail infos :).

Regards,
Xiao

BR,

Ricardo

[1].http://www.spinics.net/lists/linux-omap/msg69466.html
[2].http://www.spinics.net/lists/linux-omap/msg70561.html


Regards,
Xiao

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




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


Re: [PATCH 1/3] arm/dts: add wdt node for omap3 and omap4

2012-05-30 Thread Xiao Jiang

Hi Jon and Benoit,

Thanks for reminding, how about below patch?

diff --git a/Documentation/devicetree/bindings/watchdog/omap-wdt.txt
b/Documentation/devicetree/bindings/watchdog/omap-wdt.txt
new file mode 100644
index 000..4272d06
--- /dev/null
+++ b/Documentation/devicetree/bindings/watchdog/omap-wdt.txt
@@ -0,0 +1,15 @@
+TI Watchdog Timer (WDT) Controller for OMAP
+
+Required properties:
+- compatible:
+  - ti,omap2-wdt for OMAP2
+  - ti,omap3-wdt for OMAP3
+  - ti,omap4-wdt for OMAP4
+- ti,hwmods: Name of the hwmod associated to the WDT
+
+Examples:
+
+wdt2: wdt@73f98000 {
+   compatible = ti,omap4-wdt;
+   ti,hwmods = wd_timer2;
+};



Yes looks good. Thanks! Minor nit-pick in the example I would just copy
the omap4 node completely with the actual omap4 address :-)

  
Oops, wrong addr, :). Perhaps we can drop address as you said, since the 
right addresses are defined
in wd_timer2 hwmod (see [1]), and wdt also works without the address as 
follows.


diff --git a/arch/arm/boot/dts/omap2.dtsi b/arch/arm/boot/dts/omap2.dtsi
index f2ab4ea..0017bd8 100644
--- a/arch/arm/boot/dts/omap2.dtsi
+++ b/arch/arm/boot/dts/omap2.dtsi
@@ -63,5 +63,10 @@
   ti,hwmods = uart3;
   clock-frequency = 4800;
   };
+
+   wdt2: wdt {
+   compatible = ti,omap2-wdt;
+   ti,hwmods = wd_timer2;
+   };
   };
};
diff --git a/arch/arm/boot/dts/omap3.dtsi b/arch/arm/boot/dts/omap3.dtsi
index 99474fa..dbf8a5b 100644
--- a/arch/arm/boot/dts/omap3.dtsi
+++ b/arch/arm/boot/dts/omap3.dtsi
@@ -215,5 +215,10 @@
   compatible = ti,omap3-hsmmc;
   ti,hwmods = mmc3;
   };
+
+   wdt2: wdt {
+   compatible = ti,omap3-wdt, ti,omap2-wdt;
+   ti,hwmods = wd_timer2;
+   };
   };
};
diff --git a/arch/arm/boot/dts/omap4.dtsi b/arch/arm/boot/dts/omap4.dtsi
index 359c497..ce74e87 100644
--- a/arch/arm/boot/dts/omap4.dtsi
+++ b/arch/arm/boot/dts/omap4.dtsi
@@ -272,5 +272,10 @@
   ti,hwmods = mmc5;
   ti,needs-special-reset;
   };
+
+   wdt2: wdt {
+   compatible = ti,omap4-wdt, ti,omap2-wdt;
+   ti,hwmods = wd_timer2;
+   };
   };
};

Infos for omap3:
# dmesg|grep Machine
6[0.00] Machine: Generic OMAP3 (Flattened Device Tree), model: 
TI OMAP3 EVM (OMAP3530, AM/DM37x)

# dmesg|grep omap_wdt_probe
4[2.552825] in omap_wdt_probe: 299, res-start = 0x48314000

Infos for omap4:
root@localhost:/root dmesg|grep Machine
[0.00] Machine: Generic OMAP4 (Flattened Device Tree), model: TI 
OMAP4 SDP board

root@localhost:/root dmesg|grep omap_wdt_probe
[1.687896] in omap_wdt_probe: 299, res-start = 0x4a314000

So can I drop the wdt addr from dts file? otherwise it is not feasible 
to add omap2 wdt node in omap2.dtsi

due to different addrs for omap2420 and omap2430.

Regards,
Xiao
[1] http://marc.info/?l=linux-omapm=133836995026565w=2

Cheers
Jon
  


--
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: Compile err when enable CONFIG_SND_OMAP_SOC_OMAP_HDMI

2012-05-30 Thread Jarkko Nikula
On 05/31/2012 02:35 AM, Ricardo Neri wrote:
 Build breaks because there some patches [1] that are still missing in
 Linus' tree. ASoC HDMI audio driver for OMAP[2] now uses the new DSS
 audio functionality in [1], but ASoC patches were merged first. DSS
 patches have been accepted and they are part of Tomi's pull request for
 DSS for K3.5. Hopefully this will be fixed when v3.5-rc1 is out.
 
Then there was an error already in the process if dependent sets didn't
go together via the same merge or in next merge window. Remember each
commit must compile alone.

It's quite boring to try to bisect over multiple kernel versions and
where most of the time goes solving random unrelated build breakages.

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