RE: [PATCH] musb: Add new fifo table for a OMAP3 errata

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux