Re: [PATCH 1/4] ARM: dts: Add support for OMAP4 Variscite OM44 family

2014-04-29 Thread Tomi Valkeinen
On 30/04/14 04:24, Joachim Eastwood wrote:

> Do you plan to push the patch that add hpd-gpios to the
> "hdmi-connector" for 3.16? (nodes for my board below)
> https://patchwork.kernel.org/patch/4006021/
> 
> Also in the patch set I am using your DT bindings for "panel-dpi". See
> patch [2 of 4] for nodes.
> https://patchwork.kernel.org/patch/4047241/
> 
> Will this patch be upstream in 3.16?

Yes, they are both planned to be in 3.16. The patches are still under
work, though.

 Tomi




signature.asc
Description: OpenPGP digital signature


Re: [PATCH 51/97] ARM: l2c: remove platforms/SoCs setting early BRESP

2014-04-29 Thread Simon Horman
On Tue, Apr 29, 2014 at 10:17:01AM -0600, Stephen Warren wrote:
> On 04/28/2014 06:02 PM, Simon Horman wrote:
> > On Mon, Apr 28, 2014 at 08:30:32PM +0100, Russell King wrote:
> >> Since we now automatically enable early BRESP in core L2C-310 code when
> >> we detect a Cortex-A9, we don't need platforms/SoCs to set this bit
> >> explicitly.  Instead, they should seek to preserve the value of bit 30
> >> in the auxiliary control register.
> >>
> >> Acked-by: Tony Lindgren 
> >> Signed-off-by: Russell King 
> > 
> > I would prefer if this patch was broken out into individual patches
> > for each board or SoC file and that they were then picked up
> > by their respective platform maintainers.
> > 
> > Likewise for patch 66/97. Although it is only for shmobile
> > I would prefer it broken out.
> 
> There are far too many dependencies in this series to break out the
> board file patches to be merged separately; it'd take either a whole
> bunch of kernel releases to merge it all that way, or a twisty maze of
> tiny topic branches cross-merged all over the place. Neither option is
> realistic.

Understood, that seems reasonable to me.

For the shmobile portions this patch and 66/97.

Acked-by: Simon Horman 

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


Re: [PATCH 06/23] ARM: OMAP: add OMAP5 DSI muxing

2014-04-29 Thread Tomi Valkeinen
On 29/04/14 20:38, Tony Lindgren wrote:
> * Tomi Valkeinen  [140429 09:33]:
>> On 29/04/14 19:19, Tomi Valkeinen wrote:
>>> On 29/04/14 18:05, Tony Lindgren wrote:
>>>
> omap4_padconf_global is a syscon node, not pinctrl. As syscon just gives
> a raw regmap to its memory area, the driver needs to know about the OMAP
> control registers to use it.

 That would be probably best set up the same way we have already set up
 for example omap4_padconf_global: tisyscon@4a1005a0. Then drivers can
 access it using regmap, see how drivers/regulator/pbias-regulator.c
 sets up the pbias regulator with regmap for MMC.
>>>
>>> Right, but it means that the driver will contain platform specific code
>>> for all the omap revisions it supports. Isn't that wrong?
>>>
>>> I already have a patch for DSI that uses the syscon-method, and it works
>>> fine. But it's quite ugly, imo, to fiddle with the OMAP control
>>> registers in a driver.
> 
> Anything using the system control module registers should be a separate
> driver. And it should ideally be implemeting some Linux generic framework
> that the consumer driver can then use. That leaves out the need to export
> custom functions.

Ok.

> I guess we don't have a PHY framework for displays though, so how about
> just a separate minimal driver under drivers/video/omap2 that uses the
> syscon?

Well, this one is not really about DSI PHY. The CONTROL_DSIPHY register
is not in the DSI PHY block, but in the control module, and it is used
to enable/disable the pins (for omap4/5) and to set pull up/down for the
pins (only for omap4). Oddly, for omap5, there's also a normal padconfig
register for the DSI pins, but not so for omap4.

To me it looks like a pad config register. I don't know why there's a
separate odd register for it and it's not using the normal padconfig system.

I'd like to use the pinctrl framework for it, but the pinctrl-single
cannot handle such a funny register. So, if "Anything using the system
control module registers should be a separate driver", then I guess I
need to write a pinctrl driver for this single register?

>> Oh, also, if I do that, I need to know both the SoC version and the DSS
>> version in the driver.
> 
> Don't you get all you need in the compatible string? Something like
> compatible ti,dss-phy-omap5?

We do use different compatible strings for different major versions of
the DSS blocks, like ti,omap5-dsi. But that exactly same DSS block could
be used on some other SoC, with different control stuff.

We could use separate compatible string for each SoC that uses DSS, but
then we're really encoding the SoC version into the compatible string,
not DSS version.

Of course, if there will be a separate driver managing the
CONTROL_DSIPHY register, then that one should use compatible string
specific to the SoC, as it's not a DSS driver at all.

 Tomi




signature.asc
Description: OpenPGP digital signature


Re: [patch V2 0/6] dma: edma: Provide granular residue accounting

2014-04-29 Thread Vinod Koul
On Tue, Apr 29, 2014 at 11:25:02PM -0500, Joel Fernandes wrote:
> On 04/29/2014 03:46 AM, Vinod Koul wrote:
> [..]
> > commit 770f0f3a20188b7e17db2790803b9da925dc0b94
> > Author: Thomas Gleixner 
> > Date:   Mon Apr 28 10:49:43 2014 +
> > 
> > dmaengine: edma: Make reading the position of active channels work
> > 
> > As Joel pointed out, edma_read_position() uses memcpy_fromio() to read
> > the parameter ram. That's not synchronized with the internal update as
> > it does a byte by byte copy. We need to do a 32bit read to get a
> > consistent value.
> > 
> > Further reading destination and source is pointless. In DEV_TO_MEM
> > transfers we are only interested in the destination, in MEM_TO_DEV we
> > care about the source. In MEM_TO_MEM it really does not matter which
> > one you read.
> > 
> > Simple solution: Remove the pointers, select dest/source via a bool
> > and return the read value.
> > 
> > Remove the export of this function while at it. The only potential
> > user is the dmaengine and that's always builtin.
> > 
> > Signed-off-by: Thomas Gleixner 
> > 
> > You s-o-b missing in this one, also ack from Sekhar missing. Do you want to 
> > redo
> > this or prefer me to cherry-pick patches adding acks and your s-o-b, since I
> > already fetched your branch
> > 
> > Either way is fine with me...
> > 
> 
> If its Ok with you, it would great if you could add my Ack and Sob.
> Thanks a lot. Let me know if you'd want me to do anything else here.
Done, The changes are getting pushed, pls do verify

-- 
~Vinod

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


Re: [patch V2 0/6] dma: edma: Provide granular residue accounting

2014-04-29 Thread Joel Fernandes
On 04/29/2014 03:46 AM, Vinod Koul wrote:
[..]
> commit 770f0f3a20188b7e17db2790803b9da925dc0b94
> Author: Thomas Gleixner 
> Date:   Mon Apr 28 10:49:43 2014 +
> 
> dmaengine: edma: Make reading the position of active channels work
> 
> As Joel pointed out, edma_read_position() uses memcpy_fromio() to read
> the parameter ram. That's not synchronized with the internal update as
> it does a byte by byte copy. We need to do a 32bit read to get a
> consistent value.
> 
> Further reading destination and source is pointless. In DEV_TO_MEM
> transfers we are only interested in the destination, in MEM_TO_DEV we
> care about the source. In MEM_TO_MEM it really does not matter which
> one you read.
> 
> Simple solution: Remove the pointers, select dest/source via a bool
> and return the read value.
> 
> Remove the export of this function while at it. The only potential
> user is the dmaengine and that's always builtin.
> 
> Signed-off-by: Thomas Gleixner 
> 
> You s-o-b missing in this one, also ack from Sekhar missing. Do you want to 
> redo
> this or prefer me to cherry-pick patches adding acks and your s-o-b, since I
> already fetched your branch
> 
> Either way is fine with me...
> 

If its Ok with you, it would great if you could add my Ack and Sob.
Thanks a lot. Let me know if you'd want me to do anything else here.

Regards,
-Joel

--
To unsubscribe from this list: send the line "unsubscribe 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: OMAP5: Switch to THUMB mode if needed on secondary CPU

2014-04-29 Thread Joel Fernandes
On 04/29/2014 01:31 PM, Dave Martin wrote:
> On Tue, Apr 29, 2014 at 05:36:30PM +0100, Joel Fernandes wrote:
> 
> [...]
> 
 Sorry what I meant is, say its of Type function. What tells the firmware
 to switch to THUMB?

 What's typically done is a boot address register is written by the
 kernel, and the firmware jumps to it after WFE.
>>>
>>> Using ENTRY(x) ... ENDPROC(x) causes the symbol seen by the linker
>>> for x to have the Thumb bit set if the code is Thumb.
>>>
>>> This means that any reference the linker fixes up for that symbol
>>> will have the Thumb bit set appropriately.  This applies to any kind
>>> of reference, so code in another file that takes the address of the
>>> symbol and then passes that address to the firmware should result in the
>>> firmware getting an address with the Thumb bit.
>>>
>>> From the firmware's point of view it just gets a raw address, but
>>> the Thumb bit will now be set.  The firmware still needs to handle
>>> this correctly when jumping, but from the look of the code this may
>>> already work on omap3/4.  It would be interesting to know whether it
>>> works on omap5.
>>
>> Thanks a lot for the explanation. That makes perfect sense. I will try it 
>> and let you know if it works on OMAP5.
> 
> ARM/thumb interworking making perfect sense?  I'll have to frame that
> and put it on the wall :)
> 
> objdump and nm conveniently mask off the Thumb bit from all function
> addresses they print out, but if you show the symbols using readelf
> instead you'll see addresses with bit 0 set for Thumb functions.
> 
> It's possible that the firmware still doesn't handle branching to Thumb
> correctly, but if it does it would be nice to remove the requirement to
> build an odd piece of a Thumb-2 kernel in ARM.

Sure, it works great! thanks, I sent out a patch that applies on top of
the first one. Thanks for spotting it.

Regards,
-Joel

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


[PATCH] ARM: OMAP5: Redo THUMB mode switch on secondary CPU

2014-04-29 Thread Joel Fernandes
Here's a redo of the patch [1] that effectively does the same
thing but is the right way to do things by using ENDPROC instead.
The firmware correctly switches to THUMB before entry.

The patch applies ontop of the earlier patch [1].

[1] https://lkml.org/lkml/2014/4/22/1044

Suggested-by: Dave Martin 
Cc: Dave Martin 
Cc: Santosh Shilimkar 
Cc: Russell King 
Cc: Nishanth Menon 
Cc: Tony Lindgren 
Signed-off-by: Joel Fernandes 
---

Tony, the earlier patch went into your fixes, and can remain. This patch is 
just a simple redo of the same and can go in for v3.16, no problem. Thanks.

 arch/arm/mach-omap2/omap-headsmp.S |6 +-
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/arch/arm/mach-omap2/omap-headsmp.S 
b/arch/arm/mach-omap2/omap-headsmp.S
index 1809dce..bf36f26 100644
--- a/arch/arm/mach-omap2/omap-headsmp.S
+++ b/arch/arm/mach-omap2/omap-headsmp.S
@@ -31,10 +31,6 @@
  * register AuxCoreBoot0.
  */
 ENTRY(omap5_secondary_startup)
-.arm
-THUMB( adr r9, BSYM(wait)  )   @ CPU may be entered in ARM mode.
-THUMB( bx  r9  )   @ If this is a Thumb-2 kernel,
-THUMB( .thumb  )   @ switch to Thumb now.
 wait:  ldr r2, =AUX_CORE_BOOT0_PA  @ read from AuxCoreBoot0
ldr r0, [r2]
mov r0, r0, lsr #5
@@ -43,7 +39,7 @@ wait: ldr r2, =AUX_CORE_BOOT0_PA  @ read from AuxCoreBoot0
cmp r0, r4
bne wait
b   secondary_startup
-END(omap5_secondary_startup)
+ENDPROC(omap5_secondary_startup)
 /*
  * OMAP4 specific entry point for secondary CPU to jump from ROM
  * code.  This routine also provides a holding flag into which
-- 
1.7.9.5

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


Re: [PATCH v10 1/5] mmc: omap_hsmmc: Enable SDIO interrupt

2014-04-29 Thread Joel Fernandes
Minor nit...

On 04/28/2014 02:40 AM, Andreas Fenkart wrote:
[..]
>   /* Do not initialize card-specific things if the power is off */
>   if (host->power_mode == MMC_POWER_OFF)
> @@ -1117,8 +1138,12 @@ static irqreturn_t omap_hsmmc_irq(int irq, void 
> *dev_id)
>   int status;
>  
>   status = OMAP_HSMMC_READ(host->base, STAT);
> - while (status & INT_EN_MASK && host->req_in_progress) {
> - omap_hsmmc_do_irq(host, status);
> + while (status & (INT_EN_MASK | CIRQ_EN)) {
> + if (host->req_in_progress)
> + omap_hsmmc_do_irq(host, status);
> +
> + if (status & CIRQ_EN)
> + mmc_signal_sdio_irq(host->mmc);
>  
>   /* Flush posted write */
>   status = OMAP_HSMMC_READ(host->base, STAT);
> @@ -1127,6 +1152,23 @@ static irqreturn_t omap_hsmmc_irq(int irq, void 
> *dev_id)
>   return IRQ_HANDLED;
>  }
>  
> +static irqreturn_t omap_hsmmc_wake_irq(int irq, void *dev_id)
> +{
> + struct omap_hsmmc_host *host = dev_id;
> + unsigned long flags;
> +
> + /* cirq is level triggered, disable to avoid infinite loop */
> + spin_lock_irqsave(&host->irq_lock, flags);

Do you need to save restore flags here? IRQ is already disabled since
you're in hard IRQ context so spin_lock() seems sufficient.

> + if (host->flags & HSMMC_WAKE_IRQ_ENABLED) {
> + disable_irq_nosync(host->wake_irq);
> + host->flags &= ~HSMMC_WAKE_IRQ_ENABLED;
> + }
> + spin_unlock_irqrestore(&host->irq_lock, flags);

spin_unlock() seems sufficient.

regards,
-Joel


--
To unsubscribe from this list: send the line "unsubscribe 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 v10 1/5] mmc: omap_hsmmc: Enable SDIO interrupt

2014-04-29 Thread Joel Fernandes
Minor nit...

On 04/28/2014 02:40 AM, Andreas Fenkart wrote:
[..]
>   /* Do not initialize card-specific things if the power is off */
>   if (host->power_mode == MMC_POWER_OFF)
> @@ -1117,8 +1138,12 @@ static irqreturn_t omap_hsmmc_irq(int irq, void 
> *dev_id)
>   int status;
>  
>   status = OMAP_HSMMC_READ(host->base, STAT);
> - while (status & INT_EN_MASK && host->req_in_progress) {
> - omap_hsmmc_do_irq(host, status);
> + while (status & (INT_EN_MASK | CIRQ_EN)) {
> + if (host->req_in_progress)
> + omap_hsmmc_do_irq(host, status);
> +
> + if (status & CIRQ_EN)
> + mmc_signal_sdio_irq(host->mmc);
>  
>   /* Flush posted write */
>   status = OMAP_HSMMC_READ(host->base, STAT);
> @@ -1127,6 +1152,23 @@ static irqreturn_t omap_hsmmc_irq(int irq, void 
> *dev_id)
>   return IRQ_HANDLED;
>  }
>  
> +static irqreturn_t omap_hsmmc_wake_irq(int irq, void *dev_id)
> +{
> + struct omap_hsmmc_host *host = dev_id;
> + unsigned long flags;
> +
> + /* cirq is level triggered, disable to avoid infinite loop */
> + spin_lock_irqsave(&host->irq_lock, flags);

Do you need to save restore flags here? IRQ is already disabled since
you're in hard IRQ context so spin_lock() seems sufficient.

> + if (host->flags & HSMMC_WAKE_IRQ_ENABLED) {
> + disable_irq_nosync(host->wake_irq);
> + host->flags &= ~HSMMC_WAKE_IRQ_ENABLED;
> + }
> + spin_unlock_irqrestore(&host->irq_lock, flags);

spin_unlock() seems sufficient.

regards,
-Joel

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


Re: [PATCH 1/4] ARM: dts: Add support for OMAP4 Variscite OM44 family

2014-04-29 Thread Joachim Eastwood
On 18 April 2014 17:10, Joachim Eastwood  wrote:
> Add support for VAR-SOM-OM44[1] SODIMM system on module from Variscite. SoM
> features a OMAP4460, 1GB RAM, Gigabit Ethernet (LAN7500) and optional WLAN/BT.
>
> Also add support for VAR-STK-OM44 development board from Variscite. This kit
> features a VAR-SOM-OM44 and the carrier board VAR-OM44CustomBoard[2]. The
> VAR-STK-OM44 is the same as VAR-DVK-OM44 but without the LCD display.
>
> omap4-var-stk-om44.dts replace the old and very limited omap4-var-som.dts.
>
> [1] 
> http://www.variscite.com/products/system-on-module-som/cortex-a9/var-som-om44-cpu-ti-omap-4-omap4460
> [2] 
> http://www.variscite.com/products/single-board-computers/var-om44customboard
>
> Signed-off-by: Joachim Eastwood 
> ---

Tomi,

Do you plan to push the patch that add hpd-gpios to the
"hdmi-connector" for 3.16? (nodes for my board below)
https://patchwork.kernel.org/patch/4006021/

Also in the patch set I am using your DT bindings for "panel-dpi". See
patch [2 of 4] for nodes.
https://patchwork.kernel.org/patch/4047241/

Will this patch be upstream in 3.16?

As I am about to send out a new version of this patch set it would be
nice to know if I need to split out the display stuff, for later
inclusion, or if it can go in as it is.

regards
Joachim Eastwood

> +   hdmi0: connector@0 {
> +   compatible = "hdmi-connector";
> +   pinctrl-names = "default";
> +   pinctrl-0 = <&hdmi_hpd_pins>;
> +   label = "hdmi";
> +   type = "a";
> +
> +   hpd-gpios = <&gpio2 31 GPIO_ACTIVE_HIGH>; /* gpio_63 */
> +
> +   port {
> +   hdmi_connector_in: endpoint {
> +   remote-endpoint = <&hdmi_out>;
> +   };
> +   };
> +   };
> +};
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 4/4] ARM: dts: Add LCD panel sharp ls037v7dw01 support for omap3-evm and ldp

2014-04-29 Thread Joachim Eastwood
On 30 April 2014 01:52, Tony Lindgren  wrote:
> Looks like quite a few omaps have sharp ls037v7dw01 that's configured
> as various panel dpi entries for whatever legacy reasons. For device
> tree based support, let's just configure these properly for panel
> ls037v7dw01 instead of panel dpi.
>
> This patch creates a common file for panel ls037v7dw01, and makes
> boards ldp and omap3-evm to use it. The panel for ldp is configured
> in the qvga mode and omap3-evm panel in vga mode.
>
> The ls037v7dw01 also seems to be coupled with an ad7846 touchscreen
> controller for the omaps, so let's add a basic configuration for
> the touchscreen also using the default values.
>
> Note that we can now remove the regulator-name = "vdds_dsi"
> entry for ldp, that's no longer needed as we have the entry
> for vdds_dsi-supply = <&vpll2>.
>
> Signed-off-by: Tony Lindgren 
> ---
>  .../arm/boot/dts/omap-panel-sharp-ls037v7dw01.dtsi | 82 
> ++
>  arch/arm/boot/dts/omap3-evm-37xx.dts   | 50 +
>  arch/arm/boot/dts/omap3-evm-common.dtsi| 47 +
>  arch/arm/boot/dts/omap3-ldp.dts| 31 ++--
>  4 files changed, 205 insertions(+), 5 deletions(-)
>  create mode 100644 arch/arm/boot/dts/omap-panel-sharp-ls037v7dw01.dtsi

> diff --git a/arch/arm/boot/dts/omap3-ldp.dts b/arch/arm/boot/dts/omap3-ldp.dts
> index 0abe986..50fdac9 100644
> --- a/arch/arm/boot/dts/omap3-ldp.dts
> +++ b/arch/arm/boot/dts/omap3-ldp.dts
> @@ -164,6 +164,7 @@
>
>  #include "twl4030.dtsi"
>  #include "twl4030_omap3.dtsi"
> +#include "omap-panel-sharp-ls037v7dw01.dtsi"
>
>  &i2c2 {
> clock-frequency = <40>;
> @@ -173,6 +174,31 @@
> clock-frequency = <40>;
>  };
>
> +&lcd_3v3 {
> +   gpio = <&twl_gpio 7 GPIO_ACTIVE_HIGH>;
> +   enable-active-high;
> +};
> +
> +&lcd0 {
> +   reset-gpios = <&gpio2 23 GPIO_ACTIVE_HIGH>; /* gpio55, lcd RESB */
> +   gpios = <&gpio2 24 GPIO_ACTIVE_LOW  /* gpio56, lcd MO */

enable-gpios ?

> +0  /* lcd LR */
> +0  /* lcd UD */
> +0>;/* lcd INI */
> +};

regards
Joachim Eastwood
--
To unsubscribe from this list: send the line "unsubscribe 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 08/11] ARM: dts: am33xx: Add prcm_resets node

2014-04-29 Thread Tony Lindgren
* Arnd Bergmann  [140429 13:35]:
> On Tuesday 29 April 2014 15:19:47 Dan Murphy wrote:
> > + * AM33xx reset index for PRCM Module
> > + *
> > + * Copyright 2014 Texas Instruments Inc.
> > + *
> > + * This program is free software; you can redistribute it and/or modify
> > + * it under the terms of the GNU General Public License version 2 as
> > + * published by the Free Software Foundation.
> > + */
> > +
> > +#ifndef _DT_BINDINGS_RESET_TI_AM33XX_H
> > +#define _DT_BINDINGS_RESET_TI_AM33XX_H
> > +
> > +#define RESET_DEVICE_RESET 0
> > +#define RESET_GFX_RESET1
> > +#define RESET_PER_RESET2
> > +
> > +#endif
> 
> Interfaces like this should only be used if you can't use hardware
> numbers, in general. If these numbers are in the data sheet, just
> put them directly into the dts file, as we do for interrupt numbers,
> gpio numbers, register offsets etc.
> 
> If you have made them up to define an interface between the driver
> and DT because there is no usable hardare ID, I'd suggest just using
> a single file across all SoCs that have this driver, and have
> a unified name space.

Also, it's a bit unclear how the reset controller phandle is used
referenced and used by the consumer device.. Maybe setting that up
first in a Linux generic way is a good point starting point.

Maybe something like this along the same way as clocks are set up
(completely untested):

&reset1 {
iva_reset: reset1 {
reg = /bits/ 8 <0>;
};
gfx_reset: reset1 {
reg = /bits/ 8 <1>;
};
...
};

&iva {
compatible = "ti,ivahd";
resets = <&reset1 1>;
...
};

Regards,

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


[PATCH 1/4] OMAPDSS: Fix DSS clock multiplier issue on 3703 and probably 3630

2014-04-29 Thread Tony Lindgren
Otherwise we can get often errors like the following and the
display won't come on:

omapdss APPLY error: FIFO UNDERFLOW on gfx, disabling the overlay
omapdss APPLY error: SYNC_LOST on channel lcd, restarting
the output with video overlays disabled

There are some earlier references to this issue:

http://www.spinics.net/lists/linux-omap/msg59511.html
http://www.spinics.net/lists/linux-omap/msg59724.html

It seems that it's safe to set the lower values even for 3630.
If we can confirm that 3630 works with the higher values
reliably we can add further detection.

Signed-off-by: Tony Lindgren 
---
 drivers/video/fbdev/omap2/dss/dss.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/video/fbdev/omap2/dss/dss.c 
b/drivers/video/fbdev/omap2/dss/dss.c
index d55266c..ad6561f 100644
--- a/drivers/video/fbdev/omap2/dss/dss.c
+++ b/drivers/video/fbdev/omap2/dss/dss.c
@@ -707,9 +707,10 @@ static const struct dss_features omap34xx_dss_feats 
__initconst = {
.dpi_select_source  =   &dss_dpi_select_source_omap2_omap3,
 };
 
+/* Supposedly 3630 can use div 32 mult 2, but that needs to be rechecked */
 static const struct dss_features omap3630_dss_feats __initconst = {
-   .fck_div_max=   32,
-   .dss_fck_multiplier =   1,
+   .fck_div_max=   16,
+   .dss_fck_multiplier =   2,
.parent_clk_name=   "dpll4_ck",
.dpi_select_source  =   &dss_dpi_select_source_omap2_omap3,
 };
-- 
1.8.1.1

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


[PATCH 4/4] ARM: dts: Add LCD panel sharp ls037v7dw01 support for omap3-evm and ldp

2014-04-29 Thread Tony Lindgren
Looks like quite a few omaps have sharp ls037v7dw01 that's configured
as various panel dpi entries for whatever legacy reasons. For device
tree based support, let's just configure these properly for panel
ls037v7dw01 instead of panel dpi.

This patch creates a common file for panel ls037v7dw01, and makes
boards ldp and omap3-evm to use it. The panel for ldp is configured
in the qvga mode and omap3-evm panel in vga mode.

The ls037v7dw01 also seems to be coupled with an ad7846 touchscreen
controller for the omaps, so let's add a basic configuration for
the touchscreen also using the default values.

Note that we can now remove the regulator-name = "vdds_dsi"
entry for ldp, that's no longer needed as we have the entry
for vdds_dsi-supply = <&vpll2>.

Signed-off-by: Tony Lindgren 
---
 .../arm/boot/dts/omap-panel-sharp-ls037v7dw01.dtsi | 82 ++
 arch/arm/boot/dts/omap3-evm-37xx.dts   | 50 +
 arch/arm/boot/dts/omap3-evm-common.dtsi| 47 +
 arch/arm/boot/dts/omap3-ldp.dts| 31 ++--
 4 files changed, 205 insertions(+), 5 deletions(-)
 create mode 100644 arch/arm/boot/dts/omap-panel-sharp-ls037v7dw01.dtsi

diff --git a/arch/arm/boot/dts/omap-panel-sharp-ls037v7dw01.dtsi 
b/arch/arm/boot/dts/omap-panel-sharp-ls037v7dw01.dtsi
new file mode 100644
index 000..f5252da
--- /dev/null
+++ b/arch/arm/boot/dts/omap-panel-sharp-ls037v7dw01.dtsi
@@ -0,0 +1,82 @@
+/*
+ * Common file for omap dpi panels with QVGA and reset pins
+ *
+ * Note that the board specifc DTS file needs to specify
+ * at minimum the GPIO enable-gpios for display, and
+ * gpios for gpio-backlight.
+ */
+
+/ {
+   aliases {
+   display0 = &lcd0;
+   };
+
+   backlight0: backlight {
+   compatible = "gpio-backlight";
+   };
+
+   /* 3.3V GPIO controlled regulator for LCD_ENVDD */
+   lcd_3v3: regulator-lcd-3v3 {
+   compatible = "regulator-fixed";
+   regulator-name = "lcd_3v3";
+   regulator-min-microvolt = <330>;
+   regulator-max-microvolt = <330>;
+   startup-delay-us = <7>;
+   regulator-always-on;
+   };
+
+   lcd0: display {
+   compatible = "sharp,ls037v7dw01";
+   label = "lcd";
+   power-supply = <&lcd_3v3>;
+   panel-timing {
+   clock-frequency = <540>;
+   hback-porch = <39>;
+   hactive = <240>;
+   hfront-porch = <3>;
+   hsync-len = <3>;
+   vback-porch = <7>;
+   vactive = <320>;
+   vfront-porch = <2>;
+   vsync-len = <1>;
+   hsync-active = <0>;
+   vsync-active = <0>;
+   de-active = <1>;
+   pixelclk-active = <1>;
+   };
+
+   port {
+   lcd_in: endpoint {
+   remote-endpoint = <&dpi_out>;
+   };
+   };
+   };
+};
+
+&dss {
+   status = "ok";
+   vdds_dsi-supply = <&vpll2>;
+   port {
+   dpi_out: endpoint {
+   remote-endpoint = <&lcd_in>;
+   data-lines = <18>;
+   };
+   };
+};
+
+&mcspi1 {
+   tsc2046@0 {
+   reg = <0>;  /* CS0 */
+   compatible = "ti,tsc2046";
+   spi-max-frequency = <100>;
+   vcc-supply = <&lcd_3v3>;
+   ti,x-min = /bits/ 16 <0>;
+   ti,x-max = /bits/ 16 <8000>;
+   ti,y-min = /bits/ 16 <0>;
+   ti,y-max = /bits/ 16 <4800>;
+   ti,x-plate-ohms = /bits/ 16 <40>;
+   ti,pressure-max = /bits/ 16 <255>;
+   ti,swap-xy;
+   linux,wakeup;
+   };
+};
diff --git a/arch/arm/boot/dts/omap3-evm-37xx.dts 
b/arch/arm/boot/dts/omap3-evm-37xx.dts
index 4df68ad..a181e30 100644
--- a/arch/arm/boot/dts/omap3-evm-37xx.dts
+++ b/arch/arm/boot/dts/omap3-evm-37xx.dts
@@ -26,7 +26,44 @@
};
 };
 
+&dss {
+   pinctrl-names = "default";
+   pinctrl-0 = <
+   &dss_dpi_pins1
+   &dss_dpi_pins2
+   >;
+};
+
 &omap3_pmx_core {
+   dss_dpi_pins1: pinmux_dss_dpi_pins2 {
+   pinctrl-single,pins = <
+   OMAP3_CORE1_IOPAD(0x20d4, PIN_OUTPUT | MUX_MODE0)   /* 
dss_pclk.dss_pclk */
+   OMAP3_CORE1_IOPAD(0x20d6, PIN_OUTPUT | MUX_MODE0)   /* 
dss_hsync.dss_hsync */
+   OMAP3_CORE1_IOPAD(0x20d8, PIN_OUTPUT | MUX_MODE0)   /* 
dss_vsync.dss_vsync */
+   OMAP3_CORE1_IOPAD(0x20da, PIN_OUTPUT | MUX_MODE0)   /* 
dss_acbias.dss_acbias */
+
+   OMAP3_CORE1_IOPAD(0x20e8, PIN_OUTPUT | MUX_MODE0)   /* 
dss_data6.

[PATCH 2/4] OMAPDSS: panel-sharp-ls037v7dw01: update to use gpiod

2014-04-29 Thread Tony Lindgren
Using gpiod will make it easier to add device tree support
for this panel in the following patches.

Note that all the GPIOs for this panel are optional, any
of the the GPIOs could be configured with external pulls
instead of GPIOs, so let's not error out if GPIOs are not
found to make the panel more generic.

Signed-off-by: Tony Lindgren 
---
 .../omap2/displays-new/panel-sharp-ls037v7dw01.c   | 92 +-
 1 file changed, 38 insertions(+), 54 deletions(-)

diff --git a/drivers/video/fbdev/omap2/displays-new/panel-sharp-ls037v7dw01.c 
b/drivers/video/fbdev/omap2/displays-new/panel-sharp-ls037v7dw01.c
index b2f710b..de8473a 100644
--- a/drivers/video/fbdev/omap2/displays-new/panel-sharp-ls037v7dw01.c
+++ b/drivers/video/fbdev/omap2/displays-new/panel-sharp-ls037v7dw01.c
@@ -26,11 +26,11 @@ struct panel_drv_data {
 
struct omap_video_timings videomode;
 
-   int resb_gpio;
-   int ini_gpio;
-   int mo_gpio;
-   int lr_gpio;
-   int ud_gpio;
+   struct gpio_desc *resb_gpio;/* low = reset active min 20 us */
+   struct gpio_desc *ini_gpio; /* high = power on */
+   struct gpio_desc *mo_gpio;  /* low = 480x640, high = 240x320 */
+   struct gpio_desc *lr_gpio;  /* high = conventional horizontal 
scanning */
+   struct gpio_desc *ud_gpio;  /* high = conventional vertical 
scanning */
 };
 
 static const struct omap_video_timings sharp_ls_timings = {
@@ -105,11 +105,11 @@ static int sharp_ls_enable(struct omap_dss_device *dssdev)
/* wait couple of vsyncs until enabling the LCD */
msleep(50);
 
-   if (gpio_is_valid(ddata->resb_gpio))
-   gpio_set_value_cansleep(ddata->resb_gpio, 1);
+   if (!IS_ERR(ddata->resb_gpio))
+   gpiod_set_value_cansleep(ddata->resb_gpio, 1);
 
-   if (gpio_is_valid(ddata->ini_gpio))
-   gpio_set_value_cansleep(ddata->ini_gpio, 1);
+   if (!IS_ERR(ddata->ini_gpio))
+   gpiod_set_value_cansleep(ddata->ini_gpio, 1);
 
dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
 
@@ -124,11 +124,11 @@ static void sharp_ls_disable(struct omap_dss_device 
*dssdev)
if (!omapdss_device_is_enabled(dssdev))
return;
 
-   if (gpio_is_valid(ddata->ini_gpio))
-   gpio_set_value_cansleep(ddata->ini_gpio, 0);
+   if (!IS_ERR(ddata->ini_gpio))
+   gpiod_set_value_cansleep(ddata->ini_gpio, 0);
 
-   if (gpio_is_valid(ddata->resb_gpio))
-   gpio_set_value_cansleep(ddata->resb_gpio, 0);
+   if (!IS_ERR(ddata->resb_gpio))
+   gpiod_set_value_cansleep(ddata->resb_gpio, 0);
 
/* wait at least 5 vsyncs after disabling the LCD */
 
@@ -182,6 +182,21 @@ static struct omap_dss_driver sharp_ls_ops = {
.get_resolution = omapdss_default_get_resolution,
 };
 
+static struct gpio_desc *
+sharp_ls_get_gpio(struct device *dev, int gpio, unsigned long flags,
+ char *desc)
+{
+   int r;
+
+   r = devm_gpio_request_one(dev, gpio, flags, desc);
+   if (r) {
+   dev_err(dev, "no %s gpio\n", desc);
+   return ERR_PTR(r);
+   }
+
+   return gpio_to_desc(gpio);
+}
+
 static int sharp_ls_probe_pdata(struct platform_device *pdev)
 {
const struct panel_sharp_ls037v7dw01_platform_data *pdata;
@@ -204,11 +219,16 @@ static int sharp_ls_probe_pdata(struct platform_device 
*pdev)
dssdev = &ddata->dssdev;
dssdev->name = pdata->name;
 
-   ddata->resb_gpio = pdata->resb_gpio;
-   ddata->ini_gpio = pdata->ini_gpio;
-   ddata->mo_gpio = pdata->mo_gpio;
-   ddata->lr_gpio = pdata->lr_gpio;
-   ddata->ud_gpio = pdata->ud_gpio;
+   ddata->mo_gpio = sharp_ls_get_gpio(&pdev->dev, pdata->mo_gpio,
+  GPIOF_OUT_INIT_LOW, "lcd MO");
+   ddata->lr_gpio = sharp_ls_get_gpio(&pdev->dev, pdata->lr_gpio,
+  GPIOF_OUT_INIT_HIGH, "lcd LR");
+   ddata->ud_gpio = sharp_ls_get_gpio(&pdev->dev, pdata->ud_gpio,
+  GPIOF_OUT_INIT_HIGH, "lcd UD");
+   ddata->resb_gpio = sharp_ls_get_gpio(&pdev->dev, pdata->resb_gpio,
+GPIOF_OUT_INIT_LOW, "lcd RESB");
+   ddata->ini_gpio = sharp_ls_get_gpio(&pdev->dev, pdata->ini_gpio,
+   GPIOF_OUT_INIT_LOW, "lcd INI");
 
return 0;
 }
@@ -233,41 +253,6 @@ static int sharp_ls_probe(struct platform_device *pdev)
return -ENODEV;
}
 
-   if (gpio_is_valid(ddata->mo_gpio)) {
-   r = devm_gpio_request_one(&pdev->dev, ddata->mo_gpio,
-   GPIOF_OUT_INIT_LOW, "lcd MO");
-   if (r)
-   goto err_gpio;
-   }
-
-   if (gpio_is_valid(ddata->lr_gpio)) {
-   r = devm_gpio_request_one(&pdev->dev, ddata->lr_gpio,
-   GPIO

[PATCH 3/4] OMAPDSS: panel-sharp-ls037v7dw01: add device tree support

2014-04-29 Thread Tony Lindgren
We can pass the GPIO configuration for ls037v7dw01 in a standard
gpios property.

Signed-off-by: Tony Lindgren 
---
 .../bindings/panel/sharp,ls037v7dw01.txt   | 53 ++
 .../omap2/displays-new/panel-sharp-ls037v7dw01.c   | 84 --
 2 files changed, 133 insertions(+), 4 deletions(-)
 create mode 100644 
Documentation/devicetree/bindings/panel/sharp,ls037v7dw01.txt

diff --git a/Documentation/devicetree/bindings/panel/sharp,ls037v7dw01.txt 
b/Documentation/devicetree/bindings/panel/sharp,ls037v7dw01.txt
new file mode 100644
index 000..7f6f5e1
--- /dev/null
+++ b/Documentation/devicetree/bindings/panel/sharp,ls037v7dw01.txt
@@ -0,0 +1,53 @@
+SHARP LS037V7DW01 TFT-LCD panel
+
+Required properties:
+- compatible: should be "sharp,ls037v7dw01"
+
+Optional properties:
+- reset-gpios: a GPIO spec for the optional reset pin
+- enable-gpios: a GPIO array for the optional configuration GPIOs
+  ordered MO, LR, UD, INI as specified in the LS037V7DW01.pdf file.
+
+This binding is compatible with the simple-panel binding, which is specified
+in simple-panel.txt in this directory.
+
+This panel can have zero to five GPIOs to configure
+to change configuration between QVGA and VGA mode
+and the scan direction. As these pins can be also
+configured with external pulls, all the GPIOs are
+considered optional with holes in the array.
+
+Example when connected to a omap2+ based device:
+
+   lcd0: display {
+   compatible = "sharp,ls037v7dw01";
+   power-supply = <&lcd_3v3>;
+   reset-gpios = <&gpio5 27 GPIO_ACTIVE_HIGH>; /* gpio155, lcd 
RESB */
+   enable-gpios = <&gpio5 26 GPIO_ACTIVE_HIGH  /* gpio154, lcd 
MO */
+   &gpio1 2 GPIO_ACTIVE_HIGH   /* gpio2, lcd 
LR */
+   &gpio1 3 GPIO_ACTIVE_HIGH   /* gpio3, lcd 
UD */
+   &gpio5 24 GPIO_ACTIVE_HIGH>;/* gpio152, lcd 
INI */
+
+   panel-timing {
+   clock-frequency = <1920>;
+   hback-porch = <28>;
+   hactive = <480>;
+   hfront-porch = <1>;
+   hsync-len = <2>;
+   vback-porch = <1>;
+   vactive = <640>;
+   vfront-porch = <1>;
+   vsync-len = <1>;
+   hsync-active = <0>;
+   vsync-active = <0>;
+   de-active = <1>;
+   pixelclk-active = <1>;
+   };
+
+   port {
+   lcd_in: endpoint {
+   remote-endpoint = <&dpi_out>;
+   };
+   };
+   };
+
diff --git a/drivers/video/fbdev/omap2/displays-new/panel-sharp-ls037v7dw01.c 
b/drivers/video/fbdev/omap2/displays-new/panel-sharp-ls037v7dw01.c
index de8473a..3a04fb0 100644
--- a/drivers/video/fbdev/omap2/displays-new/panel-sharp-ls037v7dw01.c
+++ b/drivers/video/fbdev/omap2/displays-new/panel-sharp-ls037v7dw01.c
@@ -12,15 +12,19 @@
 #include 
 #include 
 #include 
+#include 
+#include 
 #include 
 #include 
-
+#include 
+#include 
 #include 
 #include 
 
 struct panel_drv_data {
struct omap_dss_device dssdev;
struct omap_dss_device *in;
+   struct regulator *vcc;
 
int data_lines;
 
@@ -95,7 +99,8 @@ static int sharp_ls_enable(struct omap_dss_device *dssdev)
if (omapdss_device_is_enabled(dssdev))
return 0;
 
-   in->ops.dpi->set_data_lines(in, ddata->data_lines);
+   if (ddata->data_lines)
+   in->ops.dpi->set_data_lines(in, ddata->data_lines);
in->ops.dpi->set_timings(in, &ddata->videomode);
 
r = in->ops.dpi->enable(in);
@@ -230,6 +235,67 @@ static int sharp_ls_probe_pdata(struct platform_device 
*pdev)
ddata->ini_gpio = sharp_ls_get_gpio(&pdev->dev, pdata->ini_gpio,
GPIOF_OUT_INIT_LOW, "lcd INI");
 
+   ddata->videomode = sharp_ls_timings;
+
+   return 0;
+}
+
+static struct gpio_desc *
+sharp_ls_get_gpio_of(struct device *dev, int index, int val, char *desc)
+{
+   struct gpio_desc *gpio;
+
+   gpio = devm_gpiod_get_index(dev, desc, index);
+   if (!IS_ERR(gpio))
+   gpiod_direction_output(gpio, val);
+
+   return gpio;
+}
+
+static int sharp_ls_probe_of(struct platform_device *pdev)
+{
+   struct panel_drv_data *ddata = platform_get_drvdata(pdev);
+   struct device_node *node = pdev->dev.of_node;
+   struct omap_dss_device *in;
+   struct display_timing timing;
+   struct videomode vm;
+   int r;
+
+   ddata->vcc = devm_regulator_get(&pdev->dev, "envdd");
+   if (IS_ERR(ddata->vcc)) {
+   dev_err(&pdev->dev, "failed to get regulator\n");
+   return PTR_ERR(ddata->vcc);
+   }
+
+   r = regulator_enable(ddata->vcc);
+   i

[PATCH 0/4] OMAPDSS: Add support for panel ls037v7dw01

2014-04-29 Thread Tony Lindgren
Hi all,

Here are few patches to add devicetree support for panel ls037v7dw01
that's found on many omap3 boards. They seem to be often mis-configured
as various panel dpi entries, but really should be move to use panel
ls037v7dw01 instead. This panel is found at least on the omap3 sdp,
ldp, omap3 evm and few other development boards.

Regards,

Tony

Tony Lindgren (4):
  OMAPDSS: Fix DSS clock multiplier issue on 3703 and probably 3630
  OMAPDSS: panel-sharp-ls037v7dw01: update to use gpiod
  OMAPDSS: panel-sharp-ls037v7dw01: add device tree support
  ARM: dts: Add LCD panel sharp ls037v7dw01 support for omap3-evm and
ldp

 .../bindings/panel/sharp,ls037v7dw01.txt   |  53 +++
 .../arm/boot/dts/omap-panel-sharp-ls037v7dw01.dtsi |  82 ++
 arch/arm/boot/dts/omap3-evm-37xx.dts   |  50 ++
 arch/arm/boot/dts/omap3-evm-common.dtsi|  47 ++
 arch/arm/boot/dts/omap3-ldp.dts|  31 +++-
 .../omap2/displays-new/panel-sharp-ls037v7dw01.c   | 176 ++---
 drivers/video/fbdev/omap2/dss/dss.c|   5 +-
 7 files changed, 379 insertions(+), 65 deletions(-)
 create mode 100644 
Documentation/devicetree/bindings/panel/sharp,ls037v7dw01.txt
 create mode 100644 arch/arm/boot/dts/omap-panel-sharp-ls037v7dw01.dtsi

-- 
1.8.1.1

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


Re: [PATCHv2 3/9] ASoC: omap: rx51: Use devm_snd_soc_register_card

2014-04-29 Thread Mark Brown
On Mon, Apr 28, 2014 at 04:07:21PM +0200, Sebastian Reichel wrote:
> This patch converts the rx51 ASoC module to use
> devm_snd_soc_register_card.

Applied, thanks.


signature.asc
Description: Digital signature


Re: [PATCHv2 2/9] ASoC: omap: rx51: Add module alias

2014-04-29 Thread Mark Brown
On Mon, Apr 28, 2014 at 04:07:20PM +0200, Sebastian Reichel wrote:
> Add module alias to support driver autoloading.

Applied, thanks.


signature.asc
Description: Digital signature


Re: [PATCHv2 1/9] ASoC: omap: rx51: Use static const char * const arrays

2014-04-29 Thread Mark Brown
On Mon, Apr 28, 2014 at 04:07:19PM +0200, Sebastian Reichel wrote:
> Mark the array and the string const by using "static const char * const
> foo[]" instead of "static const char* foo[]".

Applied, thanks.


signature.asc
Description: Digital signature


Re: [PATCH 2/5] ASoC: Add HA (HEAD acoustics) DSP codec driver template

2014-04-29 Thread Mark Brown
On Mon, Apr 28, 2014 at 02:17:53PM +0200, Stefan Roese wrote:

> +static int ha_dsp_hw_params(struct snd_pcm_substream *substream,
> + struct snd_pcm_hw_params *params,
> + struct snd_soc_dai *dai)
> +{
> + struct snd_soc_pcm_runtime *rtd = substream->private_data;
> + struct snd_soc_codec *codec = rtd->codec;
> +
> + dev_dbg(codec->dev, "Sample format 0x%X\n", params_format(params));
> + dev_dbg(codec->dev, "Channels %d\n", params_channels(params));
> + dev_dbg(codec->dev, "Rate %d\n", params_rate(params));
> +
> + return 0;
> +}

This doesn't do anything, you should either implement active code here
or remove it (I note that a range of sample rates are supported and the
CODEC can be clock master so I'd expect to see code here).

> + /* codec role */
> + switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
> + case SND_SOC_DAIFMT_CBM_CFM:
> + dev_dbg(codec->dev, "Codec is master\n");
> + break;
> + case SND_SOC_DAIFMT_CBS_CFS:
> + dev_dbg(codec->dev, "Codec is slave\n");
> + break;
> + default:
> + return -EINVAL;
> + }

This isn't doing anything with what it parsed, how does that work?

> +/*
> + * This name/ID is neded to match the DT node for the codec
> + */
> +static const struct i2c_device_id ha_dsp_i2c_id[] = {
> + { "ha-dsp-audio", 0 },
> + { }
> +};
> +MODULE_DEVICE_TABLE(i2c, ha_dsp_i2c_id);

This doesn't have any actual part numbers?


signature.asc
Description: Digital signature


Re: [RFC 01/11] drivers: reset: TI: SoC reset controller support.

2014-04-29 Thread Arnd Bergmann
On Tuesday 29 April 2014 15:19:40 Dan Murphy wrote:
> +#ifndef _RESET_TI_H_
> +#define _RESET_TI_H_
> +
> +#ifdef CONFIG_RESET_TI
> +void ti_dt_reset_init(void);
> +#else
> +static inline void ti_dt_reset_init(void){ return; };
> +#endif

Why can't this be a regular platform device driver that gets
initialized through an initcall rather than get called from
platform code?

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: [RFC 08/11] ARM: dts: am33xx: Add prcm_resets node

2014-04-29 Thread Arnd Bergmann
On Tuesday 29 April 2014 15:19:47 Dan Murphy wrote:
> + * AM33xx reset index for PRCM Module
> + *
> + * Copyright 2014 Texas Instruments Inc.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + */
> +
> +#ifndef _DT_BINDINGS_RESET_TI_AM33XX_H
> +#define _DT_BINDINGS_RESET_TI_AM33XX_H
> +
> +#define RESET_DEVICE_RESET 0
> +#define RESET_GFX_RESET1
> +#define RESET_PER_RESET2
> +
> +#endif

Interfaces like this should only be used if you can't use hardware
numbers, in general. If these numbers are in the data sheet, just
put them directly into the dts file, as we do for interrupt numbers,
gpio numbers, register offsets etc.

If you have made them up to define an interface between the driver
and DT because there is no usable hardare ID, I'd suggest just using
a single file across all SoCs that have this driver, and have
a unified name space.

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


[RFC 09/11] ARM: dts: am4372: Add prcm_resets node

2014-04-29 Thread Dan Murphy
Add the prcm_resets node to the prcm parent node.
Add the dt-bindings header to the DT file

Signed-off-by: Dan Murphy 
---
 arch/arm/boot/dts/am4372.dtsi|6 ++
 include/dt-bindings/reset/ti,am437x-resets.h |   19 +++
 2 files changed, 25 insertions(+)
 create mode 100644 include/dt-bindings/reset/ti,am437x-resets.h

diff --git a/arch/arm/boot/dts/am4372.dtsi b/arch/arm/boot/dts/am4372.dtsi
index 36d523a..f8bd4ca 100644
--- a/arch/arm/boot/dts/am4372.dtsi
+++ b/arch/arm/boot/dts/am4372.dtsi
@@ -10,6 +10,7 @@
 
 #include 
 #include 
+#include 
 
 #include "skeleton.dtsi"
 
@@ -84,6 +85,11 @@
 
prcm_clockdomains: clockdomains {
};
+
+   prcm_resets: resets {
+   compatible = "ti,am4372-resets";
+   #reset-cells = <1>;
+   };
};
 
scrm: scrm@44e1 {
diff --git a/include/dt-bindings/reset/ti,am437x-resets.h 
b/include/dt-bindings/reset/ti,am437x-resets.h
new file mode 100644
index 000..cf3e329
--- /dev/null
+++ b/include/dt-bindings/reset/ti,am437x-resets.h
@@ -0,0 +1,19 @@
+/*
+ * AM437x reset index for PRCM Module
+ *
+ * Copyright 2014 Texas Instruments Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef _DT_BINDINGS_RESET_TI_AM437X_H
+#define _DT_BINDINGS_RESET_TI_AM437X_H
+
+#define RESET_DEVICE_RESET 0
+#define RESET_ICSS_RESET   1
+#define RESET_GFX_RESET2
+#define RESET_PER_RESET3
+
+#endif
-- 
1.7.9.5

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


[RFC 03/11] drivers: reset: omap5: Add reset data for omap5

2014-04-29 Thread Dan Murphy
Add the reset register data for the omap5 SoC.

Signed-off-by: Dan Murphy 
---
 drivers/reset/ti/Makefile |1 +
 drivers/reset/ti/reset-ti-data.h  |2 ++
 drivers/reset/ti/reset-ti-omap5.c |   61 +
 drivers/reset/ti/reset-ti.c   |3 ++
 4 files changed, 67 insertions(+)
 create mode 100644 drivers/reset/ti/reset-ti-omap5.c

diff --git a/drivers/reset/ti/Makefile b/drivers/reset/ti/Makefile
index 622eb3b..4d2d06c 100644
--- a/drivers/reset/ti/Makefile
+++ b/drivers/reset/ti/Makefile
@@ -1,2 +1,3 @@
 obj-$(CONFIG_RESET_TI) += reset-ti.o
 obj-$(CONFIG_SOC_DRA7XX) += reset-ti-dra7xx.o
+obj-$(CONFIG_SOC_OMAP5) += reset-ti-omap5.o
diff --git a/drivers/reset/ti/reset-ti-data.h b/drivers/reset/ti/reset-ti-data.h
index 5812ed5..d3c6d42 100644
--- a/drivers/reset/ti/reset-ti-data.h
+++ b/drivers/reset/ti/reset-ti-data.h
@@ -56,4 +56,6 @@ struct ti_reset_data {
 };
 
 extern struct ti_reset_data dra7_reset_data;
+extern struct ti_reset_data omap5_reset_data;
+
 #endif
diff --git a/drivers/reset/ti/reset-ti-omap5.c 
b/drivers/reset/ti/reset-ti-omap5.c
new file mode 100644
index 000..3e7529c
--- /dev/null
+++ b/drivers/reset/ti/reset-ti-omap5.c
@@ -0,0 +1,61 @@
+/*
+ * OMAP5 reset data for PRCM Module
+ *
+ * Copyright 2014 Texas Instruments Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include "reset-ti-data.h"
+
+static struct ti_reset_reg_data omap5_reset_reg_data[] = {
+   {
+   .rstctrl_offs = 0x1c00,
+   .rstctrl_bit = 0x0,
+   .rstst_offs = 0x1c04,
+   .rstst_bit = 0x0,
+   },
+   {
+   .rstctrl_offs = 0x410,
+   .rstctrl_bit = 0x0,
+   .rstst_offs = 0x414,
+   .rstst_bit = 0x0,
+   }, /* DSP_RESET */
+   {
+   .rstctrl_offs = 0x410,
+   .rstctrl_bit = 0x1,
+   .rstst_offs = 0x414,
+   .rstst_bit = 0x1,
+   }, /* DSP_MMU_CACHE */
+   {
+   .rstctrl_offs = 0x910,
+   .rstctrl_bit = 0x0,
+   .rstst_offs = 0x914,
+   .rstst_bit = 0x0,
+   }, /* IPU_CPU0 */
+   {
+   .rstctrl_offs = 0x910,
+   .rstctrl_bit = 0x1,
+   .rstst_offs = 0x914,
+   .rstst_bit = 0x1,
+   }, /* IPU_CPU1 */
+   {
+   .rstctrl_offs = 0x910,
+   .rstctrl_bit = 0x2,
+   .rstst_offs = 0x914,
+   .rstst_bit = 0x2,
+   }, /* IPU_MMU_CACHE */
+   {
+   .rstctrl_offs = 0x1210,
+   .rstctrl_bit = 0,
+   .rstst_offs = 0x1214,
+   .rstst_bit  = 0,
+   },
+};
+
+struct ti_reset_data omap5_reset_data = {
+   .reg_data   = omap5_reset_reg_data,
+   .nr_resets  = ARRAY_SIZE(omap5_reset_reg_data),
+};
diff --git a/drivers/reset/ti/reset-ti.c b/drivers/reset/ti/reset-ti.c
index 486b77c..7310827 100644
--- a/drivers/reset/ti/reset-ti.c
+++ b/drivers/reset/ti/reset-ti.c
@@ -135,6 +135,9 @@ static const struct of_device_id ti_reset_of_match[] = {
 #ifdef CONFIG_SOC_DRA7XX
{ .compatible = "ti,dra7-resets", .data = &dra7_reset_data,},
 #endif
+#ifdef CONFIG_SOC_OMAP5
+   { .compatible = "ti,omap5-resets", .data = &omap5_reset_data,},
+#endif
{},
 };
 
-- 
1.7.9.5

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


[RFC] TI Reset Driver adapted to the reset core

2014-04-29 Thread Dan Murphy
This is a RFC on the TI reset adoption to the Reset framework.

The patchset was derived from work from Rajendra Nayak and Afzal Mohammed
who have had similar code offerings.  One of the major differences here
is the SoC data has been broken out so that the data and code are independent.

There is currently no OMAP4 or prior support added to this patch series.
Once the RFC is complete and the code infrastructure looks to be acceptable
I will add these data sets into the patchset.

Dan 

--
To unsubscribe from this list: send the line "unsubscribe 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 11/11] ARM: dts: omap5: Add prm_resets node

2014-04-29 Thread Dan Murphy
Add the prm_resets node to the prm parent node.
Add the dt-bindings header to the DT file

Signed-off-by: Dan Murphy 
---
 arch/arm/boot/dts/omap5.dtsi|6 ++
 include/dt-bindings/reset/ti,omap5-resets.h |   22 ++
 2 files changed, 28 insertions(+)
 create mode 100644 include/dt-bindings/reset/ti,omap5-resets.h

diff --git a/arch/arm/boot/dts/omap5.dtsi b/arch/arm/boot/dts/omap5.dtsi
index f8c9855..82eebe7 100644
--- a/arch/arm/boot/dts/omap5.dtsi
+++ b/arch/arm/boot/dts/omap5.dtsi
@@ -10,6 +10,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include "skeleton.dtsi"
 
@@ -134,6 +135,11 @@
 
prm_clockdomains: clockdomains {
};
+
+   prm_resets: resets {
+   compatible = "ti,omap5-resets";
+   #reset-cells = <1>;
+   };
};
 
cm_core_aon: cm_core_aon@4a004000 {
diff --git a/include/dt-bindings/reset/ti,omap5-resets.h 
b/include/dt-bindings/reset/ti,omap5-resets.h
new file mode 100644
index 000..33bb295
--- /dev/null
+++ b/include/dt-bindings/reset/ti,omap5-resets.h
@@ -0,0 +1,22 @@
+/*
+ * OMAP5 reset index for PRCM Module
+ *
+ * Copyright 2014 Texas Instruments Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef _DT_BINDINGS_RESET_TI_OMAP5_H
+#define _DT_BINDINGS_RESET_TI_OMAP5_H
+
+#define RESET_DEVICE_RESET 0
+#define RESET_DSP_RESET1
+#define RESET_DSP_MMU_CACHE_RESET  2
+#define RESET_IPU_CPU0_RESET   3
+#define RESET_IPU_CPU1_RESET   4
+#define RESET_IPU_MMU_CACHE_RESET  5
+#define RESET_IVA_RESET6
+
+#endif
-- 
1.7.9.5

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


[RFC 05/11] drivers: reset: am43xx: Add reset data for am43xx

2014-04-29 Thread Dan Murphy
Add the reset register data for the am43xx SoC.

Signed-off-by: Dan Murphy 
---
 drivers/reset/ti/Makefile  |1 +
 drivers/reset/ti/reset-ti-am43xx.c |   43 
 drivers/reset/ti/reset-ti-data.h   |1 +
 3 files changed, 45 insertions(+)
 create mode 100644 drivers/reset/ti/reset-ti-am43xx.c

diff --git a/drivers/reset/ti/Makefile b/drivers/reset/ti/Makefile
index f0dbd01..3d362c2 100644
--- a/drivers/reset/ti/Makefile
+++ b/drivers/reset/ti/Makefile
@@ -2,3 +2,4 @@ obj-$(CONFIG_RESET_TI) += reset-ti.o
 obj-$(CONFIG_SOC_DRA7XX) += reset-ti-dra7xx.o
 obj-$(CONFIG_SOC_OMAP5) += reset-ti-omap5.o
 obj-$(CONFIG_SOC_AM33XX) += reset-ti-am33xx.o
+obj-$(CONFIG_SOC_AM43XX) += reset-ti-am43xx.o
diff --git a/drivers/reset/ti/reset-ti-am43xx.c 
b/drivers/reset/ti/reset-ti-am43xx.c
new file mode 100644
index 000..cfb283b
--- /dev/null
+++ b/drivers/reset/ti/reset-ti-am43xx.c
@@ -0,0 +1,43 @@
+/*
+ * am43xx reset data for PRCM Module
+ *
+ * Copyright 2014 Texas Instruments Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include "reset-ti-data.h"
+
+static struct ti_reset_reg_data am43x_reset_reg_data[] = {
+   {
+   .rstctrl_offs = 0x4000,
+   .rstctrl_bit = 0,
+   .rstst_offs = 0x4004,
+   .rstst_bit  = 0,
+   },
+   {
+   .rstctrl_offs = 0x810,
+   .rstctrl_bit = 1,
+   .rstst_offs = 0x814,
+   .rstst_bit  = 0,
+   },
+   {
+   .rstctrl_offs   = 0x410,
+   .rstst_offs = 0x414,
+   .rstctrl_bit= 0,
+   .rstst_bit  = 0,
+   },
+   {
+   .rstctrl_offs   = 0x2010,
+   .rstst_offs = 0x2014,
+   .rstctrl_bit= 3,
+   .rstst_bit  = 5,
+   },
+};
+
+struct ti_reset_data am43x_reset_data = {
+   .reg_data   = am43x_reset_reg_data,
+   .nr_resets  = ARRAY_SIZE(am43x_reset_reg_data),
+};
diff --git a/drivers/reset/ti/reset-ti-data.h b/drivers/reset/ti/reset-ti-data.h
index 48a1476..f56f1a5 100644
--- a/drivers/reset/ti/reset-ti-data.h
+++ b/drivers/reset/ti/reset-ti-data.h
@@ -58,5 +58,6 @@ struct ti_reset_data {
 extern struct ti_reset_data dra7_reset_data;
 extern struct ti_reset_data omap5_reset_data;
 extern struct ti_reset_data am335x_reset_data;
+extern struct ti_reset_data am43x_reset_data;
 
 #endif
-- 
1.7.9.5

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


[RFC 02/11] drivers: reset: dra7: Add reset data for dra7xx

2014-04-29 Thread Dan Murphy
Add the reset register data for the dra7xx SoC.
Include the dt-bindings header to properly index
the right reset node.

Signed-off-by: Dan Murphy 
---
 drivers/reset/ti/Makefile  |1 +
 drivers/reset/ti/reset-ti-data.h   |1 +
 drivers/reset/ti/reset-ti-dra7xx.c |   61 
 drivers/reset/ti/reset-ti.c|3 ++
 4 files changed, 66 insertions(+)
 create mode 100644 drivers/reset/ti/reset-ti-dra7xx.c

diff --git a/drivers/reset/ti/Makefile b/drivers/reset/ti/Makefile
index 55ab3f5..622eb3b 100644
--- a/drivers/reset/ti/Makefile
+++ b/drivers/reset/ti/Makefile
@@ -1 +1,2 @@
 obj-$(CONFIG_RESET_TI) += reset-ti.o
+obj-$(CONFIG_SOC_DRA7XX) += reset-ti-dra7xx.o
diff --git a/drivers/reset/ti/reset-ti-data.h b/drivers/reset/ti/reset-ti-data.h
index 6afdf37..5812ed5 100644
--- a/drivers/reset/ti/reset-ti-data.h
+++ b/drivers/reset/ti/reset-ti-data.h
@@ -55,4 +55,5 @@ struct ti_reset_data {
u8  nr_resets;
 };
 
+extern struct ti_reset_data dra7_reset_data;
 #endif
diff --git a/drivers/reset/ti/reset-ti-dra7xx.c 
b/drivers/reset/ti/reset-ti-dra7xx.c
new file mode 100644
index 000..764f83e
--- /dev/null
+++ b/drivers/reset/ti/reset-ti-dra7xx.c
@@ -0,0 +1,61 @@
+/*
+ * dra7xx reset data for PRCM Module
+ *
+ * Copyright 2014 Texas Instruments Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include "reset-ti-data.h"
+
+static struct ti_reset_reg_data dra7_reset_reg_data[] = {
+   {
+   .rstctrl_offs = 0x1D00,
+   .rstctrl_bit = 0x0,
+   .rstst_offs = 0x1D04,
+   .rstst_bit = 0x0,
+   },
+   {
+   .rstctrl_offs = 0x410,
+   .rstctrl_bit = 0x0,
+   .rstst_offs = 0x414,
+   .rstst_bit = 0x0,
+   },
+   {
+   .rstctrl_offs = 0x510,
+   .rstctrl_bit = 0x0,
+   .rstst_offs = 0x514,
+   .rstst_bit = 0x0,
+   }, /* IPU_CPU0 */
+   {
+   .rstctrl_offs = 0x510,
+   .rstctrl_bit = 0x1,
+   .rstst_offs = 0x514,
+   .rstst_bit = 0x1,
+   }, /* IPU_CPU1 */
+   {
+   .rstctrl_offs = 0x510,
+   .rstctrl_bit = 0x2,
+   .rstst_offs = 0x514,
+   .rstst_bit = 0x2,
+   }, /* IPU_MMU_CACHE */
+   {
+   .rstctrl_offs = 0xf10,
+   .rstctrl_bit = 0,
+   .rstst_offs = 0xf14,
+   .rstst_bit  = 0,
+   },
+   {
+   .rstctrl_offs = 0x1310,
+   .rstctrl_bit = 0,
+   .rstst_offs = 0x1314,
+   .rstst_bit  = 0,
+   },
+};
+
+struct ti_reset_data dra7_reset_data = {
+   .reg_data   = dra7_reset_reg_data,
+   .nr_resets  = ARRAY_SIZE(dra7_reset_reg_data),
+};
diff --git a/drivers/reset/ti/reset-ti.c b/drivers/reset/ti/reset-ti.c
index 1d38069..486b77c 100644
--- a/drivers/reset/ti/reset-ti.c
+++ b/drivers/reset/ti/reset-ti.c
@@ -132,6 +132,9 @@ static struct reset_control_ops ti_reset_ops = {
 };
 
 static const struct of_device_id ti_reset_of_match[] = {
+#ifdef CONFIG_SOC_DRA7XX
+   { .compatible = "ti,dra7-resets", .data = &dra7_reset_data,},
+#endif
{},
 };
 
-- 
1.7.9.5

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


[RFC 08/11] ARM: dts: am33xx: Add prcm_resets node

2014-04-29 Thread Dan Murphy
Add the prcm_resets node to the prcm parent node.
Add the dt-bindings header to the DT file

Signed-off-by: Dan Murphy 
---
 arch/arm/boot/dts/am33xx.dtsi|6 ++
 include/dt-bindings/reset/ti,am33xx-resets.h |   18 ++
 2 files changed, 24 insertions(+)
 create mode 100644 include/dt-bindings/reset/ti,am33xx-resets.h

diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
index 07f283c..df9d9c6 100644
--- a/arch/arm/boot/dts/am33xx.dtsi
+++ b/arch/arm/boot/dts/am33xx.dtsi
@@ -10,6 +10,7 @@
 
 #include 
 #include 
+#include 
 
 #include "skeleton.dtsi"
 
@@ -117,6 +118,11 @@
 
prcm_clockdomains: clockdomains {
};
+
+   prcm_resets: resets {
+   compatible = "ti,am335x-resets";
+   #reset-cells = <1>;
+   };
};
 
scrm: scrm@44e1 {
diff --git a/include/dt-bindings/reset/ti,am33xx-resets.h 
b/include/dt-bindings/reset/ti,am33xx-resets.h
new file mode 100644
index 000..dfe7954
--- /dev/null
+++ b/include/dt-bindings/reset/ti,am33xx-resets.h
@@ -0,0 +1,18 @@
+/*
+ * AM33xx reset index for PRCM Module
+ *
+ * Copyright 2014 Texas Instruments Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef _DT_BINDINGS_RESET_TI_AM33XX_H
+#define _DT_BINDINGS_RESET_TI_AM33XX_H
+
+#define RESET_DEVICE_RESET 0
+#define RESET_GFX_RESET1
+#define RESET_PER_RESET2
+
+#endif
-- 
1.7.9.5

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


[RFC 04/11] drivers: reset: am335: Add reset data for am335

2014-04-29 Thread Dan Murphy
Add the reset register data for the am335 SoC.

Signed-off-by: Dan Murphy 
---
 drivers/reset/ti/Makefile  |1 +
 drivers/reset/ti/reset-ti-am33xx.c |   37 
 drivers/reset/ti/reset-ti-data.h   |1 +
 drivers/reset/ti/reset-ti.c|3 +++
 4 files changed, 42 insertions(+)
 create mode 100644 drivers/reset/ti/reset-ti-am33xx.c

diff --git a/drivers/reset/ti/Makefile b/drivers/reset/ti/Makefile
index 4d2d06c..f0dbd01 100644
--- a/drivers/reset/ti/Makefile
+++ b/drivers/reset/ti/Makefile
@@ -1,3 +1,4 @@
 obj-$(CONFIG_RESET_TI) += reset-ti.o
 obj-$(CONFIG_SOC_DRA7XX) += reset-ti-dra7xx.o
 obj-$(CONFIG_SOC_OMAP5) += reset-ti-omap5.o
+obj-$(CONFIG_SOC_AM33XX) += reset-ti-am33xx.o
diff --git a/drivers/reset/ti/reset-ti-am33xx.c 
b/drivers/reset/ti/reset-ti-am33xx.c
new file mode 100644
index 000..d28f41b
--- /dev/null
+++ b/drivers/reset/ti/reset-ti-am33xx.c
@@ -0,0 +1,37 @@
+/*
+ * am33xx reset data for PRCM Module
+ *
+ * Copyright 2014 Texas Instruments Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include "reset-ti-data.h"
+
+static struct ti_reset_reg_data am335x_reset_reg_data[] = {
+   {
+   .rstctrl_offs = 0xf00,
+   .rstctrl_bit = 0,
+   .rstst_offs = 0xf08,
+   .rstst_bit  = 0,
+   },
+   {
+   .rstctrl_offs = 0x1104,
+   .rstctrl_bit = 0,
+   .rstst_offs = 0x1114,
+   .rstst_bit  = 0,
+   },
+   {
+   .rstctrl_offs = 0x0D00,
+   .rstctrl_bit = 3,
+   .rstst_offs = 0x0D0C,
+   .rstst_bit  = 5,
+   },
+};
+
+struct ti_reset_data am335x_reset_data = {
+   .reg_data   = am335x_reset_reg_data,
+   .nr_resets  = ARRAY_SIZE(am335x_reset_reg_data),
+};
diff --git a/drivers/reset/ti/reset-ti-data.h b/drivers/reset/ti/reset-ti-data.h
index d3c6d42..48a1476 100644
--- a/drivers/reset/ti/reset-ti-data.h
+++ b/drivers/reset/ti/reset-ti-data.h
@@ -57,5 +57,6 @@ struct ti_reset_data {
 
 extern struct ti_reset_data dra7_reset_data;
 extern struct ti_reset_data omap5_reset_data;
+extern struct ti_reset_data am335x_reset_data;
 
 #endif
diff --git a/drivers/reset/ti/reset-ti.c b/drivers/reset/ti/reset-ti.c
index 7310827..146353f 100644
--- a/drivers/reset/ti/reset-ti.c
+++ b/drivers/reset/ti/reset-ti.c
@@ -138,6 +138,9 @@ static const struct of_device_id ti_reset_of_match[] = {
 #ifdef CONFIG_SOC_OMAP5
{ .compatible = "ti,omap5-resets", .data = &omap5_reset_data,},
 #endif
+#ifdef CONFIG_SOC_AM33XX
+   { .compatible = "ti,am335x-resets", .data = &am335x_reset_data,},
+#endif
{},
 };
 
-- 
1.7.9.5

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


[RFC 01/11] drivers: reset: TI: SoC reset controller support.

2014-04-29 Thread Dan Murphy
The TI SoC reset controller support utilizes the
reset controller framework to give device drivers or
function drivers a common set of APIs to call to reset
a module.

The reset-ti is a common interface to the reset framework.
 The register data is retrieved during initialization
 of the reset driver through the reset-ti-data
file.  The array of data is associated with the compatible from the
respective DT entry.

Once the data is available then this is derefenced within the common
interface.

The device driver has the ability to assert, deassert or perform a
complete reset.

This code was derived from previous work by Rajendra Nayak and Afzal Mohammed.
The code was changed to adopt to the reset core and abstract away the SoC 
information.

Signed-off-by: Dan Murphy 
---
 drivers/reset/Kconfig|1 +
 drivers/reset/Makefile   |1 +
 drivers/reset/ti/Kconfig |8 ++
 drivers/reset/ti/Makefile|1 +
 drivers/reset/ti/reset-ti-data.h |   58 
 drivers/reset/ti/reset-ti.c  |  195 ++
 include/linux/reset_ti.h |   25 +
 7 files changed, 289 insertions(+)
 create mode 100644 drivers/reset/ti/Kconfig
 create mode 100644 drivers/reset/ti/Makefile
 create mode 100644 drivers/reset/ti/reset-ti-data.h
 create mode 100644 drivers/reset/ti/reset-ti.c
 create mode 100644 include/linux/reset_ti.h

diff --git a/drivers/reset/Kconfig b/drivers/reset/Kconfig
index 0615f50..a58d789 100644
--- a/drivers/reset/Kconfig
+++ b/drivers/reset/Kconfig
@@ -13,3 +13,4 @@ menuconfig RESET_CONTROLLER
  If unsure, say no.
 
 source "drivers/reset/sti/Kconfig"
+source "drivers/reset/ti/Kconfig"
diff --git a/drivers/reset/Makefile b/drivers/reset/Makefile
index 4f60caf..1c8c444 100644
--- a/drivers/reset/Makefile
+++ b/drivers/reset/Makefile
@@ -1,3 +1,4 @@
 obj-$(CONFIG_RESET_CONTROLLER) += core.o
 obj-$(CONFIG_ARCH_SUNXI) += reset-sunxi.o
 obj-$(CONFIG_ARCH_STI) += sti/
+obj-$(CONFIG_RESET_TI) += ti/
diff --git a/drivers/reset/ti/Kconfig b/drivers/reset/ti/Kconfig
new file mode 100644
index 000..dcdce90
--- /dev/null
+++ b/drivers/reset/ti/Kconfig
@@ -0,0 +1,8 @@
+config RESET_TI
+   depends on RESET_CONTROLLER
+   bool "TI reset controller"
+   help
+ Reset controller support for TI SoC's
+
+ Reset controller found in TI's AM series of SoC's like
+ AM335x and AM43x and OMAP SoC's like OMAP5 and DRA7
diff --git a/drivers/reset/ti/Makefile b/drivers/reset/ti/Makefile
new file mode 100644
index 000..55ab3f5
--- /dev/null
+++ b/drivers/reset/ti/Makefile
@@ -0,0 +1 @@
+obj-$(CONFIG_RESET_TI) += reset-ti.o
diff --git a/drivers/reset/ti/reset-ti-data.h b/drivers/reset/ti/reset-ti-data.h
new file mode 100644
index 000..6afdf37
--- /dev/null
+++ b/drivers/reset/ti/reset-ti-data.h
@@ -0,0 +1,58 @@
+/*
+ * PRCM reset driver for TI SoC's
+ *
+ * Copyright 2014 Texas Instruments Inc.
+ *
+ * Author: Dan Murphy 
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef _RESET_TI_DATA_H_
+#define _RESET_TI_DATA_H_
+
+#include 
+#include 
+#include 
+
+/**
+ * struct ti_reset_reg_data - Structure of the reset register information
+ * for a particular SoC.
+ * @rstctrl_offs: This is the reset control offset value from
+ * from the parent reset node.
+ * @rstst_offs: This is the reset status offset value from
+ * from the parent reset node.
+ * @rstctrl_bit: This is the reset control bit for the module.
+ * @rstst_bit: This is the reset status bit for the module.
+ *
+ * This structure describes the reset register control and status offsets.
+ * The bits are also defined for the same.
+ */
+struct ti_reset_reg_data {
+   u32 rstctrl_offs;
+   u32 rstst_offs;
+   u8  rstctrl_bit;
+   u8  rstst_bit;
+};
+
+/**
+ * struct ti_reset_data - Structure that contains the reset register data
+ * as well as the total number of resets for a particular SoC.
+ * @reg_data:  Pointer to the register data structure.
+ * @nr_resets: Total number of resets for the SoC in the reset array.
+ *
+ * This structure contains a pointer to the register data and the modules
+ * register base.  The number of resets and reset controller device data is
+ * stored within this structure.
+ * 
+ */
+struct ti_reset_data {
+   struct ti_reset_reg_data *reg_data;
+   struct reset_controller_dev rcdev;
+   void __iomem *reg_base;
+   u8  nr_resets;
+};
+
+#endif
diff --git a/drivers/reset/ti/reset-ti.c b/drivers/reset/ti/reset-ti.c
new file mode 100644
index 000..1d38069
--- /dev/null
+++ b/drivers/reset/ti/reset-ti.c
@@ -0,0 +1,195 @@
+/*
+ * PRCM reset driver for TI SoC's
+ *
+ * Copyright 2014 Texas Instruments Inc.
+ *
+ * Author: Dan Murphy 
+ *
+ * This program is free software; you can red

[RFC 06/11] ARM: OMAP: Add reset init to prcm file

2014-04-29 Thread Dan Murphy
Call the reset init API to initialize the
reset framework and data for the related SoC.

Signed-off-by: Dan Murphy 
---
 arch/arm/mach-omap2/prm_common.c |4 
 1 file changed, 4 insertions(+)

diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c
index b4c4ab9..7e95f8e 100644
--- a/arch/arm/mach-omap2/prm_common.c
+++ b/arch/arm/mach-omap2/prm_common.c
@@ -27,6 +27,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include "soc.h"
 #include "prm2xxx_3xxx.h"
@@ -523,10 +524,13 @@ int __init of_prcm_init(void)
mem = of_iomap(np, 0);
clk_memmaps[memmap_index] = mem;
ti_dt_clk_init_provider(np, memmap_index);
+
memmap_index++;
}
 
ti_dt_clockdomains_setup();
 
+   ti_dt_reset_init();
+
return 0;
 }
-- 
1.7.9.5

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


[RFC 07/11] ARM: TI: Describe the ti reset DT entries

2014-04-29 Thread Dan Murphy
Describe the TI reset DT entries for TI SoC's.

Signed-off-by: Dan Murphy 
---
 .../devicetree/bindings/reset/ti,reset.txt |   34 
 1 file changed, 34 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/reset/ti,reset.txt

diff --git a/Documentation/devicetree/bindings/reset/ti,reset.txt 
b/Documentation/devicetree/bindings/reset/ti,reset.txt
new file mode 100644
index 000..19f5603
--- /dev/null
+++ b/Documentation/devicetree/bindings/reset/ti,reset.txt
@@ -0,0 +1,34 @@
+Texas Instruments Reset Controller
+==
+Please also refer to reset.txt in this directory for common reset
+controller binding usage.
+
+Specifying the reset entries for the IP module
+==
+Parent module:
+This is the module node that contains the reset registers and bits.
+
+example:
+   prcm_resets: resets {
+   compatible = "ti,dra7-resets";
+   #reset-cells = <1>;
+   };
+
+Required Properties:
+compatible - Should be "ti--resets
+
+DRA7xx:
+Compatible - ti,dra7-resets
+Reset indices - include/dt-bindings/reset/ti,dra7-resets.h
+
+OMAP5:
+Compatible - ti,omap5-resets
+Reset indices - include/dt-bindings/reset/ti,omap5-resets.h
+
+AM33xx:
+Compatible - ti-am335x-resets
+Reset indices - include/dt-bindings/reset/ti,am33xx-resets.h
+
+AM43xx:
+Compatible - ti,am4372-resets
+Reset indices - include/dt-bindings/reset/ti,am437x-resets.h
-- 
1.7.9.5

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


[RFC 10/11] ARM: dts: dra7: Add prm_resets node

2014-04-29 Thread Dan Murphy
Add the prcm_resets node to the prm parent node.
Add the dt-bindings header to the DT file

Signed-off-by: Dan Murphy 
---
 arch/arm/boot/dts/dra7.dtsi|6 ++
 include/dt-bindings/reset/ti,dra7-resets.h |   22 ++
 2 files changed, 28 insertions(+)
 create mode 100644 include/dt-bindings/reset/ti,dra7-resets.h

diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi
index 149b550..3507730 100644
--- a/arch/arm/boot/dts/dra7.dtsi
+++ b/arch/arm/boot/dts/dra7.dtsi
@@ -9,6 +9,7 @@
 
 #include 
 #include 
+#include 
 
 #include "skeleton.dtsi"
 
@@ -120,6 +121,11 @@
 
prm_clockdomains: clockdomains {
};
+
+   prm_resets: resets {
+   compatible = "ti,dra7-resets";
+   #reset-cells = <1>;
+   };
};
 
cm_core_aon: cm_core_aon@4a005000 {
diff --git a/include/dt-bindings/reset/ti,dra7-resets.h 
b/include/dt-bindings/reset/ti,dra7-resets.h
new file mode 100644
index 000..89be87b
--- /dev/null
+++ b/include/dt-bindings/reset/ti,dra7-resets.h
@@ -0,0 +1,22 @@
+/*
+ * DRA7xx reset index for PRCM Module
+ *
+ * Copyright 2014 Texas Instruments Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef _DT_BINDINGS_RESET_TI_DRA7_H
+#define _DT_BINDINGS_RESET_TI_DRA7_H
+
+#define RESET_DEVICE_RESET 0
+#define RESET_DSP1_RESET   1
+#define RESET_IPU_CPU0_RESET   2
+#define RESET_IPU_CPU1_RESET   3
+#define RESET_IPU_MMU_CACHE_RESET  4
+#define RESET_IVA_RESET5
+#define RESET_PCIE_RESET   6
+
+#endif
-- 
1.7.9.5

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


Re: [PATCH 1/5] ASoC: Add support for machine specific trigger callback

2014-04-29 Thread Mark Brown
On Mon, Apr 28, 2014 at 02:17:52PM +0200, Stefan Roese wrote:
> From: Jarkko Nikula 
> 
> Machine specific trigger callback allows to do final stream start/stop
> related operations in a machine driver after setting up the codec, DMA and
> DAI.

Applied, thanks.


signature.asc
Description: Digital signature


Re: [PATCH 3/5] ASoC: omap: Add HA (HEAD acoustics) DSP add-on card audio driver for TAO3530

2014-04-29 Thread Mark Brown
On Mon, Apr 28, 2014 at 02:17:54PM +0200, Stefan Roese wrote:

> + switch (params_channels(params)) {
> + case 2:
> + case 4:
> + case 8:
> + case 16:
> + fmt = SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_IB_NF;
> + break;
> + default:
> + return -EINVAL;
> + }

Why is this "conditional" on the number of channels (though the same
value is always chosen)?

> + /*
> +  * Calculate McBSP SRG divisor in McBSP master mode
> +  */
> + div = 9600 / params_rate(params) / params_channels(params);
> + switch (params_format(params)) {
> + case SNDRV_PCM_FORMAT_S16_LE:
> + div /= 16;
> + break;
> + case SNDRV_PCM_FORMAT_S24_LE:
> + case SNDRV_PCM_FORMAT_S32_LE:
> + div /= 32;
> + break;
> + };

params_width().

> + ret = snd_soc_dai_set_clkdiv(cpu_dai, OMAP_MCBSP_CLKGDV, div);
> + if (ret < 0) {
> + pr_err("can't set SRG clock divider\n");
> + return ret;
> + }

Why not put this code into the DAI driver for the SoC - what's board
specific about the calcuation?  I'd expect this to be handlable by
set_sysclk().

> + if (!node) {
> + dev_err(&pdev->dev, "No DT node provided\n");
> + return -ENODEV;
> + }

You've got something with a DT binding here but no binding document,
documentation is mandatory for new DT bindings.

> + priv->slave = of_property_read_bool(node, "ha_dsp_codec_slave");
> + if (priv->slave)
> + dev_info(&pdev->dev, "Using slave mode for testing!\n");

This seems like something that shouldn't be in production code, or
perhaps a build time option if the testing is valuable?

> + if (snd_soc_of_parse_card_name(card, "ti,model")) {
> + dev_err(&pdev->dev, "Card name is not provided\n");
> + ret = -ENODEV;
> + goto err;
> + }

Why not have a default?

> + ret = snd_soc_register_card(card);
> + if (ret) {
> + dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
> + ret);
> + goto err;
> + }

devm_snd_soc_register_card().


signature.asc
Description: Digital signature


Re: [PATCH] ARM: OMAP5: Switch to THUMB mode if needed on secondary CPU

2014-04-29 Thread Dave Martin
On Tue, Apr 29, 2014 at 05:36:30PM +0100, Joel Fernandes wrote:

[...]

> >> Sorry what I meant is, say its of Type function. What tells the firmware
> >> to switch to THUMB?
> >> 
> >> What's typically done is a boot address register is written by the
> >> kernel, and the firmware jumps to it after WFE.
> > 
> > Using ENTRY(x) ... ENDPROC(x) causes the symbol seen by the linker
> > for x to have the Thumb bit set if the code is Thumb.
> > 
> > This means that any reference the linker fixes up for that symbol
> > will have the Thumb bit set appropriately.  This applies to any kind
> > of reference, so code in another file that takes the address of the
> > symbol and then passes that address to the firmware should result in the
> > firmware getting an address with the Thumb bit.
> > 
> > From the firmware's point of view it just gets a raw address, but
> > the Thumb bit will now be set.  The firmware still needs to handle
> > this correctly when jumping, but from the look of the code this may
> > already work on omap3/4.  It would be interesting to know whether it
> > works on omap5.
> 
> Thanks a lot for the explanation. That makes perfect sense. I will try it and 
> let you know if it works on OMAP5.

ARM/thumb interworking making perfect sense?  I'll have to frame that
and put it on the wall :)

objdump and nm conveniently mask off the Thumb bit from all function
addresses they print out, but if you show the symbols using readelf
instead you'll see addresses with bit 0 set for Thumb functions.


It's possible that the firmware still doesn't handle branching to Thumb
correctly, but if it does it would be nice to remove the requirement to
build an odd piece of a Thumb-2 kernel in ARM.

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


Re: [PATCH 06/23] ARM: OMAP: add OMAP5 DSI muxing

2014-04-29 Thread Tony Lindgren
* Tomi Valkeinen  [140429 09:33]:
> On 29/04/14 19:19, Tomi Valkeinen wrote:
> > On 29/04/14 18:05, Tony Lindgren wrote:
> > 
> >>> omap4_padconf_global is a syscon node, not pinctrl. As syscon just gives
> >>> a raw regmap to its memory area, the driver needs to know about the OMAP
> >>> control registers to use it.
> >>
> >> That would be probably best set up the same way we have already set up
> >> for example omap4_padconf_global: tisyscon@4a1005a0. Then drivers can
> >> access it using regmap, see how drivers/regulator/pbias-regulator.c
> >> sets up the pbias regulator with regmap for MMC.
> > 
> > Right, but it means that the driver will contain platform specific code
> > for all the omap revisions it supports. Isn't that wrong?
> > 
> > I already have a patch for DSI that uses the syscon-method, and it works
> > fine. But it's quite ugly, imo, to fiddle with the OMAP control
> > registers in a driver.

Anything using the system control module registers should be a separate
driver. And it should ideally be implemeting some Linux generic framework
that the consumer driver can then use. That leaves out the need to export
custom functions.

I guess we don't have a PHY framework for displays though, so how about
just a separate minimal driver under drivers/video/omap2 that uses the
syscon?
 
> Oh, also, if I do that, I need to know both the SoC version and the DSS
> version in the driver.

Don't you get all you need in the compatible string? Something like
compatible ti,dss-phy-omap5?

Regards,

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


Re: [PATCH] ARM: OMAP5: Switch to THUMB mode if needed on secondary CPU

2014-04-29 Thread Joel Fernandes

> On Apr 29, 2014, at 2:17 AM, Dave Martin  wrote:
> 
>> On Mon, Apr 28, 2014 at 06:21:49PM +0100, Joel Fernandes wrote:
>>> On 04/28/2014 12:20 PM, Joel Fernandes wrote:
 On 04/28/2014 11:43 AM, Dave Martin wrote:
> On Tue, Apr 22, 2014 at 01:31:46PM -0500, Joel Fernandes wrote:
> On my DRA7 system, when the kernel is built in THUMB mode, the secondary 
> CPU
> (Cortex A15) fails to come up causing SMP boot on second CPU to timeout. 
> This
> seems to be because the CPU is in ARM mode once the ROM hands over 
> control to
> the kernel.  Switch to THUMB mode if required once the kernel is control 
> of
> secondary CPU. On OMAP4 on the other hand, it appears to be in THUMB mode 
> on
> entry so this is not required and SMP boot works as is.
> 
> Cc: Santosh Shilimkar 
> Cc: Russell King 
> Cc: Nishanth Menon 
> Cc: Tony Lindgren 
> Signed-off-by: Joel Fernandes 
> ---
> arch/arm/mach-omap2/omap-headsmp.S |8 ++--
> 1 file changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/omap-headsmp.S 
> b/arch/arm/mach-omap2/omap-headsmp.S
> index 75e9295..1809dce 100644
> --- a/arch/arm/mach-omap2/omap-headsmp.S
> +++ b/arch/arm/mach-omap2/omap-headsmp.S
> @@ -1,7 +1,7 @@
> /*
>  * Secondary CPU startup routine source file.
>  *
> - * Copyright (C) 2009 Texas Instruments, Inc.
> + * Copyright (C) 2014 Texas Instruments, Inc.
>  *
>  * Author:
>  *  Santosh Shilimkar 
> @@ -28,9 +28,13 @@
>  * code.  This routine also provides a holding flag into which
>  * secondary core is held until we're ready for it to initialise.
>  * The primary core will update this flag using a hardware
> -+ * register AuxCoreBoot0.
> + * register AuxCoreBoot0.
>  */
> ENTRY(omap5_secondary_startup)
 
 Are you sure this problem is not caused by the missing ENDPROC() for
 omap5_secondary_startup?
 
 You have END() instead (which may have been accidental).
 
 Without ENDPROC(), the symbol is not marked as a function and so
 the Thumb bit won't be set when taking a pointer -- so the kernel
 is actually telling the firmware to enter in ARM state.
 
 
 Try changing END() to ENDPROC() without this patch, and see if it
 makes a difference.
 
 If it still doesn't work, then the firmware either doesn't support
 entering in ARM, or is buggy.
>>> 
>>> Thanks for the suggestion. I'm guessing what you mean is with ENDPROC,
>>> interworking code uses bx instead of bl to set thumb mode.
>>> 
>>> But ROM/firmware doesn't have access to symbol table, how would it know
>>> the type of the symbol to be ARM or THUMB before it branches?
>> Sorry what I meant is, say its of Type function. What tells the firmware
>> to switch to THUMB?
>> 
>> What's typically done is a boot address register is written by the
>> kernel, and the firmware jumps to it after WFE.
> 
> Using ENTRY(x) ... ENDPROC(x) causes the symbol seen by the linker
> for x to have the Thumb bit set if the code is Thumb.
> 
> This means that any reference the linker fixes up for that symbol
> will have the Thumb bit set appropriately.  This applies to any kind
> of reference, so code in another file that takes the address of the
> symbol and then passes that address to the firmware should result in the
> firmware getting an address with the Thumb bit.
> 
> From the firmware's point of view it just gets a raw address, but
> the Thumb bit will now be set.  The firmware still needs to handle
> this correctly when jumping, but from the look of the code this may
> already work on omap3/4.  It would be interesting to know whether it
> works on omap5.

Thanks a lot for the explanation. That makes perfect sense. I will try it and 
let you know if it works on OMAP5.

Regards,
-Joel


> 
> Cheers
> ---Dave
> 
> ___
> linux-arm-kernel mailing list
> linux-arm-ker...@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 06/23] ARM: OMAP: add OMAP5 DSI muxing

2014-04-29 Thread Tomi Valkeinen
On 29/04/14 19:19, Tomi Valkeinen wrote:
> On 29/04/14 18:05, Tony Lindgren wrote:
> 
>>> omap4_padconf_global is a syscon node, not pinctrl. As syscon just gives
>>> a raw regmap to its memory area, the driver needs to know about the OMAP
>>> control registers to use it.
>>
>> That would be probably best set up the same way we have already set up
>> for example omap4_padconf_global: tisyscon@4a1005a0. Then drivers can
>> access it using regmap, see how drivers/regulator/pbias-regulator.c
>> sets up the pbias regulator with regmap for MMC.
> 
> Right, but it means that the driver will contain platform specific code
> for all the omap revisions it supports. Isn't that wrong?
> 
> I already have a patch for DSI that uses the syscon-method, and it works
> fine. But it's quite ugly, imo, to fiddle with the OMAP control
> registers in a driver.

Oh, also, if I do that, I need to know both the SoC version and the DSS
version in the driver.

 Tomi




signature.asc
Description: OpenPGP digital signature


Re: [PATCH 2/2] ARM: OMAP2+: fix dpll round_rate() to actually round

2014-04-29 Thread Tomi Valkeinen
On 29/04/14 18:51, Felipe Balbi wrote:
> On Thu, Apr 24, 2014 at 11:44:58AM -0700, Tony Lindgren wrote:
>> * Felipe Balbi  [140424 11:29]:
>>> Hi,
>>>
>>> On Fri, Jan 17, 2014 at 09:44:59AM +0200, Tomi Valkeinen wrote:
 omap2_dpll_round_rate() doesn't actually round the given rate, even if
 the name and the description so hints. Instead it only tries to find an
 exact rate match, or if that fails, return ~0 as an error.

 What this basically means is that the user of the clock needs to know
 what rates the dpll can support, which obviously isn't right.

 This patch adds a simple method of rounding: during the iteration, the
 code keeps track of the closest rate match. If no exact match is found,
 the closest is returned.

 Signed-off-by: Tomi Valkeinen 
>>>
>>> Tony, looks like this patch was lost. Are you taking it during the -rc ?
>>
>> Would like to hear what Paul thinks of the updated patch suggested
>> by Tomi first.
> 
> Paul, any chance you can review Tomi's v2 ? It'd be very nice to get
> display working on BBB.

Btw, I'm fine with my v2 patch, but I think the original one is fine also.

It's true that the original patch changes the dpll behavior when an
exact match is not found. However, I think our drivers always request an
exact match, and in that case the original patch doesn't change the
behavior in practice.

In theory it's possible that a driver requests a non-exact clock from
the dpll, and when it gets an error, it does something else. But, if I'm
not mistaken, all our dplls have a clk-divider after them. And as
clk-divider doesn't handle the error from dpll in any way, and instead
returns bogus rates, I presume all our drivers use exact clocks.

So v2 is perhaps slightly safer option, but I'm not sure if the added
complexity (even if quite small) is worth it.

 Tomi




signature.asc
Description: OpenPGP digital signature


Re: [PATCH 06/23] ARM: OMAP: add OMAP5 DSI muxing

2014-04-29 Thread Tomi Valkeinen
On 29/04/14 18:05, Tony Lindgren wrote:

>> omap4_padconf_global is a syscon node, not pinctrl. As syscon just gives
>> a raw regmap to its memory area, the driver needs to know about the OMAP
>> control registers to use it.
> 
> That would be probably best set up the same way we have already set up
> for example omap4_padconf_global: tisyscon@4a1005a0. Then drivers can
> access it using regmap, see how drivers/regulator/pbias-regulator.c
> sets up the pbias regulator with regmap for MMC.

Right, but it means that the driver will contain platform specific code
for all the omap revisions it supports. Isn't that wrong?

I already have a patch for DSI that uses the syscon-method, and it works
fine. But it's quite ugly, imo, to fiddle with the OMAP control
registers in a driver.

 Tomi




signature.asc
Description: OpenPGP digital signature


Re: [PATCH 51/97] ARM: l2c: remove platforms/SoCs setting early BRESP

2014-04-29 Thread Stephen Warren
On 04/28/2014 06:02 PM, Simon Horman wrote:
> On Mon, Apr 28, 2014 at 08:30:32PM +0100, Russell King wrote:
>> Since we now automatically enable early BRESP in core L2C-310 code when
>> we detect a Cortex-A9, we don't need platforms/SoCs to set this bit
>> explicitly.  Instead, they should seek to preserve the value of bit 30
>> in the auxiliary control register.
>>
>> Acked-by: Tony Lindgren 
>> Signed-off-by: Russell King 
> 
> I would prefer if this patch was broken out into individual patches
> for each board or SoC file and that they were then picked up
> by their respective platform maintainers.
> 
> Likewise for patch 66/97. Although it is only for shmobile
> I would prefer it broken out.

There are far too many dependencies in this series to break out the
board file patches to be merged separately; it'd take either a whole
bunch of kernel releases to merge it all that way, or a twisty maze of
tiny topic branches cross-merged all over the place. Neither option is
realistic.
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 3/7] phy: omap-usb2: Use generic clock names "wkupclk" and "refclk"

2014-04-29 Thread Felipe Balbi
On Tue, Apr 29, 2014 at 11:14:20AM -0500, Felipe Balbi wrote:
> On Tue, Apr 29, 2014 at 10:50:39AM +0300, Roger Quadros wrote:
> > +Nishant
> > 
> > Hi,
> > 
> > On 04/28/2014 07:03 PM, Felipe Balbi wrote:
> > > Hi,
> > > 
> > > On Mon, Apr 28, 2014 at 05:01:23PM +0300, Roger Quadros wrote:
> > >> As clocks might be named differently on multiple platforms, use a generic
> > >> name in the driver and allow device tree node to specify the platform
> > >> specific clock name.
> > >>
> > >> Signed-off-by: Roger Quadros 
> > >> ---
> > >>  drivers/phy/phy-omap-usb2.c | 8 
> > >>  1 file changed, 4 insertions(+), 4 deletions(-)
> > >>
> > >> diff --git a/drivers/phy/phy-omap-usb2.c b/drivers/phy/phy-omap-usb2.c
> > >> index a2205a8..fb5e515 100644
> > >> --- a/drivers/phy/phy-omap-usb2.c
> > >> +++ b/drivers/phy/phy-omap-usb2.c
> > >> @@ -275,16 +275,16 @@ static int omap_usb2_probe(struct platform_device 
> > >> *pdev)
> > >>  if (IS_ERR(phy_provider))
> > >>  return PTR_ERR(phy_provider);
> > >>  
> > >> -phy->wkupclk = devm_clk_get(phy->dev, "usb_phy_cm_clk32k");
> > >> +phy->wkupclk = devm_clk_get(phy->dev, "wkupclk");
> > > 
> > > doesn't this patch cause a regression ? I mean, you're changing the
> > > clock name before fixing DTS. Also, that DTS has been in a major version
> > > of the kernel, so we need to maintain compatibility with it. How about:
> > 
> > I'm changing the DTS in Patch 4, but I prefer to do it in this patch
> > to prevent synchronization issues in -next.
> > 
> > About backward compatibility, I agree with you but at the same time I
> > don't think anyone using TI SoCs burns the DTB to ROM and needs
> > backward compatibility. We supply our BSPs/SDKs with the updated DTBs.
> > Do you feel strict backward compatibility is worth the effort for TI
> > specific blocks?
> 
> dunno, but it would, at least, avoid "synchronization issues with
> linux-next" :-)

and the bisectability issue.

-- 
balbi


signature.asc
Description: Digital signature


Re: [PATCH v2 3/7] phy: omap-usb2: Use generic clock names "wkupclk" and "refclk"

2014-04-29 Thread Felipe Balbi
On Tue, Apr 29, 2014 at 10:50:39AM +0300, Roger Quadros wrote:
> +Nishant
> 
> Hi,
> 
> On 04/28/2014 07:03 PM, Felipe Balbi wrote:
> > Hi,
> > 
> > On Mon, Apr 28, 2014 at 05:01:23PM +0300, Roger Quadros wrote:
> >> As clocks might be named differently on multiple platforms, use a generic
> >> name in the driver and allow device tree node to specify the platform
> >> specific clock name.
> >>
> >> Signed-off-by: Roger Quadros 
> >> ---
> >>  drivers/phy/phy-omap-usb2.c | 8 
> >>  1 file changed, 4 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/drivers/phy/phy-omap-usb2.c b/drivers/phy/phy-omap-usb2.c
> >> index a2205a8..fb5e515 100644
> >> --- a/drivers/phy/phy-omap-usb2.c
> >> +++ b/drivers/phy/phy-omap-usb2.c
> >> @@ -275,16 +275,16 @@ static int omap_usb2_probe(struct platform_device 
> >> *pdev)
> >>if (IS_ERR(phy_provider))
> >>return PTR_ERR(phy_provider);
> >>  
> >> -  phy->wkupclk = devm_clk_get(phy->dev, "usb_phy_cm_clk32k");
> >> +  phy->wkupclk = devm_clk_get(phy->dev, "wkupclk");
> > 
> > doesn't this patch cause a regression ? I mean, you're changing the
> > clock name before fixing DTS. Also, that DTS has been in a major version
> > of the kernel, so we need to maintain compatibility with it. How about:
> 
> I'm changing the DTS in Patch 4, but I prefer to do it in this patch
> to prevent synchronization issues in -next.
> 
> About backward compatibility, I agree with you but at the same time I
> don't think anyone using TI SoCs burns the DTB to ROM and needs
> backward compatibility. We supply our BSPs/SDKs with the updated DTBs.
> Do you feel strict backward compatibility is worth the effort for TI
> specific blocks?

dunno, but it would, at least, avoid "synchronization issues with
linux-next" :-)

-- 
balbi


signature.asc
Description: Digital signature


Re: [PATCH] usb: dwc3: debugfs: add snapshot to dump requests trbs events

2014-04-29 Thread Felipe Balbi
Hi,

On Tue, Apr 29, 2014 at 05:21:42PM -0400, Zhuang Jin Can wrote:
> On Mon, Apr 28, 2014 at 10:55:36AM -0500, Felipe Balbi wrote:
> > On Mon, Apr 28, 2014 at 04:49:23PM -0400, Zhuang Jin Can wrote:
> > > Adds a debugfs file "snapshot" to dump dwc3 requests, trbs and events.
> > 
> > you need to explain what are you trying to provide to our users here.
> > 
> > What "problem" are you trying to solve ?
> > 
> The interface enables users to easily peek into requests, trbs and
> events to know the current transfer state of each request.
> If an transfer is stuck, user can use the interface to check why it's
> stuck (e.g. Is it because a gadget doesn't queued the request? Or it's
> queued but it's not primed to the controller? Or It's primed to the
> controller but the TRBs and events indicate the transfer never completes?).
> User can immediately narrow down the issue without enabling verbose log or
> reproduce the issue again. It's helpful when we need to deal with some
> hard-to-reproduce bugs or timing sensitive bugs can't be reproduced with
> verbose log enabled.

this should be part of the commit log in some shape or form.

> > > As ep0 requests are more complex than others. It's not included in this
> > > patch.
> > 
> > For ep0, you could at least print the endpoint phase we are currently
> > in and if we have requests in flight or not.
> > 
> Agree. Will add it in [PATCH v2].

tks

> > > + seq_puts(s, "busy_slot--|\n");
> > > + seq_puts(s, "   \\\n");
> > > + }
> > > + if (i == (dep->free_slot & DWC3_TRB_MASK)) {
> > > + seq_puts(s, "free_slot--|\n");
> > > + seq_puts(s, "   \\\n");
> > > + }
> > > + seq_printf(s, "trb[%02d](dma@0x%pad): %08x(bpl), %08x(bph), 
> > > %08x(size), %08x(ctrl)\n",
> > 
> > I'm not sure you need to print out the TRB address. bpl, bph, size and
> > ctrl are desired though.
> > 
> printing out the TRB DMA address helps user to locate the start TRB of a
> request. I admit that we can achive the same purose using the "start_slot"
> of the request. I'll remove it in [PATCH v2].

thanks

> > > + i, &dep->trb_pool_dma + i * sizeof(*trb),
> > > + trb->bpl, trb->bph, trb->size, trb->ctrl);
> > 
> > this will be pretty difficult to parse by a human. I would rather see
> > you creating one directory per TRB (and also one directory per
> > endpoint) which holds the details for that entity, so that it looks
> > like:
> > 
> > dwc3
> > |-- current_state   (or perhaps a better name, but snapshot isn't very good 
> > either)
> Actually, it's hard to find a perfect name. "current_state" or "snapshot" 
> doesn't
> make too much difference to me. If "current_state" makes more sense to you, I
> can change to use this name. Or let me know if you have a better suggestion.

the name is important as we will have to deal with it for the next 50
years. We also need to think about someone starting out on dwc3 5 years
from now or a QA engineer in whatever OEM trying to provide details of
the failure for the development team. It needs to be well thought out.

I don't have a better idea but snapshot gives me the idea that we will
end up with a copy of everything which we can revisit at any time and
that's not true. If we read this file twice there's no guarantee it'll
contain the same information.

> > |-- ep2
> > |   |-- direction
> > |   |-- maxpacket
> > |   |-- number
> > |   |-- state
> > |   |-- stream_capable
> > |   |-- type
> > |   |-- trbs
> > |   |   |-- trb0
> > |   |   |   |-- bph
> > |   |   |   |-- bpl
> > |   |   |   |-- ctrl
> > |   |   |   |-- size
> > |   |   |-- trb1
> > |   |   |   |-- bph
> > |   |   |   |-- bpl
> > |   |   |   |-- ctrl
> > |   |   |   |-- size
> > |   |   |-- trb2
> > |   |   |   |-- bph
> > |   |   |   |-- bpl
> > |   |   |   |-- ctrl
> > |   |   |   |-- size
> > |   |   |-- trb3
> > |   |   |   |-- bph
> > |   |   |   |-- bpl
> > |   |   |   |-- ctrl
> > |   |   |   |-- size
> > .   .   .
> > .   .   .
> > .   .   .
> > |   |-- request0
> > |   |   |-- direction
> > |   |   |-- mapped
> > |   |   |-- queued
> > |   |   |-- trb0(symlink to actual trb directory)
> > |   |   |-- ep2 (symlink to actual ep2 directory)
> > |   |   |-- usbrequest
> > |   |   |-- actual
> > |   |   |-- length
> > |   |   |-- no_interrupt
> > |   |   |-- num_mapped_sgs
> > |   |   |-- num_sgs
> > |   |   |-- short_not_ok
> > |   |   |-- status
> > |   |   |-- stream_id
> > |   |   |-- zero
> > |   |-- request1
> > |   |   |-- direction
> > |   |   |-- mapped
> > |   |   |-- queued
> > |   |   |-- trb1(symlink to actual trb directory)
> > |   |   |-- ep2 (symlink to actu

Re: [PATCH 2/2] ARM: OMAP2+: fix dpll round_rate() to actually round

2014-04-29 Thread Felipe Balbi
On Thu, Apr 24, 2014 at 11:44:58AM -0700, Tony Lindgren wrote:
> * Felipe Balbi  [140424 11:29]:
> > Hi,
> > 
> > On Fri, Jan 17, 2014 at 09:44:59AM +0200, Tomi Valkeinen wrote:
> > > omap2_dpll_round_rate() doesn't actually round the given rate, even if
> > > the name and the description so hints. Instead it only tries to find an
> > > exact rate match, or if that fails, return ~0 as an error.
> > > 
> > > What this basically means is that the user of the clock needs to know
> > > what rates the dpll can support, which obviously isn't right.
> > > 
> > > This patch adds a simple method of rounding: during the iteration, the
> > > code keeps track of the closest rate match. If no exact match is found,
> > > the closest is returned.
> > > 
> > > Signed-off-by: Tomi Valkeinen 
> > 
> > Tony, looks like this patch was lost. Are you taking it during the -rc ?
> 
> Would like to hear what Paul thinks of the updated patch suggested
> by Tomi first.

Paul, any chance you can review Tomi's v2 ? It'd be very nice to get
display working on BBB.

cheers

-- 
balbi


signature.asc
Description: Digital signature


Re: [PATCH 06/23] ARM: OMAP: add OMAP5 DSI muxing

2014-04-29 Thread Tony Lindgren
* Tomi Valkeinen  [140428 22:26]:
> On 28/04/14 19:45, Tony Lindgren wrote:
> > * Tomi Valkeinen  [140427 23:53]:
> >> On 25/04/14 18:31, Tony Lindgren wrote:
> >>
> >>> Chances are any mux register in the syscon area already works with
> >>> pinctrl-single,pins or pinctrl-single,bits option. The ones in the
> >>> padconf area should be already mapped so the driver just has to
> >>> request them.
> >>
> >> If using the padconf (say omap4_padconf_global for omap4), doesn't that
> >> mean we need to have platform specific bits in the driver? Isn't that
> >> something we've been trying to remove all the time?
> > 
> > No, it's all done in a Linux generic way during driver probe, see
> > drivers/base/pinctrl.c. You just need to define the default pins
> > in the .dts files. If you need dynamic remuxing in the driver,
> > you can define other named states that the driver can then toggle
> > with pinctrl_select_state().
> 
> omap4_padconf_global is a syscon node, not pinctrl. As syscon just gives
> a raw regmap to its memory area, the driver needs to know about the OMAP
> control registers to use it.

That would be probably best set up the same way we have already set up
for example omap4_padconf_global: tisyscon@4a1005a0. Then drivers can
access it using regmap, see how drivers/regulator/pbias-regulator.c
sets up the pbias regulator with regmap for MMC.
 
> Pinctrl-single cannot be used for CONTROL_DSIPHY register, as the
> register contents are a bit funny and DSI1 and DSI2 bits are mixed
> together. And CONTROL_DSIPHY is already in the memory region defined by
> the omap4_padconf_global, so I guess it wouldn't be good to map parts of
> the same memory region in a pinctrl node.

If it's more than a mux, then it should not be set up as a pinctrl
register. Looks like CONTROL_DSIPHY is already available for drivers
via regmap as it falls into the *_padconf_global mappings for omap4
and omap5.

Regards,

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


Re: [PATCHv3] arm: dts: am43x-clock: add tbclk data for ehrpwm.

2014-04-29 Thread Tero Kristo

On 04/29/2014 05:15 PM, Sourav Poddar wrote:

We need "tbclk" clock data for the functioning of ehrpwm
module. Hence, populating the required clock information
in clock dts file.

Signed-off-by: Sourav Poddar 


Acked-by: Tero Kristo 



---
v2->v3
- correct bitshifting

  arch/arm/boot/dts/am43xx-clocks.dtsi |   48 ++
  drivers/clk/ti/clk-43xx.c|6 +
  2 files changed, 54 insertions(+)

diff --git a/arch/arm/boot/dts/am43xx-clocks.dtsi 
b/arch/arm/boot/dts/am43xx-clocks.dtsi
index 142009c..42d7b1f 100644
--- a/arch/arm/boot/dts/am43xx-clocks.dtsi
+++ b/arch/arm/boot/dts/am43xx-clocks.dtsi
@@ -87,6 +87,54 @@
clock-mult = <1>;
clock-div = <1>;
};
+
+   ehrpwm0_tbclk: ehrpwm0_tbclk {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <0>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm1_tbclk: ehrpwm1_tbclk {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <1>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm2_tbclk: ehrpwm2_tbclk {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <2>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm3_tbclk: ehrpwm3_tbclk {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <4>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm4_tbclk: ehrpwm4_tbclk {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <5>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm5_tbclk: ehrpwm5_tbclk {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <6>;
+   reg = <0x0664>;
+   };
  };
  &prcm_clocks {
clk_32768_ck: clk_32768_ck {
diff --git a/drivers/clk/ti/clk-43xx.c b/drivers/clk/ti/clk-43xx.c
index 67c8de5..527a43d 100644
--- a/drivers/clk/ti/clk-43xx.c
+++ b/drivers/clk/ti/clk-43xx.c
@@ -105,6 +105,12 @@ static struct ti_dt_clk am43xx_clks[] = {
DT_CLK(NULL, "func_12m_clk", "func_12m_clk"),
DT_CLK(NULL, "vtp_clk_div", "vtp_clk_div"),
DT_CLK(NULL, "usbphy_32khz_clkmux", "usbphy_32khz_clkmux"),
+   DT_CLK("48300200.ehrpwm", "tbclk", "ehrpwm0_tbclk"),
+   DT_CLK("48302200.ehrpwm", "tbclk", "ehrpwm1_tbclk"),
+   DT_CLK("48304200.ehrpwm", "tbclk", "ehrpwm2_tbclk"),
+   DT_CLK("48306200.ehrpwm", "tbclk", "ehrpwm3_tbclk"),
+   DT_CLK("48308200.ehrpwm", "tbclk", "ehrpwm4_tbclk"),
+   DT_CLK("4830a200.ehrpwm", "tbclk", "ehrpwm5_tbclk"),
{ .node_name = NULL },
  };




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


Re: [PATCH] ARM: dts: am437x-gp-evm: Boot fixes

2014-04-29 Thread Dave Gerlach

On 04/25/2014 11:41 AM, Tony Lindgren wrote:

* Dave Gerlach  [140423 10:25]:

On 04/23/2014 09:59 AM, Tony Lindgren wrote:

* Dave Gerlach  [140422 12:53]:

On 04/22/2014 02:01 PM, Tony Lindgren wrote:

* Dave Gerlach  [140422 11:52]:

This patch, along with patch here [1], fixes boot for am437x-gp-evm. The
bootloader configures gpio5_7 to control the DDR3 termination regulator,
the linked patch prevents that gpio bank from being reset and losing
the previously configured state, and this patch binds the gpio to a
regulator so the kernel is aware of the state of the gpio.

[1] https://www.mail-archive.com/linux-omap@vger.kernel.org/msg102941.html


Setting up the GPIO regulator makes sense to me. But the hack in the
link above is potentially a nasty time bomb for anybody trying to
use GPIO bank 5 on that board.

What tests have been done that the GPIO bank behaves properly when
it's not reset?


We've been using this configuration on this board for a while without any
apparent issues. Also, am335x-evmsk already uses the same idea for the VTT
regulator on board from commit 6046adb6ad701026c10adeac8d6a4138895f12e5
[ARM: dts: am335x-evmsk: Do not reset gpio0] and I am unaware of any issues
with that either.


OK. Do you have other GPIOs in use as interrupts for devices in these
banks and do they work fine?


I dont see any interrupts in use from gpio5 bank but as a quick test if I
add ti,no-reset-on-init to gpio3 and gpio4 I see no issue with matrix-keypad
operation which uses gpios from each of those banks.


OK thanks for testing. I'll apply the ti,no-reset-on-init patch from [1]
above into omap-for-v3.15/fixes-v2.

The regulator patch can wait for v3.16, and should be also implemented
for the am335x-evmsk the same way, so maybe add that too to your patch?


Alright thanks, yes I can do that as well for v2.

Regards,
Dave




Also, can you please test to make sure this works with the most recent
Javier's GPIO patches that had the issue of not booting on am335x-evmsk?



Yes, when using Javier's patches in addition to this patch [1], which was
found to be necessary through this discussion [2], the AM437x GP EVM boots
fine with linux-next with my regulator patch and gpio5 no reset patch
applied.


OK good to hear.

Tony


[1] https://patchwork.kernel.org/patch/4041881/
[2] http://marc.info/?t=139817273800014&r=1&w=2


Regards,

Tony





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


[PATCHv3] arm: dts: am43x-clock: add tbclk data for ehrpwm.

2014-04-29 Thread Sourav Poddar
We need "tbclk" clock data for the functioning of ehrpwm
module. Hence, populating the required clock information
in clock dts file.

Signed-off-by: Sourav Poddar 
---
v2->v3
- correct bitshifting

 arch/arm/boot/dts/am43xx-clocks.dtsi |   48 ++
 drivers/clk/ti/clk-43xx.c|6 +
 2 files changed, 54 insertions(+)

diff --git a/arch/arm/boot/dts/am43xx-clocks.dtsi 
b/arch/arm/boot/dts/am43xx-clocks.dtsi
index 142009c..42d7b1f 100644
--- a/arch/arm/boot/dts/am43xx-clocks.dtsi
+++ b/arch/arm/boot/dts/am43xx-clocks.dtsi
@@ -87,6 +87,54 @@
clock-mult = <1>;
clock-div = <1>;
};
+
+   ehrpwm0_tbclk: ehrpwm0_tbclk {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <0>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm1_tbclk: ehrpwm1_tbclk {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <1>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm2_tbclk: ehrpwm2_tbclk {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <2>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm3_tbclk: ehrpwm3_tbclk {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <4>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm4_tbclk: ehrpwm4_tbclk {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <5>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm5_tbclk: ehrpwm5_tbclk {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <6>;
+   reg = <0x0664>;
+   };
 };
 &prcm_clocks {
clk_32768_ck: clk_32768_ck {
diff --git a/drivers/clk/ti/clk-43xx.c b/drivers/clk/ti/clk-43xx.c
index 67c8de5..527a43d 100644
--- a/drivers/clk/ti/clk-43xx.c
+++ b/drivers/clk/ti/clk-43xx.c
@@ -105,6 +105,12 @@ static struct ti_dt_clk am43xx_clks[] = {
DT_CLK(NULL, "func_12m_clk", "func_12m_clk"),
DT_CLK(NULL, "vtp_clk_div", "vtp_clk_div"),
DT_CLK(NULL, "usbphy_32khz_clkmux", "usbphy_32khz_clkmux"),
+   DT_CLK("48300200.ehrpwm", "tbclk", "ehrpwm0_tbclk"),
+   DT_CLK("48302200.ehrpwm", "tbclk", "ehrpwm1_tbclk"),
+   DT_CLK("48304200.ehrpwm", "tbclk", "ehrpwm2_tbclk"),
+   DT_CLK("48306200.ehrpwm", "tbclk", "ehrpwm3_tbclk"),
+   DT_CLK("48308200.ehrpwm", "tbclk", "ehrpwm4_tbclk"),
+   DT_CLK("4830a200.ehrpwm", "tbclk", "ehrpwm5_tbclk"),
{ .node_name = NULL },
 };
 
-- 
1.7.9.5

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


Re: [PATCH v2] ARM: dts: am33xx: Move the cppi41dma node so it's probed early

2014-04-29 Thread Ezequiel García
On 29 April 2014 06:09, Sebastian Andrzej Siewior  wrote:
> On 04/29/2014 10:27 AM, George Cherian wrote:
>> Hi Sebastian,
>
> Hi George,
>
>> On 4/29/2014 1:36 PM, Sebastian Andrzej Siewior wrote:
>>> On 04/29/2014 09:58 AM, George Cherian wrote:
>> This is easily fixed by moving the node at the beggining of the child
>> list,
>> so it's probed first.
 This will give issues on module removal.
 Since we use device_for_each_child in remove patch, it will try to
 remove cppi dma controller, while the channel
 is still in use by musb node.
>>> Isn't this currently disabled because it blew up in the phy code?
>> Yes. So how if the dt  looks like this
>
> No. I remember we talked about this and we decided not to duct tape the
> bug by moving the nodes around. Instead we wanted to disable the child
> removal part (one tiny module that can't be removed) until the PHY code
> does no longer blow up.
> If the same case is for the DMA driver then it should be fixed, too.
> The order of the nodes in .dts should not crash the kernel under any
> circumstances. If a different node order accelerates the probing then
> fine. But a crash is a no no.
>

I still don't see any reason to have the DMA controller node as a
child of the USB.
However, it seems we need it this way for now; at least until we get
rid of the hwmod
altogether.

That said, this DT-ordering to fix other issues is starting to seem a
very bad idea.
I'll prepare a v3 to leave the DT as it is, and instead force the
driver to probe and
remove the childs so the DMA is probed first and the removed last.

We can always get rid of such workaround, once we can remove the DMA controller
out of the USB - as it should be.
-- 
Ezequiel García, VanguardiaSur
www.vanguardiasur.com.ar
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH V3 00/20] bus: omap_l3_noc: driver cleanups and support for DRA7/AM4372

2014-04-29 Thread Sekhar Nori
On Monday 28 April 2014 08:44 PM, Nishanth Menon wrote:
> V3: has the following changes (w.r.t v2):
>   - fixed relaxed commit message and usage.
>   - AM437x internal documents showed that:
>   - new master information updated into the data
>   - masterid register definition is different from OMAP4-DRA7 - 
> some
> additional parsing is done in hardware to "avoid s/w parsing"
>   - Additional testing information showed logic fail for masking 
> "unclearable"
>   new patch added to series - patch #15
>   - Picked up previous acks and tested by - minor changes verified

Tested the series on AM437x ePOS EVM and works great.

Tested-by: Sekhar Nori 

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


Re: [PATCH/RFC 3/4] of/clk: Register clocks suitable for Runtime PM with the PM core

2014-04-29 Thread Grant Likely
On Fri, 25 Apr 2014 16:44:58 -0700, Kevin Hilman  wrote:
> Geert Uytterhoeven  writes:
> 
> > When adding a device from DT, check if its clocks are suitable for Runtime
> > PM, and register them with the PM core.
> > If Runtime PM is disabled, just enable the clock.
> >
> > This allows the PM core to automatically manage gate clocks of devices for
> > Runtime PM.
> 
> ...unless the device is already in an existing pm_domain, right?
> 
> I like this approach, and it extends nicely what we already do on
> platforms using drivers/base/power/clock_ops.c into DT land.
> 
> My only concern is how this will interact if it's used along with
> devices that have existing pm_domains.  I don't have any specific
> concerns (yet, because it's Friday, and my brain is turing off), but it
> just made me wonder if this will be potentially confusing.

I have big concerns about this approach. First, it will only work if
a clock is available at deivce creation time. The conversion of irq
controllers to normal device drivers has already shown that is a bad
idea.

I also don't like that it tries to set up every clock, but there is no
guarantee that the driver will even use it. I would rather see this
behaviour linked into the function that obtains the clock at driver
.probe() time. That way it can handle deferred probe correctly and it
only sets up clocks that are actually used by the driver.

g.
--
To unsubscribe from this list: send the line "unsubscribe 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] arm: dts: am43x-clock: add tbclk data for ehrpwm.

2014-04-29 Thread sourav

Hi Tero,

On Tuesday 29 April 2014 06:16 PM, Tero Kristo wrote:

On 04/29/2014 11:34 AM, Sourav Poddar wrote:

We need "tbclk" clock data for the functioning of ehrpwm
module. Hence, populating the required clock information
in clock dts file.

Signed-off-by: Sourav Poddar 
---
v1->v2:
change compatible according to mainline.
  arch/arm/boot/dts/am43xx-clocks.dtsi |   48 
++

  drivers/clk/ti/clk-43xx.c|6 +
  2 files changed, 54 insertions(+)

diff --git a/arch/arm/boot/dts/am43xx-clocks.dtsi 
b/arch/arm/boot/dts/am43xx-clocks.dtsi

index 142009c..401 100644
--- a/arch/arm/boot/dts/am43xx-clocks.dtsi
+++ b/arch/arm/boot/dts/am43xx-clocks.dtsi
@@ -87,6 +87,54 @@
  clock-mult = <1>;
  clock-div = <1>;
  };
+
+ehrpwm0_tbclk: ehrpwm0_tbclk@44e10664 {
+#clock-cells = <0>;
+compatible = "ti,gate-clock";
+clocks = <&dpll_per_m2_ck>;
+ti,bit-shift = <0>;
+reg = <0x0664>;
+};
+
+ehrpwm1_tbclk: ehrpwm1_tbclk@44e10664 {
+#clock-cells = <0>;
+compatible = "ti,gate-clock";
+clocks = <&dpll_per_m2_ck>;
+ti,bit-shift = <1>;
+reg = <0x0664>;
+};
+
+ehrpwm2_tbclk: ehrpwm2_tbclk@44e10664 {
+#clock-cells = <0>;
+compatible = "ti,gate-clock";
+clocks = <&dpll_per_m2_ck>;
+ti,bit-shift = <2>;
+reg = <0x0664>;
+};
+
+ehrpwm3_tbclk: ehrpwm3_tbclk@44e10664 {
+#clock-cells = <0>;
+compatible = "ti,gate-clock";
+clocks = <&dpll_per_m2_ck>;
+ti,bit-shift = <3>;
+reg = <0x0664>;
+};
+
+ehrpwm4_tbclk: ehrpwm4_tbclk@44e10664 {
+#clock-cells = <0>;
+compatible = "ti,gate-clock";
+clocks = <&dpll_per_m2_ck>;
+ti,bit-shift = <4>;
+reg = <0x0664>;
+};
+
+ehrpwm5_tbclk: ehrpwm5_tbclk@44e10664 {
+#clock-cells = <0>;
+compatible = "ti,gate-clock";
+clocks = <&dpll_per_m2_ck>;
+ti,bit-shift = <5>;
+reg = <0x0664>;
+};


Looking at the TRM, I guess pwm3, pwm4 and pwm5 bit-shifts are wrong? 
Namely, bit 3 of the register is used for PWM_SYNCSEL instead of PWM3 
clock enable. Is this correct and these should be fixed?


Yups, my bad. Used the bit shifts in continuation. Will send an updated 
patch.


-Tero


  };
&prcm_clocks {
  clk_32768_ck: clk_32768_ck {
diff --git a/drivers/clk/ti/clk-43xx.c b/drivers/clk/ti/clk-43xx.c
index 67c8de5..527a43d 100644
--- a/drivers/clk/ti/clk-43xx.c
+++ b/drivers/clk/ti/clk-43xx.c
@@ -105,6 +105,12 @@ static struct ti_dt_clk am43xx_clks[] = {
  DT_CLK(NULL, "func_12m_clk", "func_12m_clk"),
  DT_CLK(NULL, "vtp_clk_div", "vtp_clk_div"),
  DT_CLK(NULL, "usbphy_32khz_clkmux", "usbphy_32khz_clkmux"),
+DT_CLK("48300200.ehrpwm", "tbclk", "ehrpwm0_tbclk"),
+DT_CLK("48302200.ehrpwm", "tbclk", "ehrpwm1_tbclk"),
+DT_CLK("48304200.ehrpwm", "tbclk", "ehrpwm2_tbclk"),
+DT_CLK("48306200.ehrpwm", "tbclk", "ehrpwm3_tbclk"),
+DT_CLK("48308200.ehrpwm", "tbclk", "ehrpwm4_tbclk"),
+DT_CLK("4830a200.ehrpwm", "tbclk", "ehrpwm5_tbclk"),
  { .node_name = NULL },
  };






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


Re: [PATCHv2] arm: dts: am33xx-clock: Fix ehrpwm tbclk data.

2014-04-29 Thread Tero Kristo

On 04/29/2014 11:34 AM, Sourav Poddar wrote:

tbclk does not need to be a composite clock, we can simply
use gate clock for this purpose.

Signed-off-by: Sourav Poddar 


Looks good to me so:

Acked-by: Tero Kristo 


---
v1->v2:
change compatible string according to mainline.
  arch/arm/boot/dts/am33xx-clocks.dtsi |   30 ++
  1 file changed, 6 insertions(+), 24 deletions(-)

diff --git a/arch/arm/boot/dts/am33xx-clocks.dtsi 
b/arch/arm/boot/dts/am33xx-clocks.dtsi
index 9ccfe50..712edce 100644
--- a/arch/arm/boot/dts/am33xx-clocks.dtsi
+++ b/arch/arm/boot/dts/am33xx-clocks.dtsi
@@ -96,47 +96,29 @@
clock-div = <1>;
};

-   ehrpwm0_gate_tbclk: ehrpwm0_gate_tbclk {
+   ehrpwm0_tbclk: ehrpwm0_tbclk@44e10664 {
#clock-cells = <0>;
-   compatible = "ti,composite-no-wait-gate-clock";
+   compatible = "ti,gate-clock";
clocks = <&dpll_per_m2_ck>;
ti,bit-shift = <0>;
reg = <0x0664>;
};

-   ehrpwm0_tbclk: ehrpwm0_tbclk {
-   #clock-cells = <0>;
-   compatible = "ti,composite-clock";
-   clocks = <&ehrpwm0_gate_tbclk>;
-   };
-
-   ehrpwm1_gate_tbclk: ehrpwm1_gate_tbclk {
+   ehrpwm1_tbclk: ehrpwm1_tbclk@44e10664 {
#clock-cells = <0>;
-   compatible = "ti,composite-no-wait-gate-clock";
+   compatible = "ti,gate-clock";
clocks = <&dpll_per_m2_ck>;
ti,bit-shift = <1>;
reg = <0x0664>;
};

-   ehrpwm1_tbclk: ehrpwm1_tbclk {
-   #clock-cells = <0>;
-   compatible = "ti,composite-clock";
-   clocks = <&ehrpwm1_gate_tbclk>;
-   };
-
-   ehrpwm2_gate_tbclk: ehrpwm2_gate_tbclk {
+   ehrpwm2_tbclk: ehrpwm2_tbclk@44e10664 {
#clock-cells = <0>;
-   compatible = "ti,composite-no-wait-gate-clock";
+   compatible = "ti,gate-clock";
clocks = <&dpll_per_m2_ck>;
ti,bit-shift = <2>;
reg = <0x0664>;
};
-
-   ehrpwm2_tbclk: ehrpwm2_tbclk {
-   #clock-cells = <0>;
-   compatible = "ti,composite-clock";
-   clocks = <&ehrpwm2_gate_tbclk>;
-   };
  };
  &prcm_clocks {
clk_32768_ck: clk_32768_ck {



--
To unsubscribe from this list: send the line "unsubscribe 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] arm: dts: am43x-clock: add tbclk data for ehrpwm.

2014-04-29 Thread Tero Kristo

On 04/29/2014 11:34 AM, Sourav Poddar wrote:

We need "tbclk" clock data for the functioning of ehrpwm
module. Hence, populating the required clock information
in clock dts file.

Signed-off-by: Sourav Poddar 
---
v1->v2:
change compatible according to mainline.
  arch/arm/boot/dts/am43xx-clocks.dtsi |   48 ++
  drivers/clk/ti/clk-43xx.c|6 +
  2 files changed, 54 insertions(+)

diff --git a/arch/arm/boot/dts/am43xx-clocks.dtsi 
b/arch/arm/boot/dts/am43xx-clocks.dtsi
index 142009c..401 100644
--- a/arch/arm/boot/dts/am43xx-clocks.dtsi
+++ b/arch/arm/boot/dts/am43xx-clocks.dtsi
@@ -87,6 +87,54 @@
clock-mult = <1>;
clock-div = <1>;
};
+
+   ehrpwm0_tbclk: ehrpwm0_tbclk@44e10664 {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <0>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm1_tbclk: ehrpwm1_tbclk@44e10664 {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <1>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm2_tbclk: ehrpwm2_tbclk@44e10664 {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <2>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm3_tbclk: ehrpwm3_tbclk@44e10664 {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <3>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm4_tbclk: ehrpwm4_tbclk@44e10664 {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <4>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm5_tbclk: ehrpwm5_tbclk@44e10664 {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <5>;
+   reg = <0x0664>;
+   };


Looking at the TRM, I guess pwm3, pwm4 and pwm5 bit-shifts are wrong? 
Namely, bit 3 of the register is used for PWM_SYNCSEL instead of PWM3 
clock enable. Is this correct and these should be fixed?


-Tero


  };
  &prcm_clocks {
clk_32768_ck: clk_32768_ck {
diff --git a/drivers/clk/ti/clk-43xx.c b/drivers/clk/ti/clk-43xx.c
index 67c8de5..527a43d 100644
--- a/drivers/clk/ti/clk-43xx.c
+++ b/drivers/clk/ti/clk-43xx.c
@@ -105,6 +105,12 @@ static struct ti_dt_clk am43xx_clks[] = {
DT_CLK(NULL, "func_12m_clk", "func_12m_clk"),
DT_CLK(NULL, "vtp_clk_div", "vtp_clk_div"),
DT_CLK(NULL, "usbphy_32khz_clkmux", "usbphy_32khz_clkmux"),
+   DT_CLK("48300200.ehrpwm", "tbclk", "ehrpwm0_tbclk"),
+   DT_CLK("48302200.ehrpwm", "tbclk", "ehrpwm1_tbclk"),
+   DT_CLK("48304200.ehrpwm", "tbclk", "ehrpwm2_tbclk"),
+   DT_CLK("48306200.ehrpwm", "tbclk", "ehrpwm3_tbclk"),
+   DT_CLK("48308200.ehrpwm", "tbclk", "ehrpwm4_tbclk"),
+   DT_CLK("4830a200.ehrpwm", "tbclk", "ehrpwm5_tbclk"),
{ .node_name = NULL },
  };




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


Re: [PATCH] gpio: always enable GPIO_OMAP on ARCH_OMAP

2014-04-29 Thread Arnd Bergmann
On Tuesday 29 April 2014 12:53:45 Javier Martinez Canillas wrote:
> Hello Arnd,
> 
> On 04/29/2014 12:26 PM, Arnd Bergmann wrote:
> > On Tuesday 29 April 2014 01:59:20 Javier Martinez Canillas wrote:
> >> This driver is also used by OMAP1. Even when disabling GPIO_OMAP on that
> >> platform doesn't cause a build error since no function defined in the 
> >> driver is
> >> used directly by platform code, I think that we always want this driver on 
> >> OMAP1
> >> too.
> >> 
> >> > However, it seems entirely reasonable to include the driver in build 
> >> > tests
> >> > on other platforms, so we should also allow building it for COMPILE_TEST
> >> > builds and select the required GENERIC_IRQ_CHIP that may not already be
> >> > enabled on other platforms.
> >> > 
> >> > Signed-off-by: Arnd Bergmann 
> >> > 
> >> > diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
> >> > index c58b828..c8c42be 100644
> >> > --- a/drivers/gpio/Kconfig
> >> > +++ b/drivers/gpio/Kconfig
> >> > @@ -244,9 +244,10 @@ config GPIO_OCTEON
> >> > family of SOCs.
> >> >  
> >> >  config GPIO_OMAP
> >> > - bool "TI OMAP GPIO support"
> >> > + bool "TI OMAP GPIO support" if COMPILE_TEST && !ARCH_OMAP2PLUS
> >> 
> >> So this should be:
> >> 
> >> +   bool "TI OMAP GPIO support" if COMPILE_TEST && !ARCH_OMAP2PLUS &&
> >> !ARCH_OMAP1
> >> 
> > 
> > Well, if COMPILE_TEST is disabled on OMAP1, the option is already
> > hidden and enabled in my version. It seems reasonable to me to 
> > allow compile-testing OMAP1 without the GPIO driver, while a kernel
> > running on OMAP1 should always have COMPILE_TEST disabled.
> > 
> 
> I understand your point. I thought you also wanted to be sure that the option
> will be hidden in platforms where it make sense to always enable GPIO_OMAP 
> even
> if COMPILE_TEST is enabled.

I thought about that, but didn't want to enforce it without a good reason
when your original patch had just made it possible to disable the option.

> If the idea of this patch is to only avoid build errors when GPIO_OMAP is
> disabled and allowing build testing the driver in other platforms, then I'm ok
> with your patch and feel free to add my Acked-by tag.

Ok, thanks!

> And you are right that COMPILE_TEST is disabled in omap1_defconfig and after 
> all
> there are so many drivers needed for a platform to be usable on boot. So one 
> has
> to take care of enabling all the needed options as long as there isn't a
> combination that cause a build error like the one you are fixing here.

Ok

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 v4 5/5] ARM: DRA7: Add support for soc_is_dra74x() and soc_is_dra72x() varients

2014-04-29 Thread Arnd Bergmann
On Tuesday 29 April 2014 16:35:13 Rajendra Nayak wrote:
> @@ -393,7 +395,12 @@ IS_OMAP_TYPE(3430, 0x3430)
>  
>  #if defined(CONFIG_SOC_DRA7XX)
>  #undef soc_is_dra7xx
> +#undef soc_is_dra74x
> +#undef soc_is_dra72x
>  #define soc_is_dra7xx()(of_machine_is_compatible("ti,dra7"))
> +#define soc_is_dra74x()(of_machine_is_compatible("ti,dra74"))
> +#define soc_is_dra72x()(of_machine_is_compatible("ti,dra72"))
> +

You shouldn't normally have to define these. Why are they needed?

Maybe it's better to wait for a user to show up, and then we can decide
whether we actually want to have them this way, or if there is a better
solution for the particular use case.

Normally, we'd want to make run-time decisions based on properties
of the nodes a driver is working on, not the global machine compatible
string.

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 v4 5/5] ARM: DRA7: Add support for soc_is_dra74x() and soc_is_dra72x() varients

2014-04-29 Thread Rajendra Nayak
On Tuesday 29 April 2014 04:48 PM, Arnd Bergmann wrote:
> On Tuesday 29 April 2014 16:35:13 Rajendra Nayak wrote:
>> @@ -393,7 +395,12 @@ IS_OMAP_TYPE(3430, 0x3430)
>>  
>>  #if defined(CONFIG_SOC_DRA7XX)
>>  #undef soc_is_dra7xx
>> +#undef soc_is_dra74x
>> +#undef soc_is_dra72x
>>  #define soc_is_dra7xx()(of_machine_is_compatible("ti,dra7"))
>> +#define soc_is_dra74x()(of_machine_is_compatible("ti,dra74"))
>> +#define soc_is_dra72x()(of_machine_is_compatible("ti,dra72"))
>> +
> 
> You shouldn't normally have to define these. Why are they needed?
> 
> Maybe it's better to wait for a user to show up, and then we can decide
> whether we actually want to have them this way, or if there is a better
> solution for the particular use case.
> 
> Normally, we'd want to make run-time decisions based on properties
> of the nodes a driver is working on, not the global machine compatible
> string.

Yeah, actually this can be dropped. There is no user for it now.

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


[PATCH 14/15] ASoC: Amstrad E3 needs TTY support for codec

2014-04-29 Thread Xia Kaixu
From: Arnd Bergmann 

The cx20442 codec driver used here requires the TTY layer to
be enabled, or we get a link error:

sound/built-in.o: In function `cx20442_codec_remove':
cx20442.c:398: undefined reference to `tty_hangup'
sound/built-in.o: In function `ams_delta_remove':
ams-delta.c:613: undefined reference to `tty_unregister_ldisc'
sound/built-in.o: In function `ams_delta_cx20442_init':
ams-delta.c:559: undefined reference to `tty_register_ldisc'

This adds the missing dependency in the E3 configuration, there
was already one for the codec.

Signed-off-by: Arnd Bergmann 
Signed-off-by: Xia Kaixu 
Cc: Mark Brown 
Cc: Liam Girdwood 
Cc: Peter Ujfalusi 
Cc: Jarkko Nikula 
Cc: linux-omap@vger.kernel.org
Cc: alsa-de...@alsa-project.org
---
 sound/soc/omap/Kconfig |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/soc/omap/Kconfig b/sound/soc/omap/Kconfig
index 2796af9..d44463a 100644
--- a/sound/soc/omap/Kconfig
+++ b/sound/soc/omap/Kconfig
@@ -37,7 +37,7 @@ config SND_OMAP_SOC_RX51
 
 config SND_OMAP_SOC_AMS_DELTA
tristate "SoC Audio support for Amstrad E3 (Delta) videophone"
-   depends on SND_OMAP_SOC && MACH_AMS_DELTA
+   depends on SND_OMAP_SOC && MACH_AMS_DELTA && TTY
select SND_OMAP_SOC_MCBSP
select SND_SOC_CX20442
help
-- 
1.7.9.5

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


[PATCH 06/15] ASoC: RX-51 audio needs I2C

2014-04-29 Thread Xia Kaixu
From: Arnd Bergmann 

The codec requires I2C to be enabled, so any other option
that selects it should also depend on I2C.

Signed-off-by: Arnd Bergmann 
Signed-off-by: Xia Kaixu 
Cc: Mark Brown 
Cc: Liam Girdwood 
Cc: Peter Ujfalusi 
Cc: Jarkko Nikula 
Cc: alsa-de...@alsa-project.org
Cc: linux-omap@vger.kernel.org
---
 sound/soc/omap/Kconfig |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/sound/soc/omap/Kconfig b/sound/soc/omap/Kconfig
index e006593..2796af9 100644
--- a/sound/soc/omap/Kconfig
+++ b/sound/soc/omap/Kconfig
@@ -26,7 +26,7 @@ config SND_OMAP_SOC_N810
 
 config SND_OMAP_SOC_RX51
tristate "SoC Audio support for Nokia RX-51"
-   depends on SND_OMAP_SOC && ARM && (MACH_NOKIA_RX51 || COMPILE_TEST)
+   depends on SND_OMAP_SOC && ARM && (MACH_NOKIA_RX51 || COMPILE_TEST) && 
I2C
select SND_OMAP_SOC_MCBSP
select SND_SOC_TLV320AIC3X
select SND_SOC_TPA6130A2
-- 
1.7.9.5

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


Re: [PATCH v4 2/5] ARM: dts: Add support for DRA72x family of devices

2014-04-29 Thread Arnd Bergmann
On Tuesday 29 April 2014 16:35:10 Rajendra Nayak wrote:
> DRA722 is part of DRA72x family which are single core cortex A15 devices
> with most infrastructure IPs otherwise same as whats on the DRA74x family.
> 
> So move the cpu nodes into dra74x.dtsi and dra72x.dtsi respectively.
> 
> Also add a minimal dra72-evm dts file.
> 
> Signed-off-by: Rajendra Nayak 
> Cc: linux-...@vger.kernel.org
> Cc: devicet...@vger.kernel.org

Acked-by: Arnd Bergmann 
--
To unsubscribe from this list: send the line "unsubscribe 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 v4 4/5] ARM: OMAP2+: Add machine entry for dra72x devices

2014-04-29 Thread Arnd Bergmann
On Tuesday 29 April 2014 16:35:12 Rajendra Nayak wrote:
> The only difference from the dra74x devices is the missing .smp entry.
> 
> Signed-off-by: Rajendra Nayak 
> ---
>  arch/arm/mach-omap2/board-generic.c |   25 +
>  1 file changed, 21 insertions(+), 4 deletions(-)
> 

Acked-by: Arnd Bergmann 
--
To unsubscribe from this list: send the line "unsubscribe 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 v4 4/5] ARM: OMAP2+: Add machine entry for dra72x devices

2014-04-29 Thread Rajendra Nayak
The only difference from the dra74x devices is the missing .smp entry.

Signed-off-by: Rajendra Nayak 
---
 arch/arm/mach-omap2/board-generic.c |   25 +
 1 file changed, 21 insertions(+), 4 deletions(-)

diff --git a/arch/arm/mach-omap2/board-generic.c 
b/arch/arm/mach-omap2/board-generic.c
index 90dbfdf..238ab0a 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -240,13 +240,13 @@ MACHINE_END
 #endif
 
 #ifdef CONFIG_SOC_DRA7XX
-static const char *dra7xx_boards_compat[] __initconst = {
-   "ti,dra7xx",
+static const char *dra74x_boards_compat[] __initconst = {
+   "ti,dra742",
"ti,dra7",
NULL,
 };
 
-DT_MACHINE_START(DRA7XX_DT, "Generic DRA7XX (Flattened Device Tree)")
+DT_MACHINE_START(DRA74X_DT, "Generic DRA74X (Flattened Device Tree)")
.reserve= omap_reserve,
.smp= smp_ops(omap4_smp_ops),
.map_io = omap5_map_io,
@@ -255,7 +255,24 @@ DT_MACHINE_START(DRA7XX_DT, "Generic DRA7XX (Flattened 
Device Tree)")
.init_irq   = omap_gic_of_init,
.init_machine   = omap_generic_init,
.init_time  = omap5_realtime_timer_init,
-   .dt_compat  = dra7xx_boards_compat,
+   .dt_compat  = dra74x_boards_compat,
+   .restart= omap44xx_restart,
+MACHINE_END
+
+static const char *dra72x_boards_compat[] __initconst = {
+   "ti,dra722",
+   NULL,
+};
+
+DT_MACHINE_START(DRA72X_DT, "Generic DRA72X (Flattened Device Tree)")
+   .reserve= omap_reserve,
+   .map_io = omap5_map_io,
+   .init_early = dra7xx_init_early,
+   .init_late  = dra7xx_init_late,
+   .init_irq   = omap_gic_of_init,
+   .init_machine   = omap_generic_init,
+   .init_time  = omap5_realtime_timer_init,
+   .dt_compat  = dra72x_boards_compat,
.restart= omap44xx_restart,
 MACHINE_END
 #endif
-- 
1.7.9.5

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


[PATCH v4 3/5] ARM: OMAP2+: Replace all __initdata with __initconst for const init

2014-04-29 Thread Rajendra Nayak
Use of const init definition must use __initconst so replace
all such instances where __initdata is used.

Signed-off-by: Rajendra Nayak 
---
 arch/arm/mach-omap2/board-generic.c |   22 +++---
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/arch/arm/mach-omap2/board-generic.c 
b/arch/arm/mach-omap2/board-generic.c
index b8920b6..90dbfdf 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -43,7 +43,7 @@ static void __init omap_generic_init(void)
 }
 
 #ifdef CONFIG_SOC_OMAP2420
-static const char *omap242x_boards_compat[] __initdata = {
+static const char *omap242x_boards_compat[] __initconst = {
"ti,omap2420",
NULL,
 };
@@ -62,7 +62,7 @@ MACHINE_END
 #endif
 
 #ifdef CONFIG_SOC_OMAP2430
-static const char *omap243x_boards_compat[] __initdata = {
+static const char *omap243x_boards_compat[] __initconst = {
"ti,omap2430",
NULL,
 };
@@ -81,7 +81,7 @@ MACHINE_END
 #endif
 
 #ifdef CONFIG_ARCH_OMAP3
-static const char *omap3_boards_compat[] __initdata = {
+static const char *omap3_boards_compat[] __initconst = {
"ti,omap3430",
"ti,omap3",
NULL,
@@ -100,7 +100,7 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device 
Tree)")
.restart= omap3xxx_restart,
 MACHINE_END
 
-static const char *omap36xx_boards_compat[] __initdata = {
+static const char *omap36xx_boards_compat[] __initconst = {
"ti,omap36xx",
NULL,
 };
@@ -118,7 +118,7 @@ DT_MACHINE_START(OMAP36XX_DT, "Generic OMAP36xx (Flattened 
Device Tree)")
.restart= omap3xxx_restart,
 MACHINE_END
 
-static const char *omap3_gp_boards_compat[] __initdata = {
+static const char *omap3_gp_boards_compat[] __initconst = {
"ti,omap3-beagle",
"timll,omap3-devkit8000",
NULL,
@@ -137,7 +137,7 @@ DT_MACHINE_START(OMAP3_GP_DT, "Generic OMAP3-GP (Flattened 
Device Tree)")
.restart= omap3xxx_restart,
 MACHINE_END
 
-static const char *am3517_boards_compat[] __initdata = {
+static const char *am3517_boards_compat[] __initconst = {
"ti,am3517",
NULL,
 };
@@ -157,7 +157,7 @@ MACHINE_END
 #endif
 
 #ifdef CONFIG_SOC_AM33XX
-static const char *am33xx_boards_compat[] __initdata = {
+static const char *am33xx_boards_compat[] __initconst = {
"ti,am33xx",
NULL,
 };
@@ -177,7 +177,7 @@ MACHINE_END
 #endif
 
 #ifdef CONFIG_ARCH_OMAP4
-static const char *omap4_boards_compat[] __initdata = {
+static const char *omap4_boards_compat[] __initconst = {
"ti,omap4460",
"ti,omap4430",
"ti,omap4",
@@ -199,7 +199,7 @@ MACHINE_END
 #endif
 
 #ifdef CONFIG_SOC_OMAP5
-static const char *omap5_boards_compat[] __initdata = {
+static const char *omap5_boards_compat[] __initconst = {
"ti,omap5432",
"ti,omap5430",
"ti,omap5",
@@ -221,7 +221,7 @@ MACHINE_END
 #endif
 
 #ifdef CONFIG_SOC_AM43XX
-static const char *am43_boards_compat[] __initdata = {
+static const char *am43_boards_compat[] __initconst = {
"ti,am4372",
"ti,am43",
NULL,
@@ -240,7 +240,7 @@ MACHINE_END
 #endif
 
 #ifdef CONFIG_SOC_DRA7XX
-static const char *dra7xx_boards_compat[] __initdata = {
+static const char *dra7xx_boards_compat[] __initconst = {
"ti,dra7xx",
"ti,dra7",
NULL,
-- 
1.7.9.5

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


[PATCH v4 5/5] ARM: DRA7: Add support for soc_is_dra74x() and soc_is_dra72x() varients

2014-04-29 Thread Rajendra Nayak
Use the corresponding compatibles to identify the devices.

Signed-off-by: Rajendra Nayak 
---
 arch/arm/mach-omap2/soc.h |7 +++
 1 file changed, 7 insertions(+)

diff --git a/arch/arm/mach-omap2/soc.h b/arch/arm/mach-omap2/soc.h
index 30abcc8..5ff724e 100644
--- a/arch/arm/mach-omap2/soc.h
+++ b/arch/arm/mach-omap2/soc.h
@@ -245,6 +245,8 @@ IS_AM_SUBCLASS(437x, 0x437)
 #define soc_is_omap54xx()  0
 #define soc_is_omap543x()  0
 #define soc_is_dra7xx()0
+#define soc_is_dra74x()0
+#define soc_is_dra72x()0
 
 #if defined(MULTI_OMAP2)
 # if defined(CONFIG_ARCH_OMAP2)
@@ -393,7 +395,12 @@ IS_OMAP_TYPE(3430, 0x3430)
 
 #if defined(CONFIG_SOC_DRA7XX)
 #undef soc_is_dra7xx
+#undef soc_is_dra74x
+#undef soc_is_dra72x
 #define soc_is_dra7xx()(of_machine_is_compatible("ti,dra7"))
+#define soc_is_dra74x()(of_machine_is_compatible("ti,dra74"))
+#define soc_is_dra72x()(of_machine_is_compatible("ti,dra72"))
+
 #endif
 
 /* Various silicon revisions for omap2 */
-- 
1.7.9.5

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


[PATCH v4 0/5] ARM: DRA7: Add support for DRA72x devices

2014-04-29 Thread Rajendra Nayak
changes in v4:
-1- used full SoC names in compatibles eg "ti,dra742" and "ti,dra722"
-2- Created a seperate patch for replacing __initdata with __initconst

changes in v3:
Removed wildcards from compatible strings and duplicates from
.dt_compat strings as suggested by Arnd

DRA72x devices are single core Cortex A15 devices belonging to the
DRA7 family (Similar to the DRA74x devices which are dual core Cortex
A15 based)

The patches (based off 3.15-rc3) add minimal DT/kernel modifications to add
boot support on DRA722 device reusing all the kernel data for DRA742 device.

Rajendra Nayak (5):
  ARM: dts: dra7-evm: Remove the wrong and undocumented compatible
  ARM: dts: Add support for DRA72x family of devices
  ARM: OMAP2+: Replace all __initdata with __initconst for const init
  ARM: OMAP2+: Add machine entry for dra72x devices
  ARM: DRA7: Add support for soc_is_dra74x() and soc_is_dra72x()
varients

 .../devicetree/bindings/arm/omap/omap.txt  |   12 --
 arch/arm/boot/dts/Makefile |3 +-
 arch/arm/boot/dts/dra7-evm.dts |6 +--
 arch/arm/boot/dts/dra7.dtsi|   27 
 arch/arm/boot/dts/dra72-evm.dts|   24 +++
 arch/arm/boot/dts/dra72x.dtsi  |   25 +++
 arch/arm/boot/dts/dra74x.dtsi  |   41 ++
 arch/arm/mach-omap2/board-generic.c|   45 ++--
 arch/arm/mach-omap2/soc.h  |7 +++
 9 files changed, 142 insertions(+), 48 deletions(-)
 create mode 100644 arch/arm/boot/dts/dra72-evm.dts
 create mode 100644 arch/arm/boot/dts/dra72x.dtsi
 create mode 100644 arch/arm/boot/dts/dra74x.dtsi

-- 
1.7.9.5

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


[PATCH v4 1/5] ARM: dts: dra7-evm: Remove the wrong and undocumented compatible

2014-04-29 Thread Rajendra Nayak
"ti,dra752" is neither documented nor correct, since the device is actually a
dra742 device as rightly documented in dt bindings.

Signed-off-by: Rajendra Nayak 
Cc: devicet...@vger.kernel.org
---
 arch/arm/boot/dts/dra7-evm.dts |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/arm/boot/dts/dra7-evm.dts b/arch/arm/boot/dts/dra7-evm.dts
index 5babba0..7807429 100644
--- a/arch/arm/boot/dts/dra7-evm.dts
+++ b/arch/arm/boot/dts/dra7-evm.dts
@@ -11,7 +11,7 @@
 
 / {
model = "TI DRA7";
-   compatible = "ti,dra7-evm", "ti,dra752", "ti,dra7";
+   compatible = "ti,dra7-evm", "ti,dra7";
 
memory {
device_type = "memory";
-- 
1.7.9.5

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


[PATCH v4 2/5] ARM: dts: Add support for DRA72x family of devices

2014-04-29 Thread Rajendra Nayak
DRA722 is part of DRA72x family which are single core cortex A15 devices
with most infrastructure IPs otherwise same as whats on the DRA74x family.

So move the cpu nodes into dra74x.dtsi and dra72x.dtsi respectively.

Also add a minimal dra72-evm dts file.

Signed-off-by: Rajendra Nayak 
Cc: linux-...@vger.kernel.org
Cc: devicet...@vger.kernel.org
---
 .../devicetree/bindings/arm/omap/omap.txt  |   12 --
 arch/arm/boot/dts/Makefile |3 +-
 arch/arm/boot/dts/dra7-evm.dts |6 +--
 arch/arm/boot/dts/dra7.dtsi|   27 -
 arch/arm/boot/dts/dra72-evm.dts|   24 
 arch/arm/boot/dts/dra72x.dtsi  |   25 
 arch/arm/boot/dts/dra74x.dtsi  |   41 
 7 files changed, 104 insertions(+), 34 deletions(-)
 create mode 100644 arch/arm/boot/dts/dra72-evm.dts
 create mode 100644 arch/arm/boot/dts/dra72x.dtsi
 create mode 100644 arch/arm/boot/dts/dra74x.dtsi

diff --git a/Documentation/devicetree/bindings/arm/omap/omap.txt 
b/Documentation/devicetree/bindings/arm/omap/omap.txt
index 36ede19..3bad259 100644
--- a/Documentation/devicetree/bindings/arm/omap/omap.txt
+++ b/Documentation/devicetree/bindings/arm/omap/omap.txt
@@ -80,7 +80,10 @@ SoCs:
   compatible = "ti,omap5432", "ti,omap5"
 
 - DRA742
-  compatible = "ti,dra7xx", "ti,dra7"
+  compatible = "ti,dra742", "ti,dra74", "ti,dra7"
+
+- DRA722
+  compatible = "ti,dra722", "ti,dra72", "ti,dra7"
 
 - AM4372
   compatible = "ti,am4372", "ti,am43"
@@ -120,5 +123,8 @@ Boards:
 - AM437x GP EVM
   compatible = "ti,am437x-gp-evm", "ti,am4372", "ti,am43"
 
-- DRA7 EVM:  Software Developement Board for DRA7XX
-  compatible = "ti,dra7-evm", "ti,dra7"
+- DRA742 EVM:  Software Developement Board for DRA742
+  compatible = "ti,dra7-evm", "ti,dra742", "ti,dra74", "ti,dra7"
+
+- DRA722 EVM: Software Development Board for DRA722
+  compatible = "ti,dra72-evm", "ti,dra722", "ti,dra72", "ti,dra7"
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 35c146f..ff98a97 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -288,7 +288,8 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
am3517_mt_ventoux.dtb \
am43x-epos-evm.dtb \
am437x-gp-evm.dtb \
-   dra7-evm.dtb
+   dra7-evm.dtb \
+   dra72-evm.dtb
 dtb-$(CONFIG_ARCH_ORION5X) += orion5x-lacie-ethernet-disk-mini-v2.dtb
 dtb-$(CONFIG_ARCH_PRIMA2) += prima2-evb.dtb
 dtb-$(CONFIG_ARCH_QCOM) += qcom-msm8660-surf.dtb \
diff --git a/arch/arm/boot/dts/dra7-evm.dts b/arch/arm/boot/dts/dra7-evm.dts
index 7807429..39b718a 100644
--- a/arch/arm/boot/dts/dra7-evm.dts
+++ b/arch/arm/boot/dts/dra7-evm.dts
@@ -7,11 +7,11 @@
  */
 /dts-v1/;
 
-#include "dra7.dtsi"
+#include "dra74x.dtsi"
 
 / {
-   model = "TI DRA7";
-   compatible = "ti,dra7-evm", "ti,dra7";
+   model = "TI DRA742";
+   compatible = "ti,dra7-evm", "ti,dra742", "ti,dra74", "ti,dra7";
 
memory {
device_type = "memory";
diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi
index 1c0f8e1..e27fec7 100644
--- a/arch/arm/boot/dts/dra7.dtsi
+++ b/arch/arm/boot/dts/dra7.dtsi
@@ -33,33 +33,6 @@
serial5 = &uart6;
};
 
-   cpus {
-   #address-cells = <1>;
-   #size-cells = <0>;
-
-   cpu0: cpu@0 {
-   device_type = "cpu";
-   compatible = "arm,cortex-a15";
-   reg = <0>;
-
-   operating-points = <
-   /* kHzuV */
-   100 106
-   1176000 116
-   >;
-
-   clocks = <&dpll_mpu_ck>;
-   clock-names = "cpu";
-
-   clock-latency = <30>; /* From omap-cpufreq driver */
-   };
-   cpu@1 {
-   device_type = "cpu";
-   compatible = "arm,cortex-a15";
-   reg = <1>;
-   };
-   };
-
timer {
compatible = "arm,armv7-timer";
interrupts = ,
diff --git a/arch/arm/boot/dts/dra72-evm.dts b/arch/arm/boot/dts/dra72-evm.dts
new file mode 100644
index 000..5147023
--- /dev/null
+++ b/arch/arm/boot/dts/dra72-evm.dts
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2014 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+#include "dra72x.dtsi"
+
+/ {
+   model = "TI DRA722";
+   compatible = "ti,dra72-evm", "ti,dra722", "ti,dra72", "ti,dra7";
+
+   memory {
+   device_type = "memory";
+   reg =

Re: [PATCH] gpio: always enable GPIO_OMAP on ARCH_OMAP

2014-04-29 Thread Javier Martinez Canillas
Hello Arnd,

On 04/29/2014 12:26 PM, Arnd Bergmann wrote:
> On Tuesday 29 April 2014 01:59:20 Javier Martinez Canillas wrote:
>> This driver is also used by OMAP1. Even when disabling GPIO_OMAP on that
>> platform doesn't cause a build error since no function defined in the driver 
>> is
>> used directly by platform code, I think that we always want this driver on 
>> OMAP1
>> too.
>> 
>> > However, it seems entirely reasonable to include the driver in build tests
>> > on other platforms, so we should also allow building it for COMPILE_TEST
>> > builds and select the required GENERIC_IRQ_CHIP that may not already be
>> > enabled on other platforms.
>> > 
>> > Signed-off-by: Arnd Bergmann 
>> > 
>> > diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
>> > index c58b828..c8c42be 100644
>> > --- a/drivers/gpio/Kconfig
>> > +++ b/drivers/gpio/Kconfig
>> > @@ -244,9 +244,10 @@ config GPIO_OCTEON
>> > family of SOCs.
>> >  
>> >  config GPIO_OMAP
>> > - bool "TI OMAP GPIO support"
>> > + bool "TI OMAP GPIO support" if COMPILE_TEST && !ARCH_OMAP2PLUS
>> 
>> So this should be:
>> 
>> +   bool "TI OMAP GPIO support" if COMPILE_TEST && !ARCH_OMAP2PLUS &&
>> !ARCH_OMAP1
>> 
> 
> Well, if COMPILE_TEST is disabled on OMAP1, the option is already
> hidden and enabled in my version. It seems reasonable to me to 
> allow compile-testing OMAP1 without the GPIO driver, while a kernel
> running on OMAP1 should always have COMPILE_TEST disabled.
> 
>   Arnd
> 

I understand your point. I thought you also wanted to be sure that the option
will be hidden in platforms where it make sense to always enable GPIO_OMAP even
if COMPILE_TEST is enabled.

If the idea of this patch is to only avoid build errors when GPIO_OMAP is
disabled and allowing build testing the driver in other platforms, then I'm ok
with your patch and feel free to add my Acked-by tag.

And you are right that COMPILE_TEST is disabled in omap1_defconfig and after all
there are so many drivers needed for a platform to be usable on boot. So one has
to take care of enabling all the needed options as long as there isn't a
combination that cause a build error like the one you are fixing here.

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


Re: [PATCH] gpio: always enable GPIO_OMAP on ARCH_OMAP

2014-04-29 Thread Arnd Bergmann
On Tuesday 29 April 2014 01:59:20 Javier Martinez Canillas wrote:
> This driver is also used by OMAP1. Even when disabling GPIO_OMAP on that
> platform doesn't cause a build error since no function defined in the driver 
> is
> used directly by platform code, I think that we always want this driver on 
> OMAP1
> too.
> 
> > However, it seems entirely reasonable to include the driver in build tests
> > on other platforms, so we should also allow building it for COMPILE_TEST
> > builds and select the required GENERIC_IRQ_CHIP that may not already be
> > enabled on other platforms.
> > 
> > Signed-off-by: Arnd Bergmann 
> > 
> > diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
> > index c58b828..c8c42be 100644
> > --- a/drivers/gpio/Kconfig
> > +++ b/drivers/gpio/Kconfig
> > @@ -244,9 +244,10 @@ config GPIO_OCTEON
> > family of SOCs.
> >  
> >  config GPIO_OMAP
> > - bool "TI OMAP GPIO support"
> > + bool "TI OMAP GPIO support" if COMPILE_TEST && !ARCH_OMAP2PLUS
> 
> So this should be:
> 
> +   bool "TI OMAP GPIO support" if COMPILE_TEST && !ARCH_OMAP2PLUS &&
> !ARCH_OMAP1
> 

Well, if COMPILE_TEST is disabled on OMAP1, the option is already
hidden and enabled in my version. It seems reasonable to me to 
allow compile-testing OMAP1 without the GPIO driver, while a kernel
running on OMAP1 should always have COMPILE_TEST disabled.

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 v10 1/5] mmc: omap_hsmmc: Enable SDIO interrupt

2014-04-29 Thread Andreas Müller
On Mon, Apr 28, 2014 at 9:40 AM, Andreas Fenkart  wrote:
> There have been various patches floating around for enabling
> the SDIO IRQ for hsmmc, but none of them ever got merged.
>
> Probably the reason for not merging the SDIO interrupt patches
> has been the lack of wake-up path for SDIO on some omaps that
> has also needed remuxing the SDIO DAT1 line to a GPIO making
> the patches complex.
>
> This patch adds the minimal SDIO IRQ support to hsmmc for
> omaps that do have the wake-up path. For those omaps, the
> DAT1 line need to have the wake-up enable bit set, and the
> wake-up interrupt is the same as for the MMC controller.
>
> This patch has been tested on am3730 es1.2 with mwifiex
> connected to MMC3 with mwifiex waking to Ethernet traffic
> from off-idle mode. Note that for omaps that do not have
> the SDIO wake-up path, this patch will not work for idle
> modes and further patches for remuxing DAT1 to GPIO are
> needed.
>
> Based on earlier patches [1][2] by David Vrabel
> , Steve Sakoman 
>
> For now, only support SDIO interrupt if we are booted with
> a separate wake-irq configued via device tree. This is
> because omaps need the wake-irq for idle states, and some
> omaps need special quirks. And we don't want to add new
> legacy mux platform init code callbacks any longer as we
> are moving to DT based booting anyways.
>
> To use it, you need to specify the wake-irq using the
> interrupts-extended property.
>
> [1] 
> http://www.sakoman.com/cgi-bin/gitweb.cgi?p=linux.git;a=commitdiff_plain;h=010810d22f6f49ac03da4ba384969432e0320453
> [2] http://comments.gmane.org/gmane.linux.kernel.mmc/20446
>
> Cc: Balaji T K 
> Signed-off-by: Andreas Fenkart 
> Signed-off-by: Tony Lindgren 
>
> diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
> index 272e0ee..700fb91 100644
> --- a/drivers/mmc/host/omap_hsmmc.c
> +++ b/drivers/mmc/host/omap_hsmmc.c
> @@ -29,6 +29,7 @@
>  #include 
>  #include 
>  #include 
> +#include 
>  #include 
>  #include 
>  #include 
> @@ -36,6 +37,7 @@
>  #include 
>  #include 
>  #include 
> +#include 
>  #include 
>  #include 
>  #include 
> @@ -106,6 +108,7 @@
>  #define TC_EN  (1 << 1)
>  #define BWR_EN (1 << 4)
>  #define BRR_EN (1 << 5)
> +#define CIRQ_EN(1 << 8)
>  #define ERR_EN (1 << 15)
>  #define CTO_EN (1 << 16)
>  #define CCRC_EN(1 << 17)
> @@ -140,7 +143,6 @@
>  #define VDD_3V0300 /* 30 uV */
>  #define VDD_165_195(ffs(MMC_VDD_165_195) - 1)
>
> -#define AUTO_CMD23 (1 << 1)/* Auto CMD23 support */
>  /*
>   * One controller can have multiple slots, like on some omap boards using
>   * omap.c controller driver. Luckily this is not currently done on any known
> @@ -194,6 +196,7 @@ struct omap_hsmmc_host {
> u32 sysctl;
> u32 capa;
> int irq;
> +   int wake_irq;
> int use_dma, dma_ch;
> struct dma_chan *tx_chan;
> struct dma_chan *rx_chan;
> @@ -206,6 +209,9 @@ struct omap_hsmmc_host {
> int req_in_progress;
> unsigned long   clk_rate;
> unsigned intflags;
> +#define AUTO_CMD23 (1 << 0)/* Auto CMD23 support */
> +#define HSMMC_SDIO_IRQ_ENABLED (1 << 1)/* SDIO irq enabled */
> +#define HSMMC_WAKE_IRQ_ENABLED (1 << 2)
> struct omap_hsmmc_next  next_data;
> struct  omap_mmc_platform_data  *pdata;
>  };
> @@ -510,27 +516,40 @@ static void omap_hsmmc_stop_clock(struct 
> omap_hsmmc_host *host)
>  static void omap_hsmmc_enable_irq(struct omap_hsmmc_host *host,
>   struct mmc_command *cmd)
>  {
> -   unsigned int irq_mask;
> +   u32 irq_mask = INT_EN_MASK;
> +   unsigned long flags;
>
> if (host->use_dma)
> -   irq_mask = INT_EN_MASK & ~(BRR_EN | BWR_EN);
> -   else
> -   irq_mask = INT_EN_MASK;
> +   irq_mask &= ~(BRR_EN | BWR_EN);
>
> /* Disable timeout for erases */
> if (cmd->opcode == MMC_ERASE)
> irq_mask &= ~DTO_EN;
>
> +   spin_lock_irqsave(&host->irq_lock, flags);
> OMAP_HSMMC_WRITE(host->base, STAT, STAT_CLEAR);
> OMAP_HSMMC_WRITE(host->base, ISE, irq_mask);
> +
> +   /* latch pending CIRQ, but don't signal MMC core */
> +   if (host->flags & HSMMC_SDIO_IRQ_ENABLED)
> +   irq_mask |= CIRQ_EN;
> OMAP_HSMMC_WRITE(host->base, IE, irq_mask);
> +   spin_unlock_irqrestore(&host->irq_lock, flags);
>  }
>
>  static void omap_hsmmc_disable_irq(struct omap_hsmmc_host *host)
>  {
> -   OMAP_HSMMC_WRITE(host->base, ISE, 0);
> -   OMAP_HSMMC_WRITE(host->base, IE, 0);
> +   u32 irq_mask = 0;
> +   unsig

Re: [PATCHv3 2/5] Input: tsc2005: use dev_err for error messages

2014-04-29 Thread Pavel Machek
On Sat 2014-04-26 01:56:16, Sebastian Reichel wrote:
> Change some dev_dbg() invocations to dev_err() ones, because they
> are supposed to output error messages.
> 
> Signed-off-by: Sebastian Reichel 

Reviewed-by: Pavel Machek 
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) 
http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.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: [PATCHv3 4/5] Input: tsc2005: add DT support

2014-04-29 Thread Pavel Machek
On Sat 2014-04-26 01:56:18, Sebastian Reichel wrote:
> This adds DT support to the tsc2005 touchscreen
> driver.
> 
> Signed-off-by: Sebastian Reichel 

> @@ -100,6 +102,11 @@
>TSC2005_CFR2_AVG_7)
>  
>  #define MAX_12BIT0xfff
> +#define TSC2005_DEF_X_FUZZ   4
> +#define TSC2005_DEF_Y_FUZZ   8
> +#define TSC2005_DEF_P_FUZZ   2
> +#define TSC2005_DEF_RESISTOR 280
> 

IMO using defines insteaed of plain numbers does not help readability much,
but 

Reviewed-by: Pavel Machek 


-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) 
http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.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: [PATCHv3 5/5] Documentation: dt: Document TSC2005 DT binding

2014-04-29 Thread Pavel Machek
On Sat 2014-04-26 01:56:19, Sebastian Reichel wrote:
> Add devicetree binding documentation for TSC2005 touchscreen.
> 

Reviewed-by: Pavel Machek 
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) 
http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.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: [PATCHv3 3/5] Input: tsc2005: convert driver to use devm_*

2014-04-29 Thread Pavel Machek
On Sat 2014-04-26 01:56:17, Sebastian Reichel wrote:
> Simplify the driver by using managed resources for memory allocation of
> internal struct, input device allocation and irq request.
> 
> Signed-off-by: Sebastian Reichel 

Reviewed-by: Pavel Machek 

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) 
http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.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: [PATCHv3 1/5] Input: add common DT binding for touchscreens

2014-04-29 Thread Pavel Machek
On Sat 2014-04-26 01:56:15, Sebastian Reichel wrote:
> Add common DT binding documentation for touchscreen devices and
> implement input_parse_touchscreen_of_params, which parses the common
> properties and configures the input device accordingly.
> 
> The method currently does not interpret the axis inversion properties,
> since there is no matching flag in the generic linux input device.
> 
> Signed-off-by: Sebastian Reichel 

Reviewed-by: Pavel Machek 
-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) 
http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.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] usb: dwc3: debugfs: add snapshot to dump requests trbs events

2014-04-29 Thread Zhuang Jin Can
On Mon, Apr 28, 2014 at 10:55:36AM -0500, Felipe Balbi wrote:
> On Mon, Apr 28, 2014 at 04:49:23PM -0400, Zhuang Jin Can wrote:
> > Adds a debugfs file "snapshot" to dump dwc3 requests, trbs and events.
> 
> you need to explain what are you trying to provide to our users here.
> 
> What "problem" are you trying to solve ?
> 
The interface enables users to easily peek into requests, trbs and
events to know the current transfer state of each request.
If an transfer is stuck, user can use the interface to check why it's
stuck (e.g. Is it because a gadget doesn't queued the request? Or it's
queued but it's not primed to the controller? Or It's primed to the
controller but the TRBs and events indicate the transfer never completes?).
User can immediately narrow down the issue without enabling verbose log or
reproduce the issue again. It's helpful when we need to deal with some
hard-to-reproduce bugs or timing sensitive bugs can't be reproduced with
verbose log enabled.

> > As ep0 requests are more complex than others. It's not included in this
> > patch.
> 
> For ep0, you could at least print the endpoint phase we are currently
> in and if we have requests in flight or not.
> 
Agree. Will add it in [PATCH v2].

> > Signed-off-by: Zhuang Jin Can 
> > ---
> >  drivers/usb/dwc3/core.h|4 +
> >  drivers/usb/dwc3/debugfs.c |  192 
> > 
> >  drivers/usb/dwc3/gadget.h  |   41 ++
> >  3 files changed, 237 insertions(+)
> > 
> > diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
> > index 57332e3..9d04ddd 100644
> > --- a/drivers/usb/dwc3/core.h
> > +++ b/drivers/usb/dwc3/core.h
> > @@ -849,6 +849,10 @@ struct dwc3_event_devt {
> > u32 type:4;
> > u32 reserved15_12:4;
> > u32 event_info:9;
> > +
> > +#define DEVT_EVTINFO_SUPERSPEED(1 << 4)
> > +#define DEVT_EVTINFO_HIRD(n)   (((n) & (0xf << 5)) >> 5)
> > +
> > u32 reserved31_25:7;
> >  } __packed;
> >  
> > diff --git a/drivers/usb/dwc3/debugfs.c b/drivers/usb/dwc3/debugfs.c
> > index 9ac37fe..078d147 100644
> > --- a/drivers/usb/dwc3/debugfs.c
> > +++ b/drivers/usb/dwc3/debugfs.c
> > @@ -618,6 +618,191 @@ static const struct file_operations 
> > dwc3_link_state_fops = {
> > .release= single_release,
> >  };
> >  
> > +static void dwc3_dump_requests(struct seq_file *s, struct list_head *head,
> > +   const char *list_name)
> > +{
> > +   struct dwc3_request *req;
> > +
> > +   if (list_empty(head)) {
> > +   seq_printf(s, "list %s is empty\n", list_name);
> > +   return;
> > +   }
> > +
> > +   seq_printf(s, "list %s:\n", list_name);
> > +   list_for_each_entry(req, head, list) {
> > +   struct usb_request *request = &req->request;
> > +
> > +   seq_printf(s, "usb_request@0x%p: buf@0x%p(dma@0x%pad), 
> > len=%d\n",
> > +   request, request->buf, &request->dma,
> > +   request->length);
> > +
> > +   if (req->queued)
> > +   seq_printf(s, "\tstatus=%d: actual=%d; start_slot=%u: 
> > trb@0x%p(dma@0x%pad)\n",
> > +   request->status, request->actual,
> > +   req->start_slot, req->trb,
> > +   &req->trb_dma);
> > +   }
> > +}
> > +
> > +static void dwc3_dump_trbs(struct seq_file *s, struct dwc3_ep *dep)
> > +{
> > +   struct dwc3_trb *trb;
> > +   int i;
> > +
> > +   seq_printf(s, "busy_slot = %u, free_slot = %u\n",
> > +   dep->busy_slot & DWC3_TRB_MASK,
> > +   dep->free_slot & DWC3_TRB_MASK);
> > +
> > +   for (i = 0; i < DWC3_TRB_NUM; i++) {
> > +   trb = &dep->trb_pool[i];
> > +   if (i == (dep->busy_slot & DWC3_TRB_MASK)) {
> 
> I really dislike these Yoda Conditionals. Fix this up.
> 
Agree. Will fix it in [PATCH v2].

> > +   seq_puts(s, "busy_slot--|\n");
> > +   seq_puts(s, "   \\\n");
> > +   }
> > +   if (i == (dep->free_slot & DWC3_TRB_MASK)) {
> > +   seq_puts(s, "free_slot--|\n");
> > +   seq_puts(s, "   \\\n");
> > +   }
> > +   seq_printf(s, "trb[%02d](dma@0x%pad): %08x(bpl), %08x(bph), 
> > %08x(size), %08x(ctrl)\n",
> 
> I'm not sure you need to print out the TRB address. bpl, bph, size and
> ctrl are desired though.
> 
printing out the TRB DMA address helps user to locate the start TRB of a
request. I admit that we can achive the same purose using the "start_slot"
of the request. I'll remove it in [PATCH v2].

> > +   i, &dep->trb_pool_dma + i * sizeof(*trb),
> > +   trb->bpl, trb->bph, trb->size, trb->ctrl);
> 
> this will be pretty difficult to parse by a human. I would rather see
> you creating one directory per TRB (and also one directory per
> endpoint) which holds the details for that entity, so that it looks
> like:
> 
> 

Re: [PATCH] ARM: OMAP5: Switch to THUMB mode if needed on secondary CPU

2014-04-29 Thread Dave Martin
On Mon, Apr 28, 2014 at 06:21:49PM +0100, Joel Fernandes wrote:
> On 04/28/2014 12:20 PM, Joel Fernandes wrote:
> > On 04/28/2014 11:43 AM, Dave Martin wrote:
> >> On Tue, Apr 22, 2014 at 01:31:46PM -0500, Joel Fernandes wrote:
> >>> On my DRA7 system, when the kernel is built in THUMB mode, the secondary 
> >>> CPU
> >>> (Cortex A15) fails to come up causing SMP boot on second CPU to timeout. 
> >>> This
> >>> seems to be because the CPU is in ARM mode once the ROM hands over 
> >>> control to
> >>> the kernel.  Switch to THUMB mode if required once the kernel is control 
> >>> of
> >>> secondary CPU. On OMAP4 on the other hand, it appears to be in THUMB mode 
> >>> on
> >>> entry so this is not required and SMP boot works as is.
> >>>
> >>> Cc: Santosh Shilimkar 
> >>> Cc: Russell King 
> >>> Cc: Nishanth Menon 
> >>> Cc: Tony Lindgren 
> >>> Signed-off-by: Joel Fernandes 
> >>> ---
> >>>  arch/arm/mach-omap2/omap-headsmp.S |8 ++--
> >>>  1 file changed, 6 insertions(+), 2 deletions(-)
> >>>
> >>> diff --git a/arch/arm/mach-omap2/omap-headsmp.S 
> >>> b/arch/arm/mach-omap2/omap-headsmp.S
> >>> index 75e9295..1809dce 100644
> >>> --- a/arch/arm/mach-omap2/omap-headsmp.S
> >>> +++ b/arch/arm/mach-omap2/omap-headsmp.S
> >>> @@ -1,7 +1,7 @@
> >>>  /*
> >>>   * Secondary CPU startup routine source file.
> >>>   *
> >>> - * Copyright (C) 2009 Texas Instruments, Inc.
> >>> + * Copyright (C) 2014 Texas Instruments, Inc.
> >>>   *
> >>>   * Author:
> >>>   *  Santosh Shilimkar 
> >>> @@ -28,9 +28,13 @@
> >>>   * code.  This routine also provides a holding flag into which
> >>>   * secondary core is held until we're ready for it to initialise.
> >>>   * The primary core will update this flag using a hardware
> >>> -+ * register AuxCoreBoot0.
> >>> + * register AuxCoreBoot0.
> >>>   */
> >>>  ENTRY(omap5_secondary_startup)
> >>
> >> Are you sure this problem is not caused by the missing ENDPROC() for
> >> omap5_secondary_startup?
> >>
> >> You have END() instead (which may have been accidental).
> >>
> >> Without ENDPROC(), the symbol is not marked as a function and so
> >> the Thumb bit won't be set when taking a pointer -- so the kernel
> >> is actually telling the firmware to enter in ARM state.
> >>
> >>
> >> Try changing END() to ENDPROC() without this patch, and see if it
> >> makes a difference.
> >>
> >> If it still doesn't work, then the firmware either doesn't support
> >> entering in ARM, or is buggy.
> > 
> > Thanks for the suggestion. I'm guessing what you mean is with ENDPROC,
> > interworking code uses bx instead of bl to set thumb mode.
> > 
> > But ROM/firmware doesn't have access to symbol table, how would it know
> > the type of the symbol to be ARM or THUMB before it branches?
> > 
> Sorry what I meant is, say its of Type function. What tells the firmware
> to switch to THUMB?
> 
> What's typically done is a boot address register is written by the
> kernel, and the firmware jumps to it after WFE.

Using ENTRY(x) ... ENDPROC(x) causes the symbol seen by the linker
for x to have the Thumb bit set if the code is Thumb.

This means that any reference the linker fixes up for that symbol
will have the Thumb bit set appropriately.  This applies to any kind
of reference, so code in another file that takes the address of the
symbol and then passes that address to the firmware should result in the
firmware getting an address with the Thumb bit.

>From the firmware's point of view it just gets a raw address, but
the Thumb bit will now be set.  The firmware still needs to handle
this correctly when jumping, but from the look of the code this may
already work on omap3/4.  It would be interesting to know whether it
works on omap5.

Cheers
---Dave
--
To unsubscribe from this list: send the line "unsubscribe 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/5] drivers: w1: omap_hdq: cleanup and bug fixes.

2014-04-29 Thread sourav

Hi Paul,

On Tuesday 29 April 2014 12:49 AM, Paul Walmsley wrote:

On Wed, 16 Apr 2014, Sourav Poddar wrote:


The patch adds the following to the omap hdq driver.
1. HDQ Device reset call in probe.
2. Enabling '1 wire mode' and checking for presence pulse bit.
3. Proper disabling and enabling of interrupts during read path.
4. Add re-initialization code during SKIP ROM command execution.
5. Miscellaneous cleanup(formatting, return error checks).

Signed-off-by: Sourav Poddar
---
  drivers/w1/masters/omap_hdq.c |   85 -
  1 file changed, 68 insertions(+), 17 deletions(-)

diff --git a/drivers/w1/masters/omap_hdq.c b/drivers/w1/masters/omap_hdq.c
index 9900e8e..0a7bf7f 100644
--- a/drivers/w1/masters/omap_hdq.c
+++ b/drivers/w1/masters/omap_hdq.c

...


@@ -115,6 +116,15 @@ static inline u8 hdq_reg_merge(struct hdq_data *hdq_data, 
u32 offset,
return new_val;
  }

+static void hdq_disable_interrupt(struct hdq_data *hdq_data, u32 offset,
+ u8 mask)
+{
+   u32 ie;
+
+   ie = readl(hdq_data->hdq_base + offset);
+   writel(ie&  mask, hdq_data->hdq_base + offset);
+}
+

Does this function really need to take offset and mask arguments?  Won't
they always be constant, and therefore, no need to pass them?


Yes, thats correct, they are always constant and can be used directly 
inside the

api. I will fix this in my next version.



- Paul


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


Re: [PATCH v2] ARM: dts: am33xx: Move the cppi41dma node so it's probed early

2014-04-29 Thread Sebastian Andrzej Siewior
On 04/29/2014 10:27 AM, George Cherian wrote:
> Hi Sebastian,

Hi George,

> On 4/29/2014 1:36 PM, Sebastian Andrzej Siewior wrote:
>> On 04/29/2014 09:58 AM, George Cherian wrote:
> This is easily fixed by moving the node at the beggining of the child
> list,
> so it's probed first.
>>> This will give issues on module removal.
>>> Since we use device_for_each_child in remove patch, it will try to
>>> remove cppi dma controller, while the channel
>>> is still in use by musb node.
>> Isn't this currently disabled because it blew up in the phy code?
> Yes. So how if the dt  looks like this

No. I remember we talked about this and we decided not to duct tape the
bug by moving the nodes around. Instead we wanted to disable the child
removal part (one tiny module that can't be removed) until the PHY code
does no longer blow up.
If the same case is for the DMA driver then it should be fixed, too.
The order of the nodes in .dts should not crash the kernel under any
circumstances. If a different node order accelerates the probing then
fine. But a crash is a no no.

Sebastian

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


Re: [patch V2 0/6] dma: edma: Provide granular residue accounting

2014-04-29 Thread Vinod Koul
On Mon, Apr 28, 2014 at 03:47:37PM -0500, Joel Fernandes wrote:
> On 04/28/2014 05:49 AM, Thomas Gleixner wrote:
> > A simpler version to provide granular residue accounting and readout
> > for EDMA.
> > 
> > Delta to V1:
> > 
> >   - Removed the double read of the address in PaRAM
> > 
> >   - Simplified the stats update in the interrupt callback for
> > intermediate transfers
> > 
> > Thanks,
> > 
> > tglx
> > 
> 
> Thanks for the series. I went over all the patches and it looks great.
> Acked-by: Joel Fernandes 
> 
> The patches however didn't apply and had some conflicts with my dma
> memcpy series and peter's cyclic series so I resolved conflicts and
> created a single branch based on Vinod's slave-dma next branch (commit
> 406efb1a745c1dc512dc9c3c859e302e7b7f907e) that Vinod can pull.
> 
> I also renamed subject line of patches in Thomas's series to be
> "dmaengine: edma" and documented some of the variables used.
> 
> https://github.com/joelagnel/linux-kernel.git (for-vinod branch)
> 
> Vinod, could you pull if it looks OK?

The patches look good.

But,
commit 770f0f3a20188b7e17db2790803b9da925dc0b94
Author: Thomas Gleixner 
Date:   Mon Apr 28 10:49:43 2014 +

dmaengine: edma: Make reading the position of active channels work

As Joel pointed out, edma_read_position() uses memcpy_fromio() to read
the parameter ram. That's not synchronized with the internal update as
it does a byte by byte copy. We need to do a 32bit read to get a
consistent value.

Further reading destination and source is pointless. In DEV_TO_MEM
transfers we are only interested in the destination, in MEM_TO_DEV we
care about the source. In MEM_TO_MEM it really does not matter which
one you read.

Simple solution: Remove the pointers, select dest/source via a bool
and return the read value.

Remove the export of this function while at it. The only potential
user is the dmaengine and that's always builtin.

Signed-off-by: Thomas Gleixner 

You s-o-b missing in this one, also ack from Sekhar missing. Do you want to redo
this or prefer me to cherry-pick patches adding acks and your s-o-b, since I
already fetched your branch

Either way is fine with me...

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


Re: [PATCH 3/5] arm: omap2: skip device build from platform code for dt.

2014-04-29 Thread sourav

On Tuesday 29 April 2014 12:09 AM, Felipe Balbi wrote:

On Mon, Apr 28, 2014 at 06:28:45PM +, Paul Walmsley wrote:

On Wed, 16 Apr 2014, Sourav Poddar wrote:


For SOCs with dt enabled, device should be build through device tree.
Prevent device build call from platform code, if device tree is
enabled.

Signed-off-by: Sourav Poddar

Isn't OMAP2+ only supporting DT device enumeration now?

At least OMAP3 still isn't Dt-only.


Yes, for omap3 boards only, I have kept a #ifndef. Else we could
have remove this 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: [PATCH 5/5] arm: hwmod: am437x: Add hwmod data for hdq1w.

2014-04-29 Thread sourav

Hi Paul,

On Tuesday 29 April 2014 03:37 AM, Paul Walmsley wrote:

On Wed, 16 Apr 2014, Sourav Poddar wrote:


These adds hwmod data for hdq/1w driver.

Signed-off-by: Sourav Poddar

Is a TRM available yet for AM43x so this patch can be properly reviewed?


NO, the TRMS are not yet public.

Thanks,
Sourav


- Paul



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


[PATCHv2] arm: dts: am33xx-clock: Fix ehrpwm tbclk data.

2014-04-29 Thread Sourav Poddar
tbclk does not need to be a composite clock, we can simply
use gate clock for this purpose.

Signed-off-by: Sourav Poddar 
---
v1->v2:
change compatible string according to mainline.
 arch/arm/boot/dts/am33xx-clocks.dtsi |   30 ++
 1 file changed, 6 insertions(+), 24 deletions(-)

diff --git a/arch/arm/boot/dts/am33xx-clocks.dtsi 
b/arch/arm/boot/dts/am33xx-clocks.dtsi
index 9ccfe50..712edce 100644
--- a/arch/arm/boot/dts/am33xx-clocks.dtsi
+++ b/arch/arm/boot/dts/am33xx-clocks.dtsi
@@ -96,47 +96,29 @@
clock-div = <1>;
};
 
-   ehrpwm0_gate_tbclk: ehrpwm0_gate_tbclk {
+   ehrpwm0_tbclk: ehrpwm0_tbclk@44e10664 {
#clock-cells = <0>;
-   compatible = "ti,composite-no-wait-gate-clock";
+   compatible = "ti,gate-clock";
clocks = <&dpll_per_m2_ck>;
ti,bit-shift = <0>;
reg = <0x0664>;
};
 
-   ehrpwm0_tbclk: ehrpwm0_tbclk {
-   #clock-cells = <0>;
-   compatible = "ti,composite-clock";
-   clocks = <&ehrpwm0_gate_tbclk>;
-   };
-
-   ehrpwm1_gate_tbclk: ehrpwm1_gate_tbclk {
+   ehrpwm1_tbclk: ehrpwm1_tbclk@44e10664 {
#clock-cells = <0>;
-   compatible = "ti,composite-no-wait-gate-clock";
+   compatible = "ti,gate-clock";
clocks = <&dpll_per_m2_ck>;
ti,bit-shift = <1>;
reg = <0x0664>;
};
 
-   ehrpwm1_tbclk: ehrpwm1_tbclk {
-   #clock-cells = <0>;
-   compatible = "ti,composite-clock";
-   clocks = <&ehrpwm1_gate_tbclk>;
-   };
-
-   ehrpwm2_gate_tbclk: ehrpwm2_gate_tbclk {
+   ehrpwm2_tbclk: ehrpwm2_tbclk@44e10664 {
#clock-cells = <0>;
-   compatible = "ti,composite-no-wait-gate-clock";
+   compatible = "ti,gate-clock";
clocks = <&dpll_per_m2_ck>;
ti,bit-shift = <2>;
reg = <0x0664>;
};
-
-   ehrpwm2_tbclk: ehrpwm2_tbclk {
-   #clock-cells = <0>;
-   compatible = "ti,composite-clock";
-   clocks = <&ehrpwm2_gate_tbclk>;
-   };
 };
 &prcm_clocks {
clk_32768_ck: clk_32768_ck {
-- 
1.7.9.5

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


[PATCHv2] arm: dts: am43x-clock: add tbclk data for ehrpwm.

2014-04-29 Thread Sourav Poddar
We need "tbclk" clock data for the functioning of ehrpwm
module. Hence, populating the required clock information
in clock dts file.

Signed-off-by: Sourav Poddar 
---
v1->v2:
change compatible according to mainline.
 arch/arm/boot/dts/am43xx-clocks.dtsi |   48 ++
 drivers/clk/ti/clk-43xx.c|6 +
 2 files changed, 54 insertions(+)

diff --git a/arch/arm/boot/dts/am43xx-clocks.dtsi 
b/arch/arm/boot/dts/am43xx-clocks.dtsi
index 142009c..401 100644
--- a/arch/arm/boot/dts/am43xx-clocks.dtsi
+++ b/arch/arm/boot/dts/am43xx-clocks.dtsi
@@ -87,6 +87,54 @@
clock-mult = <1>;
clock-div = <1>;
};
+
+   ehrpwm0_tbclk: ehrpwm0_tbclk@44e10664 {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <0>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm1_tbclk: ehrpwm1_tbclk@44e10664 {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <1>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm2_tbclk: ehrpwm2_tbclk@44e10664 {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <2>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm3_tbclk: ehrpwm3_tbclk@44e10664 {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <3>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm4_tbclk: ehrpwm4_tbclk@44e10664 {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <4>;
+   reg = <0x0664>;
+   };
+
+   ehrpwm5_tbclk: ehrpwm5_tbclk@44e10664 {
+   #clock-cells = <0>;
+   compatible = "ti,gate-clock";
+   clocks = <&dpll_per_m2_ck>;
+   ti,bit-shift = <5>;
+   reg = <0x0664>;
+   };
 };
 &prcm_clocks {
clk_32768_ck: clk_32768_ck {
diff --git a/drivers/clk/ti/clk-43xx.c b/drivers/clk/ti/clk-43xx.c
index 67c8de5..527a43d 100644
--- a/drivers/clk/ti/clk-43xx.c
+++ b/drivers/clk/ti/clk-43xx.c
@@ -105,6 +105,12 @@ static struct ti_dt_clk am43xx_clks[] = {
DT_CLK(NULL, "func_12m_clk", "func_12m_clk"),
DT_CLK(NULL, "vtp_clk_div", "vtp_clk_div"),
DT_CLK(NULL, "usbphy_32khz_clkmux", "usbphy_32khz_clkmux"),
+   DT_CLK("48300200.ehrpwm", "tbclk", "ehrpwm0_tbclk"),
+   DT_CLK("48302200.ehrpwm", "tbclk", "ehrpwm1_tbclk"),
+   DT_CLK("48304200.ehrpwm", "tbclk", "ehrpwm2_tbclk"),
+   DT_CLK("48306200.ehrpwm", "tbclk", "ehrpwm3_tbclk"),
+   DT_CLK("48308200.ehrpwm", "tbclk", "ehrpwm4_tbclk"),
+   DT_CLK("4830a200.ehrpwm", "tbclk", "ehrpwm5_tbclk"),
{ .node_name = NULL },
 };
 
-- 
1.7.9.5

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


Re: [PATCH v2] ARM: dts: am33xx: Move the cppi41dma node so it's probed early

2014-04-29 Thread George Cherian

Hi Sebastian,

On 4/29/2014 1:36 PM, Sebastian Andrzej Siewior wrote:

On 04/29/2014 09:58 AM, George Cherian wrote:

This is easily fixed by moving the node at the beggining of the child
list,
so it's probed first.

This will give issues on module removal.
Since we use device_for_each_child in remove patch, it will try to
remove cppi dma controller, while the channel
is still in use by musb node.

Isn't this currently disabled because it blew up in the phy code?

Yes. So how if the dt  looks like this

usb {


usb_ctrl_mod {


};
usb0 {


};
usb0_phy {


};
usb1 {


};
usb1_phy {


};

cppi41dma {


};
};


Sebastian




--
-George

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


Re: [PATCH v2] ARM: dts: am33xx: Move the cppi41dma node so it's probed early

2014-04-29 Thread Sebastian Andrzej Siewior
On 04/29/2014 09:58 AM, George Cherian wrote:
>>> This is easily fixed by moving the node at the beggining of the child
>>> list,
>>> so it's probed first.
> This will give issues on module removal.
> Since we use device_for_each_child in remove patch, it will try to
> remove cppi dma controller, while the channel
> is still in use by musb node.

Isn't this currently disabled because it blew up in the phy code?

Sebastian

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


Re: [PATCH v2] ARM: dts: am33xx: Move the cppi41dma node so it's probed early

2014-04-29 Thread George Cherian

On 4/29/2014 11:49 AM, Yegor Yefremov wrote:

On Thu, Apr 24, 2014 at 11:11 PM, Ezequiel Garcia
 wrote:

The DMA controller is needed for the USB controller to be correctly
registered. Therefore, if the DMA node is located at the end an unecessary
probe deferral is produced systematically.

This is easily fixed by moving the node at the beggining of the child list,
so it's probed first.

This will give issues on module removal.
Since we use device_for_each_child in remove patch, it will try to 
remove cppi dma controller, while the channel

is still in use by musb node.

Signed-off-by: Ezequiel Garcia 

Tested-by: Yegor Yefremov 


--
v1->v2:
   * Added a comment to prevent a future clean-up based on the memory offset.

  arch/arm/boot/dts/am33xx.dtsi | 34 --
  1 file changed, 20 insertions(+), 14 deletions(-)

diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
index 9770e35..02e1eb6 100644
--- a/arch/arm/boot/dts/am33xx.dtsi
+++ b/arch/arm/boot/dts/am33xx.dtsi
@@ -453,6 +453,26 @@
 ti,hwmods = "usb_otg_hs";
 status = "disabled";

+   /*
+* The probe order matches the child ordering so the
+* dma-controller node must be the first one to prevent
+* spurious probe deferrals.
+*/
+   cppi41dma: dma-controller@47402000 {
+   compatible = "ti,am3359-cppi41";
+   reg =  <0x4740 0x1000
+   0x47402000 0x1000
+   0x47403000 0x1000
+   0x47404000 0x4000>;
+   reg-names = "glue", "controller", "scheduler", 
"queuemgr";
+   interrupts = <17>;
+   interrupt-names = "glue";
+   #dma-cells = <2>;
+   #dma-channels = <30>;
+   #dma-requests = <256>;
+   status = "disabled";
+   };
+
 usb_ctrl_mod: control@44e10620 {
 compatible = "ti,am335x-usb-ctrl-module";
 reg = <0x44e10620 0x10
@@ -556,20 +576,6 @@
 "tx14", "tx15";
 };

-   cppi41dma: dma-controller@47402000 {
-   compatible = "ti,am3359-cppi41";
-   reg =  <0x4740 0x1000
-   0x47402000 0x1000
-   0x47403000 0x1000
-   0x47404000 0x4000>;
-   reg-names = "glue", "controller", "scheduler", 
"queuemgr";
-   interrupts = <17>;
-   interrupt-names = "glue";
-   #dma-cells = <2>;
-   #dma-channels = <30>;
-   #dma-requests = <256>;
-   status = "disabled";
-   };
 };

 epwmss0: epwmss@4830 {
--
1.9.1

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

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



--
-George

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


Re: [PATCH v2 5/7] phy: omap-usb2: Add clock names to Documentation binding

2014-04-29 Thread Roger Quadros
Hi Sergei,

On 04/28/2014 08:23 PM, Sergei Shtylyov wrote:
> Hello.
> 
> On 04/28/2014 06:01 PM, Roger Quadros wrote:
> 
>> Add "wkupclk" and "refclk" information to DT binding information.
> 
>> Signed-off-by: Roger Quadros 
>> ---
>>   Documentation/devicetree/bindings/phy/ti-phy.txt | 7 +++
>>   1 file changed, 7 insertions(+)
> 
>> diff --git a/Documentation/devicetree/bindings/phy/ti-phy.txt 
>> b/Documentation/devicetree/bindings/phy/ti-phy.txt
>> index 788fb0f..9ce458f 100644
>> --- a/Documentation/devicetree/bindings/phy/ti-phy.txt
>> +++ b/Documentation/devicetree/bindings/phy/ti-phy.txt
>> @@ -32,6 +32,11 @@ Required properties:
>>- reg : Address and length of the register set for the device.
>>- #phy-cells: determine the number of cells that should be given in the
>>  phandle while referencing this phy.
>> + - clocks: a list of phandles and clock-specifier pairs, one for each entry 
>> in
>> +   clock-names.
> 
>I thought clock specifier includes phandle. Anyway, this description 
> doesn't seem to match your example...

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/devicetree/bindings/clock/clock-bindings.txt#n64

The example was taken from real world where the clock doesn't need specifier.
Examples can always be a subset of supported bindings.

cheers,
-roger

> 
>> + - clock-names: should include:
>> +   * "wkupclk" - wakeup clock.
>> +   * "refclk" - reference clock (optional).
>>
>>   Optional properties:
>>- ctrl-module : phandle of the control module used by PHY driver to power 
>> on
>> @@ -44,6 +49,8 @@ usb2phy@4a0ad080 {
>>   reg = <0x4a0ad080 0x58>;
>>   ctrl-module = <&omap_control_usb>;
>>   #phy-cells = <0>;
>> +clocks = <&usb_phy_cm_clk32k>, <&usb_otg_ss_refclk960m>;
>> +clock-names = "wkupclk", "refclk";
>>   };
> 
> WBR, Sergei
> 

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


Re: [PATCH v2 3/7] phy: omap-usb2: Use generic clock names "wkupclk" and "refclk"

2014-04-29 Thread Roger Quadros
+Nishant

Hi,

On 04/28/2014 07:03 PM, Felipe Balbi wrote:
> Hi,
> 
> On Mon, Apr 28, 2014 at 05:01:23PM +0300, Roger Quadros wrote:
>> As clocks might be named differently on multiple platforms, use a generic
>> name in the driver and allow device tree node to specify the platform
>> specific clock name.
>>
>> Signed-off-by: Roger Quadros 
>> ---
>>  drivers/phy/phy-omap-usb2.c | 8 
>>  1 file changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/phy/phy-omap-usb2.c b/drivers/phy/phy-omap-usb2.c
>> index a2205a8..fb5e515 100644
>> --- a/drivers/phy/phy-omap-usb2.c
>> +++ b/drivers/phy/phy-omap-usb2.c
>> @@ -275,16 +275,16 @@ static int omap_usb2_probe(struct platform_device 
>> *pdev)
>>  if (IS_ERR(phy_provider))
>>  return PTR_ERR(phy_provider);
>>  
>> -phy->wkupclk = devm_clk_get(phy->dev, "usb_phy_cm_clk32k");
>> +phy->wkupclk = devm_clk_get(phy->dev, "wkupclk");
> 
> doesn't this patch cause a regression ? I mean, you're changing the
> clock name before fixing DTS. Also, that DTS has been in a major version
> of the kernel, so we need to maintain compatibility with it. How about:

I'm changing the DTS in Patch 4, but I prefer to do it in this patch to prevent 
synchronization
issues in -next.

About backward compatibility, I agree with you but at the same time I don't 
think anyone using TI
SoCs burns the DTB to ROM and needs backward compatibility. We supply our 
BSPs/SDKs with the updated DTBs.
Do you feel strict backward compatibility is worth the effort for TI specific 
blocks?

> 
>   phy->wkupclk = devm_clk_get(phy->dev, "wkupclk");
>   if (IS_ERR(phy->wkupclk)) {
>   dev_err(&pdev->dev, "unable to get wkupclk, trying old name\n");
>   phy->wkupclk = devm_clk_get(phy->dev, "usb_phy_cm_clk32k");
>   if (IS_ERR(phy->wkupclk)) {
>   dev_err(&pdev->dev, "unable to get 
> usb_phy_cm_clk32k\n");
>   return PTR_ERR(phy->wkupclk);
>   } else {
>   dev_warn(&pdev->dev, "found usb_phy_cm_clk32k, please 
> fix your DTS\n");
>   }
>   }
> 
> a bit ugly, but at least we don't cause any regressions. Likewise for
> other clocks.
> 

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