Gupta, Ajay Kumar wrote: > > We have observed MSC data read corruption when USB LAN device is > also connected and it's interface is up. > > Silicon team has confirmed an errata where in all the active > transfers should use FIFO space either in first 8K or next 8K. > So far we have observed the issue in above use case scenario. > > As a workaround to it, adding a new FIFO config (5) fitting well > within first 8K which can be used for such use cases. > > Signed-off-by: Ajay Kumar Gupta <ajay.gupta@xxxxxx> Long term, do you think the board files should define the the FIFO configuration table that they want to use (instead of having different options in musb_core.c)? For now, this change should be okay (although I don't see a user now. Or maybe you pass this as a module parameter). FWIW, this patch is: Acked-by: Anand Gadiyar <gadiyar@xxxxxx> > --- > drivers/usb/musb/musb_core.c | 34 ++++++++++++++++++++++++++++++++++ > 1 files changed, 34 insertions(+), 0 deletions(-) > > diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c > index bfe08f4..0c8f5ec 100644 > --- a/drivers/usb/musb/musb_core.c > +++ b/drivers/usb/musb/musb_core.c > @@ -1095,6 +1095,36 @@ static struct fifo_cfg __initdata mode_4_cfg[] = { > { .hw_ep_num = 15, .style = FIFO_RXTX, .maxpacket = 1024, }, > }; > > +/* mode 5 - fits in 8KB */ > +static struct fifo_cfg __initdata mode_5_cfg[] = { > +{ .hw_ep_num = 1, .style = FIFO_TX, .maxpacket = 512, }, > +{ .hw_ep_num = 1, .style = FIFO_RX, .maxpacket = 512, }, > +{ .hw_ep_num = 2, .style = FIFO_TX, .maxpacket = 512, }, > +{ .hw_ep_num = 2, .style = FIFO_RX, .maxpacket = 512, }, > +{ .hw_ep_num = 3, .style = FIFO_TX, .maxpacket = 512, }, > +{ .hw_ep_num = 3, .style = FIFO_RX, .maxpacket = 512, }, > +{ .hw_ep_num = 4, .style = FIFO_TX, .maxpacket = 512, }, > +{ .hw_ep_num = 4, .style = FIFO_RX, .maxpacket = 512, }, > +{ .hw_ep_num = 5, .style = FIFO_TX, .maxpacket = 512, }, > +{ .hw_ep_num = 5, .style = FIFO_RX, .maxpacket = 512, }, > +{ .hw_ep_num = 6, .style = FIFO_TX, .maxpacket = 32, }, > +{ .hw_ep_num = 6, .style = FIFO_RX, .maxpacket = 32, }, > +{ .hw_ep_num = 7, .style = FIFO_TX, .maxpacket = 32, }, > +{ .hw_ep_num = 7, .style = FIFO_RX, .maxpacket = 32, }, > +{ .hw_ep_num = 8, .style = FIFO_TX, .maxpacket = 32, }, > +{ .hw_ep_num = 8, .style = FIFO_RX, .maxpacket = 32, }, > +{ .hw_ep_num = 9, .style = FIFO_TX, .maxpacket = 32, }, > +{ .hw_ep_num = 9, .style = FIFO_RX, .maxpacket = 32, }, > +{ .hw_ep_num = 10, .style = FIFO_TX, .maxpacket = 32, }, > +{ .hw_ep_num = 10, .style = FIFO_RX, .maxpacket = 32, }, > +{ .hw_ep_num = 11, .style = FIFO_TX, .maxpacket = 32, }, > +{ .hw_ep_num = 11, .style = FIFO_RX, .maxpacket = 32, }, > +{ .hw_ep_num = 12, .style = FIFO_TX, .maxpacket = 32, }, > +{ .hw_ep_num = 12, .style = FIFO_RX, .maxpacket = 32, }, > +{ .hw_ep_num = 13, .style = FIFO_RXTX, .maxpacket = 512, }, > +{ .hw_ep_num = 14, .style = FIFO_RXTX, .maxpacket = 1024, }, > +{ .hw_ep_num = 15, .style = FIFO_RXTX, .maxpacket = 1024, }, > +}; > > /* > * configure a fifo; for non-shared endpoints, this may be called > @@ -1210,6 +1240,10 @@ static int __init ep_config_from_table(struct musb *musb) > cfg = mode_4_cfg; > n = ARRAY_SIZE(mode_4_cfg); > break; > + case 5: > + cfg = mode_5_cfg; > + n = ARRAY_SIZE(mode_5_cfg); > + break; > } > > printk(KERN_DEBUG "%s: setup fifo_mode %d\n", > -- > 1.6.2.4 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html