Hi, On Mon, Dec 13, 2010 at 01:01:52AM +0800, tom.leiming@xxxxxxxxx wrote:
From: Ming Lei <tom.leiming@xxxxxxxxx> This patch introduces MUSB_GLUE_TUSB_STYLE flag, which can be used to handle tusb dependent things by runtime method instead of previous static method. This patch handles tusb fifo style according to the flag of MUSB_GLUE_TUSB_STYLE passed from hw glue drivers.
I'm not sure I like this approach. I didn't want musb to have to know _where_ it's running. As long as platform sets up things correctly.
@@ -253,6 +253,8 @@ enum musb_g_ep0_state { /******************************** TYPES *************************************/ +#define MUSB_GLUE_TUSB_STYLE 0x0001 + /** * struct musb_platform_ops - Operations passed to musb_core by HW glue layer * @fifo_mode: which fifo_mode is taken by me @@ -297,9 +299,8 @@ struct musb_hw_ep { void __iomem *fifo; void __iomem *regs; -#ifdef CONFIG_USB_MUSB_TUSB6010 + /*Fixme: the following field is only used by tusb*/ void __iomem *conf; -#endif /* index in musb->endpoints[] */ u8 epnum; @@ -314,12 +315,13 @@ struct musb_hw_ep { struct dma_channel *tx_channel; struct dma_channel *rx_channel; -#ifdef CONFIG_USB_MUSB_TUSB6010 - /* TUSB has "asynchronous" and "synchronous" dma modes */ + /* + * TUSB has "asynchronous" and "synchronous" dma modes + * Fixme: the following three fields are only valid for TUSB. + * */ dma_addr_t fifo_async; dma_addr_t fifo_sync; void __iomem *fifo_sync_va; -#endif #ifdef CONFIG_USB_MUSB_HDRC_HCD void __iomem *target_regs; @@ -429,11 +431,10 @@ struct musb { void __iomem *ctrl_base; void __iomem *mregs; -#ifdef CONFIG_USB_MUSB_TUSB6010 + /*Fixme: the three fields below are only used by tusb*/ dma_addr_t async; dma_addr_t sync; void __iomem *sync_va; -#endif
fields which are used only by tusb should be moved to struct tusb_glue instead. That'll be a bit more work. -- balbi -- 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