Re: [PATCH v1 1/2] staging: Introduce NVIDIA Tegra20 video decoder driver

2017-09-25 Thread Stephen Warren
On 09/25/2017 05:45 PM, Dmitry Osipenko wrote:
> On 26.09.2017 02:01, Stephen Warren wrote:
>> On 09/25/2017 04:15 PM, Dmitry Osipenko wrote:
>>> Video decoder, found on NVIDIA Tegra20 SoC, supports a standard set of
>>> video formats like H.264 / MPEG-4 / WMV / VC1. Currently driver supports
>>> decoding of CAVLC H.264 only.
>>
>> Note: I don't know anything much about video decoding on Tegra (just NV 
>> desktop
>> GPUs, and that was a while ago), but I had a couple small comments on the DT
>> binding:
>>
>>> diff --git
>>> a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-vde.txt
>>> b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-vde.txt
>>
>>> +NVIDIA Tegra Video Decoder Engine
>>> +
>>> +Required properties:
>>> +- compatible : "nvidia,tegra20-vde"
>>> +- reg : Must contain 2 register ranges: registers and IRAM area.
>>> +- reg-names : Must include the following entries:
>>> +  - regs
>>> +  - iram
>>
>> I think the IRAM region needs more explanation: What is the region used for 
>> and
>> by what? Can it be moved, and if so does the move need to be co-ordinated 
>> with
>> any other piece of SW?
> 
> IRAM region is used by Video Decoder HW for internal use and some of decoding
> parameters are supplied via IRAM, like frames order list. AFAIK IRAM addresses
> are hardwired in HW and aren't movable, it is not 100% but I'm pretty sure.
> Should it be explained in the binding?

I think this should be briefly mentioned, yes. Otherwise at least people
who don't know the VDE HW well (like me) will wonder why on earth VDE
interacts with IRAM at all. I would have assumed all parameters were
supplied via registers or via descriptors in DRAM.

Thanks.
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v1 1/2] staging: Introduce NVIDIA Tegra20 video decoder driver

2017-09-25 Thread Stephen Warren

On 09/25/2017 04:15 PM, Dmitry Osipenko wrote:

Video decoder, found on NVIDIA Tegra20 SoC, supports a standard set of
video formats like H.264 / MPEG-4 / WMV / VC1. Currently driver supports
decoding of CAVLC H.264 only.


Note: I don't know anything much about video decoding on Tegra (just NV 
desktop GPUs, and that was a while ago), but I had a couple small 
comments on the DT binding:



diff --git a/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-vde.txt 
b/Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-vde.txt



+NVIDIA Tegra Video Decoder Engine
+
+Required properties:
+- compatible : "nvidia,tegra20-vde"
+- reg : Must contain 2 register ranges: registers and IRAM area.
+- reg-names : Must include the following entries:
+  - regs
+  - iram


I think the IRAM region needs more explanation: What is the region used 
for and by what? Can it be moved, and if so does the move need to be 
co-ordinated with any other piece of SW?



+- clocks : Must contain one entry, for the module clock.
+  See ../clocks/clock-bindings.txt for details.
+- resets : Must contain an entry for each entry in reset-names.
+  See ../reset/reset.txt for details.
+- reset-names : Must include the following entries:
+  - vde


Let's require a clock-names property too.
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: outreachy

2017-03-09 Thread Stephen Warren

On 03/09/2017 01:51 PM, Scott Branden wrote:

Hi Julia,

On 17-03-09 12:36 PM, Julia Lawall wrote:

Hello,

I discussed the issue of outreachy patches for bcm with Greg, and we are
not convinced that not having the patches CCd to you is such a good idea.
While we don't want to spam you with noise, some of the applicants are
starting to make more significant changes that it could be useful for you
to be aware of.

Could we try a compromise where you are not CCd on whitespace patches,
but
you are CCd on patches that actually modify the code?

>

All I'm asking is you work through your outreachy patches internal first
to get rid of the most basic mistakes and email traffic it is geerating.
 Once that learning process is through then they can be sent out like
any other patches to the kernel mailing lists and maintainers.


+1 from me too; I find these patches rather high volume and had to add a 
filter to keep them out of my primary inbox. I don't know what process 
is in place, but I would suggest:


1) Senders send everything to the outreachy list, where they are 
reviewed for basic issues, like learning to use git send-email, learning 
checkpatch, etc. In this case, only send the patch to the outreachy 
mailing list and nowhere else.


2) Once a patch has passed review there, then send the patch to the 
regular kernel mailing list just like any other patch; follow the output 
of get_maintainers.pl.


We have something like (1) inside NVIDIA for new contributors and 
pre-upstreaming IP review. It helps all the newcomers, but without 
requiring anyone involved in (2) to change behaviour.


The process I suggest is very much inline with the typically suggested 
"asking questions" process: (1) read docs yourself (2) ask local 
contacts for help, (3) start asking wider audiences for help.

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v3 4/4] dt: paz00: define nvec as child of i2c bus

2015-07-20 Thread Stephen Warren

On 07/20/2015 02:35 PM, Andrey Danin wrote:

NVEC driver was reimplemented to use tegra i2c. Use common i2c bindings
for NVEC node.



diff --git a/arch/arm/boot/dts/tegra20-paz00.dts 
b/arch/arm/boot/dts/tegra20-paz00.dts



+   nvec: nvec@45 {
+   compatible = "nvidia,nvec-slave";
+   reg = <0x45>;


I think you need to or in I2C_OWN_SLAVE_ADDRESS from 
 here?

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v3 2/4] staging/nvec: reimplement on top of tegra i2c driver

2015-07-20 Thread Stephen Warren

On 07/20/2015 02:35 PM, Andrey Danin wrote:

Remove i2c controller related code and use tegra i2c driver in slave mode.
Update nvec documentation.



diff --git a/Documentation/devicetree/bindings/nvec/nvidia,nvec.txt 
b/Documentation/devicetree/bindings/nvec/nvidia,nvec.txt


I would expect this patch to add a new binding file 
nvidia,nvec-slave.txt so that the filename continues to match the 
compatible value it documents. This patch introduces a new binding for 
the NVEC slave as opposed to modifying the existing binding.



+- compatible : should be "nvidia,nvec-slave".
+- reg: the i2c address of the slave controller


I think "the I2C address to respond to" would be clearer? You might also 
mention that this needs to include flags from .

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] Warning that occured while compiling the nvec in 3.19.0-rc5+ is fixed

2015-02-02 Thread Stephen Warren

 On Sat, Jan 31, 2015 at 05:24:42PM +0530, varsharamt wrote:

The task was to fix  a warning which was shown while compiling a driver
called NVEC. I wrote a brief description about how to enable support for
a nVidya complaint embedded controller.


Please note that NVIDIA is spelled/capitalized as NVIDIA.
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v4] Move DWC2 driver out of staging

2014-02-03 Thread Stephen Warren
On 02/03/2014 01:51 PM, Paul Zimmerman wrote:
...
> Stephen, Andre,
> 
> Can you test the attached patch, please? It works for my on the Synopsys
> PCIe-based FPGA board. Unfortunately my RPI board is currently broken,
> so I am unable to test it there to verify it actually fixes the problem
> you are seeing.
> 
> The dwc2 driver doesn't use the usb_device toggle bits anywhere else,
> so the quickest fix is to just remove the problematic code from
> _dwc2_hcd_endpoint_reset().
> 
> If you give me your tested-bys, I will submit this as a proper patch
> to Greg.

I've tested a basically equivalent patch (link below), so I feel
comfortable saying:

Tested-by: Stephen Warren 

https://github.com/swarren/linux-rpi/commit/f7b9c896153cc0501acecb58053db978ec00a5bf

> @@ -2579,9 +2579,11 @@ static void _dwc2_hcd_endpoint_reset(struct usb_hcd 
> *hcd,
> 
>   spin_lock_irqsave(&hsotg->lock, flags);
> 
> +#if 0
>   usb_settoggle(udev, epnum, is_out, 0);
>   if (is_control)
>   usb_settoggle(udev, epnum, !is_out, 0);
> +#endif
>   dwc2_hcd_endpoint_reset(hsotg, ep);
> 
>   spin_unlock_irqrestore(&hsotg->lock, flags);

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v4] Move DWC2 driver out of staging

2014-02-01 Thread Stephen Warren
On 02/01/2014 03:00 AM, Andre Heider wrote:
> On Fri, Jan 31, 2014 at 11:48:37PM -0700, Stephen Warren wrote:
>> On 01/31/2014 11:12 AM, Andre Heider wrote:
>>> On Mon, Jan 13, 2014 at 01:50:09PM -0800, Paul Zimmerman wrote:
>>>> The DWC2 driver should now be in good enough shape to move out of
>>>> staging. I have stress tested it overnight on RPI running mass
>>>> storage and Ethernet transfers in parallel, and for several days
>>>> on our proprietary PCI-based platform.
>> ...
>>> this looks just fine, but for whatever reason it breaks sdhci on my rpi.
>>> With today's Linus' master the dwc2 controller seems to initialize fine,
>>> but I get this upon boot:
>>>
>>> [1.783316] sdhci-bcm2835 2030.sdhci: sdhci_pltfm_init failed -12
>>> [1.794820] sdhci-bcm2835: probe of 2030.sdhci failed with error -12
...
>> This is due to the following code:
...
>> What ends up happening, simply due to memory allocation order, is that
>> the memory writes inside usb_settoggle() end up setting the SDHCI struct
>> platform_device's num_resources to 0, so that it's call to
>> platform_get_resource() fails.
>>
>> With the DWC2 move patch reverted, some other random piece of memory is
>> being corrupted, which just happens not to cause any visible problem.
>> Likely it's some other struct platform_device that's already had its
>> resources read by the time DWC2 probes and corrupts them.
>>
>> (Yes, this was hard to find!)
> 
> Nice work, but how did you pinpoint this? Am I missing some option/tool
> or did I just not stare for long enough?

Well, there was a clear place where an issue was present; the resource
lookup in sdhci_pltfm_init() was failing, so I put a bunch of printfs
into that function to dump out the data platform_get_resource() used.
This clearly pointed at num_resources==0 being the problem. Next, I
dumped the same data from the code in drivers/of that sets it up, and it
was OK there, so I knew it was getting over-written somewhere. I then
basically added hundreds of calls to the same data dumping function
throughout kernel functions like really_probe() to track down the
location of the problem. Luckily, the behaviour was stable, so I wasn't
chasing a race/timing condition. Eventually I narrowed the window to the
few lines of code I mentioned in _dwc2_hcd_endpoint_reset(). It would
have been much harder if it was e.g. the USB HW DMAing to memory that
caused the corruption, so I was lucky:-)
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v4] Move DWC2 driver out of staging

2014-01-31 Thread Stephen Warren
On 01/31/2014 11:12 AM, Andre Heider wrote:
> On Mon, Jan 13, 2014 at 01:50:09PM -0800, Paul Zimmerman wrote:
>> The DWC2 driver should now be in good enough shape to move out of
>> staging. I have stress tested it overnight on RPI running mass
>> storage and Ethernet transfers in parallel, and for several days
>> on our proprietary PCI-based platform.
...
> this looks just fine, but for whatever reason it breaks sdhci on my rpi.
> With today's Linus' master the dwc2 controller seems to initialize fine,
> but I get this upon boot:
> 
> [1.783316] sdhci-bcm2835 2030.sdhci: sdhci_pltfm_init failed -12
> [1.794820] sdhci-bcm2835: probe of 2030.sdhci failed with error -12
>
> That is:
> 
>   struct sdhci_host *sdhci_pltfm_init(struct platform_device 
> *pdev,
>   const struct 
> sdhci_pltfm_data *pdata,
>   size_t priv_size)
>   {
>   ...
> 
>   iomem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>   if (!iomem) {
>   ret = -ENOMEM;
>   goto err;
>   }

This is due to the following code:

static void _dwc2_hcd_endpoint_reset(struct usb_hcd *hcd,
 struct usb_host_endpoint *ep)
{
struct dwc2_hsotg *hsotg = dwc2_hcd_to_hsotg(hcd);
...
struct usb_device *udev;
...
udev = to_usb_device(hsotg->dev);
...
usb_settoggle(udev, epnum, is_out, 0);
if (is_control)
usb_settoggle(udev, epnum, !is_out, 0);

The problem is that hsotg->dev is assigned as follows:

static int dwc2_driver_probe(struct platform_device *dev)
...
hsotg = devm_kzalloc(&dev->dev, sizeof(*hsotg), GFP_KERNEL);
...
hsotg->dev = &dev->dev;

As such, it's not legal to call to_usb_device() on it.

What ends up happening, simply due to memory allocation order, is that
the memory writes inside usb_settoggle() end up setting the SDHCI struct
platform_device's num_resources to 0, so that it's call to
platform_get_resource() fails.

With the DWC2 move patch reverted, some other random piece of memory is
being corrupted, which just happens not to cause any visible problem.
Likely it's some other struct platform_device that's already had its
resources read by the time DWC2 probes and corrupts them.

(Yes, this was hard to find!)

I honestly can't see how to solve this myself, since the whole DWC2
driver doesn't seem to have a struct usb_device * hanging around that we
can stash somewhere for it to look up later. Perhaps someone more
familiar with the USB stack can help with that.
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v4] Move DWC2 driver out of staging

2014-01-31 Thread Stephen Warren
On 01/31/2014 12:37 PM, Paul Zimmerman wrote:
>> From: Andre Heider [mailto:a.hei...@gmail.com]
>> Sent: Friday, January 31, 2014 11:04 AM
>> On Fri, Jan 31, 2014 at 12:15:26PM -0600, Felipe Balbi wrote:
>>> On Fri, Jan 31, 2014 at 07:12:36PM +0100, Andre Heider wrote:
 On Mon, Jan 13, 2014 at 01:50:09PM -0800, Paul Zimmerman wrote:
> The DWC2 driver should now be in good enough shape to move out of
> staging. I have stress tested it overnight on RPI running mass
> storage and Ethernet transfers in parallel, and for several days
> on our proprietary PCI-based platform.
...
 this looks just fine, but for whatever reason it breaks sdhci on my rpi.
 With today's Linus' master the dwc2 controller seems to initialize fine,
 but I get this upon boot:

 [1.783316] sdhci-bcm2835 2030.sdhci: sdhci_pltfm_init failed -12
 [1.794820] sdhci-bcm2835: probe of 2030.sdhci failed with error -12
...
>> This silly move doesn't trigger the sdhci ENOMEM:
>>
>> diff --git a/arch/arm/boot/dts/bcm2835.dtsi b/arch/arm/boot/dts/bcm2835.dtsi
>> index b021c96..f739b80 100644
>> --- a/arch/arm/boot/dts/bcm2835.dtsi
>> +++ b/arch/arm/boot/dts/bcm2835.dtsi
>> @@ -100,6 +100,12 @@
>>  status = "disabled";
>>  };
>>
>> +usb {
>> +compatible = "brcm,bcm2835-usb";
>> +reg = <0x7e98 0x1>;
>> +interrupts = <1 9>;
>> +};
>> +
>>  sdhci: sdhci {
>>  compatible = "brcm,bcm2835-sdhci";
>>  reg = <0x7e30 0x100>;
>> @@ -107,12 +113,6 @@
>>  clocks = <&clk_mmc>;
>>  status = "disabled";
>>  };
>> -
>> -usb {
>> -compatible = "brcm,bcm2835-usb";
>> -reg = <0x7e98 0x1>;
>> -interrupts = <1 9>;
>> -};
>>  };
>>
>>  clocks {
>>
>> Maybe there's some kind of race, or something even messing at the .dtb
>> at runtime?
> 
> Hi Greg, Steve,
> 
> Would moving a USB driver from drivers/staging/ to drivers/usb/ perhaps
> cause the initialization order to change?

Yes, certainly.

> If so, maybe that has exposed
> some pre-existing interference between sdhci and dwc2?
> 
> Could moving the resource in the .dts file as Andre has done also cause
> the initialization order to change?

Yes, certainly.

I'll try to look into this, this weekend.
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH 00/31] ARM: tegra: use common reset and DMA bindings

2013-12-11 Thread Stephen Warren
On 11/15/2013 01:53 PM, Stephen Warren wrote:
> From: Stephen Warren 
> 
> This series implements a common reset framework driver for Tegra, and
> updates all relevant Tegra drivers to use it. It also removes the custom
> DMA bindings and replaced them with the standard DMA DT bindings.
> 
> Historically, the Tegra clock driver has exported a custom API for module
> reset. This series removes that API, and transitions DT and drivers to
> the new reset framework.
> 
> The custom API used a "struct clk" to identify which module to reset, and
> consequently some DT bindings and drivers required clocks to be provided
> where they really needed just a reset identifier instead. Due to this
> known deficiency, I have always considered most Tegra bindings to be
> unstable. This series removes this excuse for instability, although I
> still consider some Tegra bindings unstable due to the need to convert to
> the common DMA bindings.
> 
> Historically, Tegra DMA channels have been represented in DT using a
> custom nvidia,dma-request-selector property. Now that standard DMA DT
> bindings exist, convert all Tegra bindings, DTs, and drivers to use the
> standard instead.
> 
> This series makes a DT-ABI-incompatible change to:
> - Require reset specifiers in DT where relevant.
> - Require standard DMA specifiers.
> - Remove clock specifiers from DT where they were only needed for reset.
> - Remove legacy DMA specifier properties.
> 
> I anticipate merging this whole series into the Tegra and arm-soc trees
> as its own branch, due to internal dependencies. This branch will be
> stable and can then be merged into any other subsystem trees should any
> conflicts arise.
> 
> This series depends on Peter's Tegra clock driver rework, available at
> git://nv-tegra.nvidia.com/user/pdeschrijver/linux tegra-clk-tegra124-0
> (or whatever version of that gets included in 3.14)

I've applied this series (and pulled in the DMA/ASoC/clk dependencies
required) to Tegra's for-3.14/dmas-resets-rework branch.
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] staging: dwc2: don't issue traffic to LS devices in FS mode

2013-12-06 Thread Stephen Warren
On 12/06/2013 03:01 PM, Paul Zimmerman wrote:
> From: Nick Hudson 
> 
> I fell over the problem reported in
> https://github.com/raspberrypi/linux/pull/390:
> 
> "Issuing low-speed packets when the root port is in full-speed mode
>  causes the root port to stop responding. Explicitly fail when
>  enqueuing URBs to a LS endpoint on a FS bus."
> 
> with my dwc2 testing in NetBSD, so I adapted the change to dwc2.

Tested-by: Stephen Warren 

The built-in USB Ethernet on my model B still works fine with this
change. A USB keyboard/mouse combo isn't reliable (it keeps dropping
out, and I need to unplug/replug to get it working again), but it never
was before. I'm also not sure if that's because of power issues or not
(I'm not using powered hub on this system).
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] staging: dwc2: disable uframe_sched on the bcm2835

2013-12-03 Thread Stephen Warren
While Paul said that .uframe_sched should be enabled on the BCM2835,
and doing so works fine with the built-in wired Ethernet, it prevents
my WiFi dongle from operating correctly. Hence, disable the option so
that everything works.

Signed-off-by: Stephen Warren 
---
 drivers/staging/dwc2/platform.c |2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/dwc2/platform.c b/drivers/staging/dwc2/platform.c
index 28a78fe..d01d0d3 100644
--- a/drivers/staging/dwc2/platform.c
+++ b/drivers/staging/dwc2/platform.c
@@ -72,7 +72,7 @@ static const struct dwc2_core_params params_bcm2835 = {
.ts_dline   = 0,
.reload_ctl = 0,
.ahbcfg = 0x10,
-   .uframe_sched   = 1,
+   .uframe_sched   = 0,
 };
 
 /**
-- 
1.7.10.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] staging: dwc2: set up all module params

2013-11-26 Thread Stephen Warren
(trimming out the devicetree list and maintainers for this discussion)

On 11/26/2013 12:52 PM, Paul Zimmerman wrote:
>> From: Stephen Warren [mailto:swar...@wwwdotorg.org]
>> Sent: Tuesday, November 26, 2013 11:43 AM
>>
>> On 11/26/2013 12:27 PM, Paul Zimmerman wrote:
>>>> From: Stephen Warren [mailto:swar...@wwwdotorg.org]
>>>> Sent: Monday, November 25, 2013 9:03 PM
>>>>
>>>> The DWC2 USB controller in the BCM2835 (Raspberry Pi) needs some non-
>>>> default parameters. Select these based on the compatible value from the
>>>> DT node. For all other HW, fall back to the default parameters currently
>>>> in use.
>>>>
>>>> The values in params_bcm2835[] were posted to the mailing list by Paul
>>>> quite some time ago. I made a couple of minor modifications since then;
>>>> to set ahbcfg instead of ahb_single, and to set uframe_sched.
>>>
>>> Hi Stephen,
>>>
>>> I don't see any code in this patch that is setting uframe_sched?
>>
>> Hmm, that's true. What value should it be set to for the BCM2835, do you
>> know? I obviously have it set to 0, which seems to work out OK...
> 
> It definitely should be enabled for the Pi, so set it to 1.

Hmm. I should have tested that patch better before I sent it...

With .uframe_sched=1, my model B's built-in Ethernet chip works fine.
I've passed many MB of data through it without issue, including pings, a
kernel source download, and package updates.

However, I just enabled .uframe_sched=1 on my model A, which has a USB
hub and USB wireless dongle attached. Now USB enumeration doesn't work,
and booting the kernel is extremely slow, with lots of USB-related
messages. I've run that board for a few days straight without issue,
with .uframe_sched=0 and periodic network use.

Does this imply that .uframe_sched=1 isn't correct for the Pi, or that
the code that flag enables has issues?

FWIW, the problematic kernel log is below. Unfortunately, I can't debug
this much since that Pi is deployed "in production" in my daughter's
room, and she's (hopefully...) asleep. I'll also be away starting
tomorrow morning until Mon evening.

> [1.907615] dwc2 2098.usb: DWC OTG Controller
> [1.915043] dwc2 2098.usb: new USB bus registered, assigned bus number 
> 1
> [1.924766] dwc2 2098.usb: irq 33, io mem 0x
> [1.932906] usb usb1: default language 0x0409
> [1.939969] usb usb1: udev 1, busnum 1, minor = 0
> [1.947325] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
> [1.956906] usb usb1: New USB device strings: Mfr=3, Product=2, 
> SerialNumber=1
> [1.966981] usb usb1: Product: DWC OTG Controller
> [1.974570] usb usb1: Manufacturer: Linux 3.13.0-rc1-next-20131125+ 
> dwc2_hsotg
> [1.984841] usb usb1: SerialNumber: 2098.usb
> [1.993202] usb usb1: usb_probe_device
> [2.66] usb usb1: configuration #1 chosen from 1 choice
> [2.008968] usb usb1: adding 1-0:1.0 (config #1, interface 0)
> [2.018227] hub 1-0:1.0: usb_probe_interface
> [2.025763] hub 1-0:1.0: usb_probe_interface - got id
> [2.033990] hub 1-0:1.0: USB hub found
> [2.040891] hub 1-0:1.0: 1 port detected
> [2.047796] hub 1-0:1.0: standalone hub
> [2.054580] hub 1-0:1.0: ganged power switching
> [2.061983] hub 1-0:1.0: individual port over-current protection
> [2.070833] hub 1-0:1.0: Single TT
> [2.076944] hub 1-0:1.0: TT requires at most 8 FS bit times (666 ns)
> [2.086102] hub 1-0:1.0: power on to power good time: 2ms
> [2.094549] hub 1-0:1.0: local power source is good
> [2.102344] hub 1-0:1.0: enabling power on all ports
> [2.112008] tsl2563 1-0039: model 5, rev. 0
> [2.121210] oprofile: no performance counters
> [2.128318] oprofile: using timer interrupt.
> [2.135673] TCP: cubic registered
> [2.142836] NET: Registered protocol family 10
> [2.151272] sit: IPv6 over IPv4 tunneling driver
> [2.159514] NET: Registered protocol family 17
> [2.180761] kjournald starting.  Commit interval 5 seconds
> [2.198444] EXT3-fs (mmcblk0p2): using internal journal
> [2.206507] hub 1-0:1.0: port 1: status 0101 change 0001
> [2.214470] EXT3-fs (mmcblk0p2): mounted filesystem with ordered data mode
> [2.224234] VFS: Mounted root (ext3 filesystem) on device 179:2.
> [2.235386] devtmpfs: mounted
> [2.242299] Freeing unused kernel memory: 364K (c062b000 - c0686000)
> [2.320341] hub 1-0:1.0: state 7 ports 1 chg 0002 evt 
> [2.329613] hub 1-0:1.0: port 1, status 0101, change , 12 Mb/s
> [2.530412] usb 1-1: new high-speed USB device num

[PATCH V2] staging: dwc2: set up all module params

2013-11-26 Thread Stephen Warren
The DWC2 USB controller in the BCM2835 (Raspberry Pi) needs some non-
default parameters. Select these based on the compatible value from the
DT node. For all other HW, fall back to the default parameters currently
in use.

The values in params_bcm2835[] were posted to the mailing list by Paul
quite some time ago. I made a couple of minor modifications since then;
to set ahbcfg instead of ahb_single, and to set uframe_sched.

Signed-off-by: Stephen Warren 
---
v2:
* Handle !match->data correctly.
* Set uframe_sched core parameter.
---
 Documentation/devicetree/bindings/staging/dwc2.txt |4 +-
 drivers/staging/dwc2/platform.c|   58 
 2 files changed, 51 insertions(+), 11 deletions(-)

diff --git a/Documentation/devicetree/bindings/staging/dwc2.txt 
b/Documentation/devicetree/bindings/staging/dwc2.txt
index 1a1b7cf..8b60e90 100644
--- a/Documentation/devicetree/bindings/staging/dwc2.txt
+++ b/Documentation/devicetree/bindings/staging/dwc2.txt
@@ -2,7 +2,9 @@ Platform DesignWare HS OTG USB 2.0 controller
 -
 
 Required properties:
-- compatible : "snps,dwc2"
+- compatible : One of:
+  - brcm,bcm2835-usb: The DWC2 USB controller instance in the BCM2835 SoC.
+  - snps,dwc2: A generic DWC2 USB controller with default parameters.
 - reg : Should contain 1 register range (address and length)
 - interrupts : Should contain 1 interrupt
 
diff --git a/drivers/staging/dwc2/platform.c b/drivers/staging/dwc2/platform.c
index 4d9fac0..28a78fe 100644
--- a/drivers/staging/dwc2/platform.c
+++ b/drivers/staging/dwc2/platform.c
@@ -39,6 +39,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 
 #include "core.h"
@@ -46,6 +47,34 @@
 
 static const char dwc2_driver_name[] = "dwc2";
 
+static const struct dwc2_core_params params_bcm2835 = {
+   .otg_cap= 0,/* HNP/SRP capable */
+   .otg_ver= 0,/* 1.3 */
+   .dma_enable = 1,
+   .dma_desc_enable= 0,
+   .speed  = 0,/* High Speed */
+   .enable_dynamic_fifo= 1,
+   .en_multiple_tx_fifo= 1,
+   .host_rx_fifo_size  = 774,  /* 774 DWORDs */
+   .host_nperio_tx_fifo_size   = 256,  /* 256 DWORDs */
+   .host_perio_tx_fifo_size= 512,  /* 512 DWORDs */
+   .max_transfer_size  = 65535,
+   .max_packet_count   = 511,
+   .host_channels  = 8,
+   .phy_type   = 1,/* UTMI */
+   .phy_utmi_width = 8,/* 8 bits */
+   .phy_ulpi_ddr   = 0,/* Single */
+   .phy_ulpi_ext_vbus  = 0,
+   .i2c_enable = 0,
+   .ulpi_fs_ls = 0,
+   .host_support_fs_ls_low_power   = 0,
+   .host_ls_low_power_phy_clk  = 0,/* 48 MHz */
+   .ts_dline   = 0,
+   .reload_ctl = 0,
+   .ahbcfg = 0x10,
+   .uframe_sched   = 1,
+};
+
 /**
  * dwc2_driver_remove() - Called when the DWC_otg core is unregistered with the
  * DWC_otg driver
@@ -66,6 +95,13 @@ static int dwc2_driver_remove(struct platform_device *dev)
return 0;
 }
 
+static const struct of_device_id dwc2_of_match_table[] = {
+   { .compatible = "brcm,bcm2835-usb", .data = ¶ms_bcm2835 },
+   { .compatible = "snps,dwc2", .data = NULL },
+   {},
+};
+MODULE_DEVICE_TABLE(of, dwc2_of_match_table);
+
 /**
  * dwc2_driver_probe() - Called when the DWC_otg core is bound to the DWC_otg
  * driver
@@ -80,14 +116,22 @@ static int dwc2_driver_remove(struct platform_device *dev)
  */
 static int dwc2_driver_probe(struct platform_device *dev)
 {
+   const struct of_device_id *match;
+   const struct dwc2_core_params *params;
+   struct dwc2_core_params defparams;
struct dwc2_hsotg *hsotg;
struct resource *res;
int retval;
int irq;
-   struct dwc2_core_params params;
 
-   /* Default all params to autodetect */
-   dwc2_set_all_params(¶ms, -1);
+   match = of_match_device(dwc2_of_match_table, &dev->dev);
+   if (match && match->data) {
+   params = match->data;
+   } else {
+   /* Default all params to autodetect */
+   dwc2_set_all_params(&defparams, -1);
+   params = &defparams;
+   }
 
hsotg = devm_kzalloc(&dev->dev, sizeof(*hsotg), GFP_KERNEL);
if (!hsotg)
@@ -118,7 +162,7 @@ static int dwc2_driver_probe(struct platform_device *dev)
dev_dbg(&dev->dev, "mapped PA %08lx to VA %p\n",
(unsigned long)res->start, hsotg->regs);
 
-   retval = dwc2_hcd_init(hsotg, irq, ¶ms);
+   re

Re: [PATCH] staging: dwc2: set up all module params

2013-11-26 Thread Stephen Warren
On 11/26/2013 12:27 PM, Paul Zimmerman wrote:
>> From: Stephen Warren [mailto:swar...@wwwdotorg.org]
>> Sent: Monday, November 25, 2013 9:03 PM
>>
>> The DWC2 USB controller in the BCM2835 (Raspberry Pi) needs some non-
>> default parameters. Select these based on the compatible value from the
>> DT node. For all other HW, fall back to the default parameters currently
>> in use.
>>
>> The values in params_bcm2835[] were posted to the mailing list by Paul
>> quite some time ago. I made a couple of minor modifications since then;
>> to set ahbcfg instead of ahb_single, and to set uframe_sched.
> 
> Hi Stephen,
> 
> I don't see any code in this patch that is setting uframe_sched?

Hmm, that's true. What value should it be set to for the BCM2835, do you
know? I obviously have it set to 0, which seems to work out OK...
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] staging: dwc2: set up all module params

2013-11-25 Thread Stephen Warren
The DWC2 USB controller in the BCM2835 (Raspberry Pi) needs some non-
default parameters. Select these based on the compatible value from the
DT node. For all other HW, fall back to the default parameters currently
in use.

The values in params_bcm2835[] were posted to the mailing list by Paul
quite some time ago. I made a couple of minor modifications since then;
to set ahbcfg instead of ahb_single, and to set uframe_sched.

Signed-off-by: Stephen Warren 
---
 Documentation/devicetree/bindings/staging/dwc2.txt |4 +-
 drivers/staging/dwc2/platform.c|   56 
 2 files changed, 50 insertions(+), 10 deletions(-)

diff --git a/Documentation/devicetree/bindings/staging/dwc2.txt 
b/Documentation/devicetree/bindings/staging/dwc2.txt
index 1a1b7cf..8b60e90 100644
--- a/Documentation/devicetree/bindings/staging/dwc2.txt
+++ b/Documentation/devicetree/bindings/staging/dwc2.txt
@@ -2,7 +2,9 @@ Platform DesignWare HS OTG USB 2.0 controller
 -
 
 Required properties:
-- compatible : "snps,dwc2"
+- compatible : One of:
+  - brcm,bcm2835-usb: The DWC2 USB controller instance in the BCM2835 SoC.
+  - snps,dwc2: A generic DWC2 USB controller with default parameters.
 - reg : Should contain 1 register range (address and length)
 - interrupts : Should contain 1 interrupt
 
diff --git a/drivers/staging/dwc2/platform.c b/drivers/staging/dwc2/platform.c
index 4d9fac0..20586dc 100644
--- a/drivers/staging/dwc2/platform.c
+++ b/drivers/staging/dwc2/platform.c
@@ -39,6 +39,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 
 #include "core.h"
@@ -46,6 +47,33 @@
 
 static const char dwc2_driver_name[] = "dwc2";
 
+static const struct dwc2_core_params params_bcm2835 = {
+   .otg_cap= 0,/* HNP/SRP capable */
+   .otg_ver= 0,/* 1.3 */
+   .dma_enable = 1,
+   .dma_desc_enable= 0,
+   .speed  = 0,/* High Speed */
+   .enable_dynamic_fifo= 1,
+   .en_multiple_tx_fifo= 1,
+   .host_rx_fifo_size  = 774,  /* 774 DWORDs */
+   .host_nperio_tx_fifo_size   = 256,  /* 256 DWORDs */
+   .host_perio_tx_fifo_size= 512,  /* 512 DWORDs */
+   .max_transfer_size  = 65535,
+   .max_packet_count   = 511,
+   .host_channels  = 8,
+   .phy_type   = 1,/* UTMI */
+   .phy_utmi_width = 8,/* 8 bits */
+   .phy_ulpi_ddr   = 0,/* Single */
+   .phy_ulpi_ext_vbus  = 0,
+   .i2c_enable = 0,
+   .ulpi_fs_ls = 0,
+   .host_support_fs_ls_low_power   = 0,
+   .host_ls_low_power_phy_clk  = 0,/* 48 MHz */
+   .ts_dline   = 0,
+   .reload_ctl = 0,
+   .ahbcfg = 0x10,
+};
+
 /**
  * dwc2_driver_remove() - Called when the DWC_otg core is unregistered with the
  * DWC_otg driver
@@ -66,6 +94,13 @@ static int dwc2_driver_remove(struct platform_device *dev)
return 0;
 }
 
+static const struct of_device_id dwc2_of_match_table[] = {
+   { .compatible = "brcm,bcm2835-usb", .data = ¶ms_bcm2835 },
+   { .compatible = "snps,dwc2", .data = NULL },
+   {},
+};
+MODULE_DEVICE_TABLE(of, dwc2_of_match_table);
+
 /**
  * dwc2_driver_probe() - Called when the DWC_otg core is bound to the DWC_otg
  * driver
@@ -80,14 +115,23 @@ static int dwc2_driver_remove(struct platform_device *dev)
  */
 static int dwc2_driver_probe(struct platform_device *dev)
 {
+   const struct of_device_id *match;
+   const struct dwc2_core_params *params;
+   struct dwc2_core_params defparams;
struct dwc2_hsotg *hsotg;
struct resource *res;
int retval;
int irq;
-   struct dwc2_core_params params;
+
+   match = of_match_device(dwc2_of_match_table, &dev->dev);
+   if (match)
+   params = match->data;
+   else {
+   dwc2_set_all_params(&defparams, -1);
+   params = &defparams;
+   }
 
/* Default all params to autodetect */
-   dwc2_set_all_params(¶ms, -1);
 
hsotg = devm_kzalloc(&dev->dev, sizeof(*hsotg), GFP_KERNEL);
if (!hsotg)
@@ -118,7 +162,7 @@ static int dwc2_driver_probe(struct platform_device *dev)
dev_dbg(&dev->dev, "mapped PA %08lx to VA %p\n",
(unsigned long)res->start, hsotg->regs);
 
-   retval = dwc2_hcd_init(hsotg, irq, ¶ms);
+   retval = dwc2_hcd_init(hsotg, irq, params);
if (retval)
return retval;
 
@@ -127,12 +171,6 @@ static int dwc2_driver_probe(struct platform_device *dev)
return retval;
 

Re: [PATCH 00/31] ARM: tegra: use common reset and DMA bindings

2013-11-20 Thread Stephen Warren
On 11/20/2013 10:03 AM, Arnd Bergmann wrote:
> On Wednesday 20 November 2013, Stephen Warren wrote:
>>> +- #iommu-cells : Must be <1>. This dictates the length of DMA specifiers in
>>> +  client nodes' dmas properties. The specifier represents the DMA request
>>> +  select value for the peripheral. For more details, consult the Tegra 
>>> TRM's
>>> +  documentation of the APB DMA channel control register REQ_SEL field.
>>>  
>>>  Examples:
>>>  
>>> @@ -36,4 +40,5 @@ apbdma: dma@6000a000 {
>>>   clocks = <&tegra_car 34>;
>>>   resets = <&tegra_car 34>;
>>>   reset-names = "dma";
>>> + #iommu-cells = <1>;
> 
> 
> s/iommu/dma/
> 
> Otherwise looks good. The dts files are correct, so I guess it's just
> a typo here.

Thanks, fixed locally.
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH 00/31] ARM: tegra: use common reset and DMA bindings

2013-11-20 Thread Stephen Warren
On 11/20/2013 08:37 AM, Arnd Bergmann wrote:
> On Friday 15 November 2013, Stephen Warren wrote:
>> This series implements a common reset framework driver for Tegra, and
>> updates all relevant Tegra drivers to use it. It also removes the custom
>> DMA bindings and replaced them with the standard DMA DT bindings.
> 
> The series is rather long, so I may have missed it, but I think you need one
> more patch to the apbdma binding to document the use of #dma-cells, what
> value it has, and what the format of the dma specifiers in slave drivers
> needs to be.

Yes, you're right. I will fold the following into "ARM: tegra: document
use of standard DMA DT bindings":

> diff --git a/Documentation/devicetree/bindings/dma/tegra20-apbdma.txt 
> b/Documentation/devicetree/bindings/dma/tegra20-apbdma.txt
> index 0b1e577ab9d3..0b0f9498e265 100644
> --- a/Documentation/devicetree/bindings/dma/tegra20-apbdma.txt
> +++ b/Documentation/devicetree/bindings/dma/tegra20-apbdma.txt
> @@ -11,6 +11,10 @@ Required properties:
>See ../reset/reset.txt for details.
>  - reset-names : Must include the following entries:
>- dma
> +- #iommu-cells : Must be <1>. This dictates the length of DMA specifiers in
> +  client nodes' dmas properties. The specifier represents the DMA request
> +  select value for the peripheral. For more details, consult the Tegra TRM's
> +  documentation of the APB DMA channel control register REQ_SEL field.
>  
>  Examples:
>  
> @@ -36,4 +40,5 @@ apbdma: dma@6000a000 {
>   clocks = <&tegra_car 34>;
>   resets = <&tegra_car 34>;
>   reset-names = "dma";
> + #iommu-cells = <1>;
>  };

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 21/31] staging: nvec: use reset framework

2013-11-15 Thread Stephen Warren
From: Stephen Warren 

Tegra's clock driver now provides an implementation of the common
reset API (include/linux/reset.h). Use this instead of the old Tegra-
specific API; that will soon be removed.

Cc: tred...@nvidia.com
Cc: pdeschrij...@nvidia.com
Cc: linux-te...@vger.kernel.org
Cc: linux-arm-ker...@lists.infradead.org
Cc: Julian Andres Klode 
Cc: Marc Dietrich 
Cc: ac...@lists.launchpad.net
Cc: Greg Kroah-Hartman 
Cc: de...@driverdev.osuosl.org
Signed-off-by: Stephen Warren 
---
This patch is part of a series with strong internal depdendencies. I'm
looking for an ack so that I can take the entire series through the Tegra
and arm-soc trees. The series will be part of a stable branch that can be
merged into other subsystems if needed to avoid/resolve dependencies.
---
 drivers/staging/nvec/nvec.c | 11 ---
 drivers/staging/nvec/nvec.h |  5 -
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/drivers/staging/nvec/nvec.c b/drivers/staging/nvec/nvec.c
index 3066ee2e753b..9de4cd13d9ab 100644
--- a/drivers/staging/nvec/nvec.c
+++ b/drivers/staging/nvec/nvec.c
@@ -36,7 +36,6 @@
 #include 
 #include 
 #include 
-#include 
 
 #include "nvec.h"
 
@@ -733,9 +732,9 @@ static void tegra_init_i2c_slave(struct nvec_chip *nvec)
 
clk_prepare_enable(nvec->i2c_clk);
 
-   tegra_periph_reset_assert(nvec->i2c_clk);
+   reset_control_assert(nvec->rst);
udelay(2);
-   tegra_periph_reset_deassert(nvec->i2c_clk);
+   reset_control_deassert(nvec->rst);
 
val = I2C_CNFG_NEW_MASTER_SFM | I2C_CNFG_PACKET_MODE_EN |
(0x2 << I2C_CNFG_DEBOUNCE_CNT_SHIFT);
@@ -836,6 +835,12 @@ static int tegra_nvec_probe(struct platform_device *pdev)
return -ENODEV;
}
 
+   nvec->rst = devm_reset_control_get(&pdev->dev, "i2c");
+   if (IS_ERR(nvec->rst)) {
+   dev_err(nvec->dev, "failed to get controller reset\n");
+   return PTR_ERR(nvec->rst);
+   }
+
nvec->base = base;
nvec->irq = res->start;
nvec->i2c_clk = i2c_clk;
diff --git a/drivers/staging/nvec/nvec.h b/drivers/staging/nvec/nvec.h
index e880518935fb..e271375053fa 100644
--- a/drivers/staging/nvec/nvec.h
+++ b/drivers/staging/nvec/nvec.h
@@ -23,6 +23,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 
@@ -109,7 +110,8 @@ struct nvec_msg {
  * @irq: The IRQ of the I2C device
  * @i2c_addr: The address of the I2C slave
  * @base: The base of the memory mapped region of the I2C device
- * @clk: The clock of the I2C device
+ * @i2c_clk: The clock of the I2C device
+ * @rst: The reset of the I2C device
  * @notifier_list: Notifiers to be called on received messages, see
  * nvec_register_notifier()
  * @rx_data: Received messages that have to be processed
@@ -139,6 +141,7 @@ struct nvec_chip {
int i2c_addr;
void __iomem *base;
struct clk *i2c_clk;
+   struct reset_control *rst;
struct atomic_notifier_head notifier_list;
struct list_head rx_data, tx_data;
struct notifier_block nvec_status_notifier;
-- 
1.8.1.5

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH 00/31] ARM: tegra: use common reset and DMA bindings

2013-11-15 Thread Stephen Warren
From: Stephen Warren 

This series implements a common reset framework driver for Tegra, and
updates all relevant Tegra drivers to use it. It also removes the custom
DMA bindings and replaced them with the standard DMA DT bindings.

Historically, the Tegra clock driver has exported a custom API for module
reset. This series removes that API, and transitions DT and drivers to
the new reset framework.

The custom API used a "struct clk" to identify which module to reset, and
consequently some DT bindings and drivers required clocks to be provided
where they really needed just a reset identifier instead. Due to this
known deficiency, I have always considered most Tegra bindings to be
unstable. This series removes this excuse for instability, although I
still consider some Tegra bindings unstable due to the need to convert to
the common DMA bindings.

Historically, Tegra DMA channels have been represented in DT using a
custom nvidia,dma-request-selector property. Now that standard DMA DT
bindings exist, convert all Tegra bindings, DTs, and drivers to use the
standard instead.

This series makes a DT-ABI-incompatible change to:
- Require reset specifiers in DT where relevant.
- Require standard DMA specifiers.
- Remove clock specifiers from DT where they were only needed for reset.
- Remove legacy DMA specifier properties.

I anticipate merging this whole series into the Tegra and arm-soc trees
as its own branch, due to internal dependencies. This branch will be
stable and can then be merged into any other subsystem trees should any
conflicts arise.

This series depends on Peter's Tegra clock driver rework, available at
git://nv-tegra.nvidia.com/user/pdeschrijver/linux tegra-clk-tegra124-0
(or whatever version of that gets included in 3.14)

Cc: ac...@lists.launchpad.net
Cc: Alan Stern 
Cc: alsa-de...@alsa-project.org
Cc: Bjorn Helgaas 
Cc: Dan Williams 
Cc: David Airlie 
Cc: de...@driverdev.osuosl.org
Cc: devicet...@vger.kernel.org
Cc: Dmitry Torokhov 
Cc: Dmitry Torokhov 
Cc: dri-de...@lists.freedesktop.org
Cc: Greg Kroah-Hartman 
Cc: Ian Campbell 
Cc: Julian Andres Klode 
Cc: Liam Girdwood 
Cc: linux-arm-ker...@lists.infradead.org
Cc: linux-...@vger.kernel.org
Cc: linux-in...@vger.kernel.org
Cc: linux-...@vger.kernel.org
Cc: linux-ser...@vger.kernel.org
Cc: linux-...@vger.kernel.org
Cc: linux-te...@vger.kernel.org
Cc: linux-...@vger.kernel.org
Cc: Marc Dietrich 
Cc: Mark Brown 
Cc: Mark Rutland 
Cc: Mike Turquette 
Cc: Pawel Moll 
Cc: pdeschrij...@nvidia.com
Cc: Rob Herring 
Cc: Terje Bergström 
Cc: tred...@nvidia.com
Cc: Wolfram Sang 

Stephen Warren (31):
  ARM: tegra: add missing clock documentation to DT bindings
  ARM: tegra: document reset properties in DT bindings
  ARM: tegra: document use of standard DMA DT bindings
  ARM: tegra: update DT files to add reset properties
  ARM: tegra: update DT files to add DMA properties
  ARM: tegra: select the reset framework
  clk: tegra: implement a reset driver
  pci: tegra: use reset framework
  drm/tegra: use reset framework
  ARM: tegra: pass reset to tegra_powergate_sequence_power_up()
  dma: add channel request API that supports deferred probe
  dma: tegra: use reset framework
  dma: tegra: register as an OF DMA controller
  ASoC: dmaengine: support deferred probe for DMA channels
  ASoC: dmaengine: add custom DMA config to snd_dmaengine_pcm_config
  ASoC: tegra: use reset framework
  ASoC: tegra: call pm_runtime APIs around register accesses
  ASoC: tegra: allocate AHUB FIFO during probe() not startup()
  ASoC: tegra: convert to standard DMA DT bindings
  i2c: tegra: use reset framework
  staging: nvec: use reset framework
  spi: tegra: use reset framework
  spi: tegra: convert to standard DMA DT bindings
  serial: tegra: use reset framework
  serial: tegra: convert to standard DMA DT bindings
  Input: tegra-kbc - use reset framework
  USB: EHCI: tegra: use reset framework
  ARM: tegra: remove legacy clock entries from DT
  ARM: tegra: remove legacy DMA entries from DT
  clk: tegra: remove legacy reset APIs
  clk: tegra: remove bogus PCIE_XCLK

 .../bindings/arm/tegra/nvidia,tegra20-pmc.txt  |   1 +
 .../bindings/clock/nvidia,tegra114-car.txt |   4 +
 .../bindings/clock/nvidia,tegra124-car.txt |   4 +
 .../bindings/clock/nvidia,tegra20-car.txt  |   4 +
 .../bindings/clock/nvidia,tegra30-car.txt  |   4 +
 .../devicetree/bindings/dma/tegra20-apbdma.txt |   9 ++
 .../bindings/gpu/nvidia,tegra20-host1x.txt | 124 +++
 .../devicetree/bindings/i2c/nvidia,tegra20-i2c.txt |  27 +++-
 .../bindings/input/nvidia,tegra20-kbc.txt  |   9 ++
 .../bindings/mmc/nvidia,tegra20-sdhci.txt  |   9 ++
 .../devicetree/bindings/nvec/nvidia,nvec.txt   |  12 ++
 .../bindings/pci/nvidia,tegra20-pcie.txt   |  28 ++--
 .../devicetree/bindings/pwm/nvidia,tegra20-pwm.txt |   9 ++
 .../devicetree/bindings/rtc/nvidia,tegra20-rtc.txt |   3 +
 .../bindings/serial/nvidia,tegra20-hsuart

Re: [PATCH] staging: dwc2: add microframe scheduler from downstream Pi kernel

2013-07-18 Thread Stephen Warren
On 07/17/2013 01:35 PM, Paul Zimmerman wrote:
> The transfer scheduler in the dwc2 driver is pretty basic, not to
> mention buggy. It works fairly well with just a couple of devices
> plugged in, but if you add, say, multiple devices with periodic
> endpoints, the scheduler breaks down and can't even enumerate all
> the devices.
> 
> To fix this, import the "microframe scheduler" patch from the
> driver in the downstream Raspberry Pi kernel, which is based on
> the Synopsys vendor driver. That patch was done by the guys from
> raspberrypi.org, including at least Gordon Hollingsworth and
> "popcornmix".
> 
> I have added a driver parameter for this, enabled by default, in
> case anyone has problems with it and needs to disable it. I don't
> think we should add a DT binding for that, though, since I plan to
> remove the option once any bugs are fixed.

Tested-by: Stephen Warren 

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] staging: dwc2: add driver parameter to set AHB config register value

2013-07-18 Thread Stephen Warren
On 07/16/2013 01:22 PM, Paul Zimmerman wrote:
> The dwc2 driver sets the value of the DWC2 GAHBCFG register to 0x6,
> which is GAHBCFG_HBSTLEN_INCR4. But different platforms may require
> different values. In particular, the Broadcom 2835 SOC used in the
> Raspberry Pi needs a value of 0x10, otherwise the DWC2 controller
> stops working after a short period of heavy USB traffic.
> 
> So this patch adds another driver parameter named 'ahbcfg'. The
> default value is 0x6. Any platform needing a different value should
> add a DT attribute to set it.
> 
> This patch also removes the 'ahb_single' driver parameter, since
> that bit can now be set using 'ahbcfg'.
> 
> This patch does not add DT support to platform.c, I will leave that
> to whoever owns the first platform that needs a non-default value.
> (Stephen?)

Tested-by: Stephen Warren 

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] staging: dwc2: add microframe scheduler from downstream Pi kernel

2013-07-18 Thread Stephen Warren
On 07/18/2013 10:45 AM, Paul Zimmerman wrote:
>> From: linux-usb-ow...@vger.kernel.org 
>> [mailto:linux-usb-ow...@vger.kernel.org] On Behalf Of Gordon Hollingworth
>> Sent: Wednesday, July 17, 2013 11:00 PM
>>
>> I'd suggest just adding a Raspberry Pi Foundation copyright.
>>
>> Is that OK or do you need names for SOB?
> 
> Ah yes, thanks for reminding me. Yes, I will need SOBs from the main
> contributors. And they must be real names, "popcornmix" is not
> acceptable as far as I understand. Thanks.

BTW, Dom has previously given permission to me (I think in an email
posted to a public list) to modify any S-o-b lines that say "popcornmix"
as the real name to say "Dom Cobley" instead. Of course, this is only
relevant if the commit in question is already s-o-b popcornmix. And I am
assuming that popcornmix is always Dom.

(Greg, I assume this kind of agreement is fine, and it's not the case
that Dom would need to amend all his commits himself to change the s-o-b?)
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH 0/6] staging: dwc2: fixes and cleanups for dwc2

2013-07-13 Thread Stephen Warren
On 07/13/2013 03:53 PM, Paul Zimmerman wrote:
> This is a series of fixes and cleanups for the dwc2 driver. It
> fixes some occasional crashes I had been seeing, and also makes
> the driver work on the Raspberry Pi with the mainline kernel,
> once some additional DT support is added (not upstream yet).
> 
> I think this should make the driver pretty close to mainlineable
> too.

The series,

Tested-by: Stephen Warren 

The overall result isn't *quite* perfect, but it's a heck of a lot
better than it was before.
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel