Re: SuperH 7760 OHCI

2016-05-28 Thread Martin Townsend
On Thu, May 26, 2016 at 8:04 PM, Alan Stern  wrote:
> On Thu, 26 May 2016, Martin Townsend wrote:
>
>> >> and setting the HCD_MEMORY_LOCAL flag in the HC driver.
>> >
>> > Did you do this correctly?  That is, in the correct driver?
>> >
>> I put the code for the declaring the DMA coherent memory into ohci-platform.c
>> and set the flag in ohci-hcd.c
>
> Okay.  It's not portable, but it's fine for a single system with only
> one controller.
>
>> >> and I get the following error
>> >
>> > ...
>> >> [1.51] usb 1-1: new full-speed USB device number 2 using 
>> >> ohci-platform
>> >> [1.69] usb 1-1: device descriptor read/64, error -12
>> >> [1.98] usb 1-1: device descriptor read/64, error -12
>> >> [2.27] usb 1-1: new full-speed USB device number 3 using 
>> >> ohci-platform
>> >> [2.45] usb 1-1: device descriptor read/64, error -12
>> >> [2.74] usb 1-1: device descriptor read/64, error -12
>> >> [3.03] usb 1-1: new full-speed USB device number 4 using 
>> >> ohci-platform
>> >> [3.45] usb 1-1: device not accepting address 4, error -12
>> >> [3.63] usb 1-1: new full-speed USB device number 5 using 
>> >> ohci-platform
>> >> [4.05] usb 1-1: device not accepting address 5, error -12
>> >> [4.05] usb usb1-port1: unable to enumerate USB device
>> >
>> > -12 is -ENOMEM on your system?
>> Yes
>> >
>> > ...
>> >> which looks good. Anyone have an idea as to what's wrong or what the
>> >> error messages mean.  I have nothing plugged into the USB ports.
>> >
>> > Nothing plugged into the USB ports?  Then why does the system think
>> > something is plugged in?  It sounds like the driver is not accessing
>> > the right registers.
>> >
>> >>  Also
>> >> any ideas on where to start with debugging this would be appreciated.
>> >
>> > What do you see in /sys/kernel/debug/usb/ohci/*/registers?
>> >
>> root@sh7760:~# cat /sys/kernel/debug/usb/ohci/ohci-platform/registers
>> bus platform, device ohci-platform
>> Generic Platform OHCI controller
>> ohci_hcd
>> OHCI 1.0, NO legacy support registers, rh state running
>> control 0x083 HCFS=operational CBSR=3
>> cmdstatus 0x0 SOC=0
>> intrstatus 0x0024 FNO SF
>> intrenable 0x805a MIE RHSC UE RD WDH
>> hcca frame 0x
>> fmintvl 0xa7782edf FIT FSMPS=0xa778 FI=0x2edf
>> fmremaining 0x88b0 FRT FR=0x08b0
>> periodicstart 0x2a2f
>> lsthresh 0x0628
>> hub poll timer off
>> roothub.a 02000202 POTPGT=2 NPS NDP=2(2)
>> roothub.b  PPCM= DR=
>> roothub.status 8002 DRWE OCI
>> roothub.portstatus [0] 0x0101 PPS CCS
>> roothub.portstatus [1] 0x0100 PPS
>>
>> Does this look sane?
>
> Yes, except for two things:
>
> The OCI bit in roothub.status indicates that an OverCurrent
> condition was present at some point.
>
> The CCS bit in roothub.portstats[0] indicates that something
> is plugged into port 1.  If there really is nothing plugged
> into that port then this is a hardware failure.
>
Hi Alan,

It does look like a HW problem but I just tried the 2.6 kernel image I
have with this dev kit and the USB works fine so I think it's a HW
configuration issue.  I need to understand the HW and 2.6 SH7760 OHCI
driver a bit more especially the SH7760 specific parts.  Like for
instance I noticed that it cleared the NPS and set the PSM bit in the
Root hub config register.  Then looking at the OHCI driver noticed
there was a distrust firmware flag which then alters this again.
Sadly I couldn't get the access to the physical addresses from the 2.6
kernel.  I'll see if I can get some cross tools and get devmem on
there.

The memory problem looks like a silicon bug in the SH7760, we found a
document detailing that the last 4 bytes of each page can be
corrupted.  Also I think the OHCI driver likes to use at least a page
each for the TD and ED caches which leaves nothing for the HCCA.
Anyway I took the memory managment code from the 2.6 OHCI driver I
have and plumbed it in to ohci-mem and then hardcoded ohci->hcca and
ohci->dma_hcca to 0xFE341000 and 0x0 respectively.  Don't know if it
works yet as I'm still getting overcurrent indicator, at least the CCS
bit isn't currently set but then again it doesn't get set when I plug
something in.

I was hoping this could be something that could be merged into
mainline but the more I dig the more it's not looking promising.
Thanks for taking the time to help, I really appreciate it.

- Martin.

> The reason for the ENOMEM errors isn't clear.  You could try adding
> some debugging statements to see exactly where it comes from.  A likely
> spot is the call to hcd_alloc_coherent() in usb_hcd_map_urb_for_dma().
>
> Alan Stern
>
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: SuperH 7760 OHCI

2016-05-26 Thread Alan Stern
On Thu, 26 May 2016, Martin Townsend wrote:

> >> and setting the HCD_MEMORY_LOCAL flag in the HC driver.
> >
> > Did you do this correctly?  That is, in the correct driver?
> >
> I put the code for the declaring the DMA coherent memory into ohci-platform.c
> and set the flag in ohci-hcd.c

Okay.  It's not portable, but it's fine for a single system with only 
one controller.

> >> and I get the following error
> >
> > ...
> >> [1.51] usb 1-1: new full-speed USB device number 2 using 
> >> ohci-platform
> >> [1.69] usb 1-1: device descriptor read/64, error -12
> >> [1.98] usb 1-1: device descriptor read/64, error -12
> >> [2.27] usb 1-1: new full-speed USB device number 3 using 
> >> ohci-platform
> >> [2.45] usb 1-1: device descriptor read/64, error -12
> >> [2.74] usb 1-1: device descriptor read/64, error -12
> >> [3.03] usb 1-1: new full-speed USB device number 4 using 
> >> ohci-platform
> >> [3.45] usb 1-1: device not accepting address 4, error -12
> >> [3.63] usb 1-1: new full-speed USB device number 5 using 
> >> ohci-platform
> >> [4.05] usb 1-1: device not accepting address 5, error -12
> >> [4.05] usb usb1-port1: unable to enumerate USB device
> >
> > -12 is -ENOMEM on your system?
> Yes
> >
> > ...
> >> which looks good. Anyone have an idea as to what's wrong or what the
> >> error messages mean.  I have nothing plugged into the USB ports.
> >
> > Nothing plugged into the USB ports?  Then why does the system think
> > something is plugged in?  It sounds like the driver is not accessing
> > the right registers.
> >
> >>  Also
> >> any ideas on where to start with debugging this would be appreciated.
> >
> > What do you see in /sys/kernel/debug/usb/ohci/*/registers?
> >
> root@sh7760:~# cat /sys/kernel/debug/usb/ohci/ohci-platform/registers
> bus platform, device ohci-platform
> Generic Platform OHCI controller
> ohci_hcd
> OHCI 1.0, NO legacy support registers, rh state running
> control 0x083 HCFS=operational CBSR=3
> cmdstatus 0x0 SOC=0
> intrstatus 0x0024 FNO SF
> intrenable 0x805a MIE RHSC UE RD WDH
> hcca frame 0x
> fmintvl 0xa7782edf FIT FSMPS=0xa778 FI=0x2edf
> fmremaining 0x88b0 FRT FR=0x08b0
> periodicstart 0x2a2f
> lsthresh 0x0628
> hub poll timer off
> roothub.a 02000202 POTPGT=2 NPS NDP=2(2)
> roothub.b  PPCM= DR=
> roothub.status 8002 DRWE OCI
> roothub.portstatus [0] 0x0101 PPS CCS
> roothub.portstatus [1] 0x0100 PPS
> 
> Does this look sane?

Yes, except for two things:

The OCI bit in roothub.status indicates that an OverCurrent
condition was present at some point.

The CCS bit in roothub.portstats[0] indicates that something
is plugged into port 1.  If there really is nothing plugged
into that port then this is a hardware failure.

The reason for the ENOMEM errors isn't clear.  You could try adding 
some debugging statements to see exactly where it comes from.  A likely 
spot is the call to hcd_alloc_coherent() in usb_hcd_map_urb_for_dma().

Alan Stern

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


Re: SuperH 7760 OHCI

2016-05-26 Thread Martin Townsend
On Thu, May 26, 2016 at 6:31 PM, Alan Stern  wrote:
> On Thu, 26 May 2016, Martin Townsend wrote:
>
>> I tried hacking in the relevant code straight into the OHCI platform driver
>> res_mem = platform_get_resource(dev, IORESOURCE_MEM, 1);
>> if (res_mem == NULL) {
>> dev_err(>dev, "no resource definition for memory\n");
>> err = -ENOENT;
>> goto err_power;
>> }
>>
>> if (!request_mem_region(res_mem->start, resource_size(res_mem),
>> dev->name)) {
>> dev_err(>dev, "request_mem_region failed\n");
>> err = -EBUSY;
>> goto err_power;
>> }
>>
>> /*
>>  * Use SH7760 Shared Memory
>>  */
>> if (!dma_declare_coherent_memory(>dev, res_mem->start,
>>  res_mem->start - res_mem->parent->start,
>>  resource_size(res_mem),
>>  DMA_MEMORY_MAP |
>>  DMA_MEMORY_EXCLUSIVE)) {
>> dev_err(>dev, "cannot declare coherent memory\n");
>> err = -ENXIO;
>> goto err_power;
>> }
>> and setting the HCD_MEMORY_LOCAL flag in the HC driver.
>
> Did you do this correctly?  That is, in the correct driver?
>
I put the code for the declaring the DMA coherent memory into ohci-platform.c
and set the flag in ohci-hcd.c

>> and I get the following error
>
> ...
>> [1.51] usb 1-1: new full-speed USB device number 2 using 
>> ohci-platform
>> [1.69] usb 1-1: device descriptor read/64, error -12
>> [1.98] usb 1-1: device descriptor read/64, error -12
>> [2.27] usb 1-1: new full-speed USB device number 3 using 
>> ohci-platform
>> [2.45] usb 1-1: device descriptor read/64, error -12
>> [2.74] usb 1-1: device descriptor read/64, error -12
>> [3.03] usb 1-1: new full-speed USB device number 4 using 
>> ohci-platform
>> [3.45] usb 1-1: device not accepting address 4, error -12
>> [3.63] usb 1-1: new full-speed USB device number 5 using 
>> ohci-platform
>> [4.05] usb 1-1: device not accepting address 5, error -12
>> [4.05] usb usb1-port1: unable to enumerate USB device
>
> -12 is -ENOMEM on your system?
Yes
>
> ...
>> which looks good. Anyone have an idea as to what's wrong or what the
>> error messages mean.  I have nothing plugged into the USB ports.
>
> Nothing plugged into the USB ports?  Then why does the system think
> something is plugged in?  It sounds like the driver is not accessing
> the right registers.
>
>>  Also
>> any ideas on where to start with debugging this would be appreciated.
>
> What do you see in /sys/kernel/debug/usb/ohci/*/registers?
>
root@sh7760:~# cat /sys/kernel/debug/usb/ohci/ohci-platform/registers
bus platform, device ohci-platform
Generic Platform OHCI controller
ohci_hcd
OHCI 1.0, NO legacy support registers, rh state running
control 0x083 HCFS=operational CBSR=3
cmdstatus 0x0 SOC=0
intrstatus 0x0024 FNO SF
intrenable 0x805a MIE RHSC UE RD WDH
hcca frame 0x
fmintvl 0xa7782edf FIT FSMPS=0xa778 FI=0x2edf
fmremaining 0x88b0 FRT FR=0x08b0
periodicstart 0x2a2f
lsthresh 0x0628
hub poll timer off
roothub.a 02000202 POTPGT=2 NPS NDP=2(2)
roothub.b  PPCM= DR=
roothub.status 8002 DRWE OCI
roothub.portstatus [0] 0x0101 PPS CCS
roothub.portstatus [1] 0x0100 PPS

Does this look sane?

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


Re: SuperH 7760 OHCI

2016-05-26 Thread Alan Stern
On Thu, 26 May 2016, Martin Townsend wrote:

> I tried hacking in the relevant code straight into the OHCI platform driver
> res_mem = platform_get_resource(dev, IORESOURCE_MEM, 1);
> if (res_mem == NULL) {
> dev_err(>dev, "no resource definition for memory\n");
> err = -ENOENT;
> goto err_power;
> }
> 
> if (!request_mem_region(res_mem->start, resource_size(res_mem),
> dev->name)) {
> dev_err(>dev, "request_mem_region failed\n");
> err = -EBUSY;
> goto err_power;
> }
> 
> /*
>  * Use SH7760 Shared Memory
>  */
> if (!dma_declare_coherent_memory(>dev, res_mem->start,
>  res_mem->start - res_mem->parent->start,
>  resource_size(res_mem),
>  DMA_MEMORY_MAP |
>  DMA_MEMORY_EXCLUSIVE)) {
> dev_err(>dev, "cannot declare coherent memory\n");
> err = -ENXIO;
> goto err_power;
> }
> and setting the HCD_MEMORY_LOCAL flag in the HC driver.

Did you do this correctly?  That is, in the correct driver?

> and I get the following error

...
> [1.51] usb 1-1: new full-speed USB device number 2 using ohci-platform
> [1.69] usb 1-1: device descriptor read/64, error -12
> [1.98] usb 1-1: device descriptor read/64, error -12
> [2.27] usb 1-1: new full-speed USB device number 3 using ohci-platform
> [2.45] usb 1-1: device descriptor read/64, error -12
> [2.74] usb 1-1: device descriptor read/64, error -12
> [3.03] usb 1-1: new full-speed USB device number 4 using ohci-platform
> [3.45] usb 1-1: device not accepting address 4, error -12
> [3.63] usb 1-1: new full-speed USB device number 5 using ohci-platform
> [4.05] usb 1-1: device not accepting address 5, error -12
> [4.05] usb usb1-port1: unable to enumerate USB device

-12 is -ENOMEM on your system?

...
> which looks good. Anyone have an idea as to what's wrong or what the
> error messages mean.  I have nothing plugged into the USB ports.

Nothing plugged into the USB ports?  Then why does the system think 
something is plugged in?  It sounds like the driver is not accessing 
the right registers.

>  Also
> any ideas on where to start with debugging this would be appreciated.

What do you see in /sys/kernel/debug/usb/ohci/*/registers?

Alan Stern

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


Re: SuperH 7760 OHCI

2016-05-26 Thread Alan Stern
On Thu, 26 May 2016, Martin Townsend wrote:

> On Thu, May 26, 2016 at 4:24 PM, Alan Stern  wrote:
> > On Thu, 26 May 2016, Martin Townsend wrote:
> >
> >> Hi,
> >>
> >> I'm currently trying to get the USB Host working on the SH7760.  I
> >> tried the platform driver to start with and get the following error on
> >> boot:
> >> [3.60] usb 1-1: new full-speed USB device number 2 using 
> >> ohci-platform
> >> [3.872000] ohci-platform ohci-platform: frame counter not updating; 
> >> disabled
> >> [3.872000] ohci-platform ohci-platform: HC died; cleaning up
> >>
> >> So I dug a bit further and see that the SH7760 driver in the 2.6
> >> kernel makes use of the 8KB shared memory for HCCA and ED/TD buffers.
> >> After looking through the code for the 4.1 Kernel I am currently
> >> trying to port to I think I need to write my own platform driver that
> >> calls dma_declare_coherent_memory so that the OHCI driver uses this
> >> 8KB shared memory.  Then set HCD_LOCAL_MEM in the hc_driver flags to
> >> ensure that it uses dma_alloc_coherent.  In other words copy what the
> >> ohci-sm501.c file is doing.  I just wanted to confirm that this is
> >> what I should be doing or is there a better generic way of telling the
> >> OHCI driver to use this 8KB shared memory.
> >
> > There isn't a generic way of doing it, but you could such a thing to
> > the ohci-platform driver.  That would be preferable to adding a new,
> > separate platform driver.
> >
> > Alan Stern
> >
> Hi Alan,
> 
> Thanks for the reply.  So would that entail looking for a second
> IORESOURCE_MEM resource and taking this as the device's shared memory
> and if present call dma_declare_coherent_memory?

Something like that.  Actually you would probably need to add something
to the usb_ohci_pdata structure to represent the memory resource.

> Also how would I or in the HCD_LOCAL_MEM to flags to the hc_driver
> struct that's in ohci-hcd.c?

Well, if you use ohci-platform.c then the hc_driver struct is in that 
file, not in ohci-hcd.c -- it's called ohci_platform_hc_driver.  You 
can modify that structure's flags in ohci_platform_probe.

The problem is that this one structure gets used by the ohci-platform
driver for all its OHCI controllers, so it would be impossible to have
one controller that uses local memory and another that doesn't, all in
the same system.

If that's not an issue for you then feel free to submit changes for 
ohci-platform.c.  If it is an issue then there's no choice but to 
create a new platform driver.

Alan Stern

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


Re: SuperH 7760 OHCI

2016-05-26 Thread Martin Townsend
On Thu, May 26, 2016 at 4:05 PM, Martin Townsend
 wrote:
> Hi,
>
> I'm currently trying to get the USB Host working on the SH7760.  I
> tried the platform driver to start with and get the following error on
> boot:
> [3.60] usb 1-1: new full-speed USB device number 2 using ohci-platform
> [3.872000] ohci-platform ohci-platform: frame counter not updating; 
> disabled
> [3.872000] ohci-platform ohci-platform: HC died; cleaning up
>
> So I dug a bit further and see that the SH7760 driver in the 2.6
> kernel makes use of the 8KB shared memory for HCCA and ED/TD buffers.
> After looking through the code for the 4.1 Kernel I am currently
> trying to port to I think I need to write my own platform driver that
> calls dma_declare_coherent_memory so that the OHCI driver uses this
> 8KB shared memory.  Then set HCD_LOCAL_MEM in the hc_driver flags to
> ensure that it uses dma_alloc_coherent.  In other words copy what the
> ohci-sm501.c file is doing.  I just wanted to confirm that this is
> what I should be doing or is there a better generic way of telling the
> OHCI driver to use this 8KB shared memory.
>

I tried hacking in the relevant code straight into the OHCI platform driver
res_mem = platform_get_resource(dev, IORESOURCE_MEM, 1);
if (res_mem == NULL) {
dev_err(>dev, "no resource definition for memory\n");
err = -ENOENT;
goto err_power;
}

if (!request_mem_region(res_mem->start, resource_size(res_mem),
dev->name)) {
dev_err(>dev, "request_mem_region failed\n");
err = -EBUSY;
goto err_power;
}

/*
 * Use SH7760 Shared Memory
 */
if (!dma_declare_coherent_memory(>dev, res_mem->start,
 res_mem->start - res_mem->parent->start,
 resource_size(res_mem),
 DMA_MEMORY_MAP |
 DMA_MEMORY_EXCLUSIVE)) {
dev_err(>dev, "cannot declare coherent memory\n");
err = -ENXIO;
goto err_power;
}
and setting the HCD_MEMORY_LOCAL flag in the HC driver.
and I get the following error
[1.04] Found resource sh7760-usb-irq
[1.06] Found resource sh7760-usb-shared-memory
[1.06] Found resource sh7760-usb-io-memory
[1.13] usb usb1: New USB device found, idVendor=1d6b, idProduct=0001
[1.13] usb usb1: New USB device strings: Mfr=3, Product=2,
SerialNumber=1
[1.13] usb usb1: Product: Generic Platform OHCI controller
[1.13] usb usb1: Manufacturer: Linux 4.1.17-yocto-standard ohci_hcd
[1.13] usb usb1: SerialNumber: ohci-platform
[1.13] device: 'usb1': device_add
[1.13] bus: 'usb': add device usb1
[1.13] bus: 'usb': driver_probe_device: matched device usb1
with driver usb
[1.13] bus: 'usb': really_probe: probing driver usb with device usb1
[1.13] bus: 'usb': add device 1-0:1.0
[1.13] bus: 'usb': driver_probe_device: matched device 1-0:1.0
with driver hub
[1.13] bus: 'usb': really_probe: probing driver hub with device 1-0:1.0
[1.13] device: 'usb1-port1': device_add
[1.13] device: 'usb1-port2': device_add
[1.13] bus: 'usb': really_probe: bound device 1-0:1.0 to driver hub
[1.13] driver: 'usb': driver_bound: bound to device 'usb1'
[1.13] bus: 'usb': really_probe: bound device usb1 to driver usb
[1.14] bus: 'usb': add driver usbhid
[1.14] usbcore: registered new interface driver usbhid
[1.14] usbhid: USB HID core driver
[1.51] usb 1-1: new full-speed USB device number 2 using ohci-platform
[1.69] usb 1-1: device descriptor read/64, error -12
[1.98] usb 1-1: device descriptor read/64, error -12
[2.27] usb 1-1: new full-speed USB device number 3 using ohci-platform
[2.45] usb 1-1: device descriptor read/64, error -12
[2.74] usb 1-1: device descriptor read/64, error -12
[3.03] usb 1-1: new full-speed USB device number 4 using ohci-platform
[3.45] usb 1-1: device not accepting address 4, error -12
[3.63] usb 1-1: new full-speed USB device number 5 using ohci-platform
[4.05] usb 1-1: device not accepting address 5, error -12
[4.05] usb usb1-port1: unable to enumerate USB device

Here's the board support definitions
/* No power control needed so a blank platform data */
static struct usb_ohci_pdata usb_ohci_pdata;
static u64 usb_ohci_dma_mask = 0x;


static struct resource sh7760_usb_resources[] = {
DEFINE_RES_MEM_NAMED(SH7760_USB_BASE, SH7760_USB_IOLEN,
 "sh7760-usb-io-memory"),
DEFINE_RES_MEM_NAMED(SH7760_USB_SHARED_MEM_BASE_ADDR,
 SH7760_USB_SHARED_MEM_LEN,
 "sh7760-usb-shared-memory"),
DEFINE_RES_IRQ_NAMED(USB_IRQ, "sh7760-usb-irq"),
};

static struct platform_device sh7760_usb_host_device = {
.name= "ohci-platform",
.id= -1,
.dev = {
.dma_mask= 

Re: SuperH 7760 OHCI

2016-05-26 Thread Martin Townsend
On Thu, May 26, 2016 at 4:24 PM, Alan Stern  wrote:
> On Thu, 26 May 2016, Martin Townsend wrote:
>
>> Hi,
>>
>> I'm currently trying to get the USB Host working on the SH7760.  I
>> tried the platform driver to start with and get the following error on
>> boot:
>> [3.60] usb 1-1: new full-speed USB device number 2 using 
>> ohci-platform
>> [3.872000] ohci-platform ohci-platform: frame counter not updating; 
>> disabled
>> [3.872000] ohci-platform ohci-platform: HC died; cleaning up
>>
>> So I dug a bit further and see that the SH7760 driver in the 2.6
>> kernel makes use of the 8KB shared memory for HCCA and ED/TD buffers.
>> After looking through the code for the 4.1 Kernel I am currently
>> trying to port to I think I need to write my own platform driver that
>> calls dma_declare_coherent_memory so that the OHCI driver uses this
>> 8KB shared memory.  Then set HCD_LOCAL_MEM in the hc_driver flags to
>> ensure that it uses dma_alloc_coherent.  In other words copy what the
>> ohci-sm501.c file is doing.  I just wanted to confirm that this is
>> what I should be doing or is there a better generic way of telling the
>> OHCI driver to use this 8KB shared memory.
>
> There isn't a generic way of doing it, but you could such a thing to
> the ohci-platform driver.  That would be preferable to adding a new,
> separate platform driver.
>
> Alan Stern
>
Hi Alan,

Thanks for the reply.  So would that entail looking for a second
IORESOURCE_MEM resource and taking this as the device's shared memory
and if present call dma_declare_coherent_memory?
Also how would I or in the HCD_LOCAL_MEM to flags to the hc_driver
struct that's in ohci-hcd.c?

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


Re: SuperH 7760 OHCI

2016-05-26 Thread Alan Stern
On Thu, 26 May 2016, Martin Townsend wrote:

> Hi,
> 
> I'm currently trying to get the USB Host working on the SH7760.  I
> tried the platform driver to start with and get the following error on
> boot:
> [3.60] usb 1-1: new full-speed USB device number 2 using ohci-platform
> [3.872000] ohci-platform ohci-platform: frame counter not updating; 
> disabled
> [3.872000] ohci-platform ohci-platform: HC died; cleaning up
> 
> So I dug a bit further and see that the SH7760 driver in the 2.6
> kernel makes use of the 8KB shared memory for HCCA and ED/TD buffers.
> After looking through the code for the 4.1 Kernel I am currently
> trying to port to I think I need to write my own platform driver that
> calls dma_declare_coherent_memory so that the OHCI driver uses this
> 8KB shared memory.  Then set HCD_LOCAL_MEM in the hc_driver flags to
> ensure that it uses dma_alloc_coherent.  In other words copy what the
> ohci-sm501.c file is doing.  I just wanted to confirm that this is
> what I should be doing or is there a better generic way of telling the
> OHCI driver to use this 8KB shared memory.

There isn't a generic way of doing it, but you could such a thing to 
the ohci-platform driver.  That would be preferable to adding a new, 
separate platform driver.

Alan Stern

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


SuperH 7760 OHCI

2016-05-26 Thread Martin Townsend
Hi,

I'm currently trying to get the USB Host working on the SH7760.  I
tried the platform driver to start with and get the following error on
boot:
[3.60] usb 1-1: new full-speed USB device number 2 using ohci-platform
[3.872000] ohci-platform ohci-platform: frame counter not updating; disabled
[3.872000] ohci-platform ohci-platform: HC died; cleaning up

So I dug a bit further and see that the SH7760 driver in the 2.6
kernel makes use of the 8KB shared memory for HCCA and ED/TD buffers.
After looking through the code for the 4.1 Kernel I am currently
trying to port to I think I need to write my own platform driver that
calls dma_declare_coherent_memory so that the OHCI driver uses this
8KB shared memory.  Then set HCD_LOCAL_MEM in the hc_driver flags to
ensure that it uses dma_alloc_coherent.  In other words copy what the
ohci-sm501.c file is doing.  I just wanted to confirm that this is
what I should be doing or is there a better generic way of telling the
OHCI driver to use this 8KB shared memory.

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