On 17/05/11 21:29, Alan Stern wrote: > On Tue, 17 May 2011, Jan Andersson wrote: > >> This patch adds support for big endian GRUSBHC UHCI controllers. >> The HCD bus glue will probe the register interface to determine >> the endianness of the controller. >> >> Tested on GR-LEON4-ITX board which has a controller with little endian >> interface and on custom LEON3 board with a BE controller. > > ... > >> --- a/drivers/usb/host/uhci-grlib.c >> +++ b/drivers/usb/host/uhci-grlib.c >> @@ -25,6 +25,22 @@ static int uhci_grlib_init(struct usb_hcd *hcd) >> { >> struct uhci_hcd *uhci = hcd_to_uhci(hcd); >> >> + /* Probe to see if we have a big or little endian controller. Bit 7 >> + * of PORTSC is always 1 and 15:13 are always zero, so we have: >> + * >> + * 1------- 000----- -------- 000----- => Little endian mode HC >> + * 000----- 1------- 000----- -------- => Big endian mode HC >> + * >> + * We also need to take into account that readl will byte swap. >> + * >> + * If we detect a big endian register interface we also assume that >> + * the controller uses big endian descriptors. >> + */ >> + if (!(uhci_readl(uhci, USBPORTSC1) & 0x80)) { >> + uhci->big_endian_mmio = 1; >> + uhci->big_endian_desc = 1; >> + } > > Sorry for not noticing this earlier. This is a 16-bit register, so > shouldn't you be accessing it with uhci_readw() instead of > uhci_readl()? The hardware allows reading both registers in one go with a 32-bit access so the code above works. I used a 32-bit access since I had used the same technique for a debug monitor where I was limited to 32-bit accesses. > > Then the comment could be shortened too, since only the first two byte > values on each line would be needed and the line about readl could go > away. You are right that the comment could be shortened, but readw also byteswaps so the remark about readl would just be changed to readw :-) > > Apart from this minor detail, the patch series is fine with me. You > can resubmit this last patch if you want to fix it up, and Greg can add > > Acked-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> > > to patches 1/5, 3/5, and 5/5. > Thank you. I want to test if I change to readw so that I don't make a mistake with all the swaps that take place. I will resubmit this after testing tomorrow - unless you can accept the use of readl() above. Best regards, Jan -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html