Move Tegra EHCI drive to correct place
Subsystems (4)
v2 cover Move Tegra EHCI drive to correct place
This moves out the Tegra EHCI driver from a platform specific directory to the standard driver/usb/host dir.
This is a preparation needed to share this driver between Tegra20 and Tegra30. No functional change in here, so Tegra30 is still not working.
Patch 6 could be a lot smaller if it were generated with -B, as GIT would detect that most of it is moving stuff over, but last time I did this it prevented git apply to work. So sorry for the big diff.
I think I incorporated all changes needed to reflect the review feedback I got on this last time.
I expect this series to go in through the Tegra tree.
Lucas Stach (7):
tegra: usb: set USB_PORTS_MAX to correct value
tegra: usb: make controller init functions more self contained
tegra: usb: remove unneeded function parameter
tegra: usb: move controller init into start_port
tegra: usb: various small cleanups
tegra: usb: move implementation into right directory
tegra: usb: move [start|stop]_port into ehci_hcd_[init|stop]
arch/arm/cpu/armv7/tegra20/Makefile | 1 -
arch/arm/cpu/armv7/tegra20/usb.c | 567 ---------------------
.../include/asm/{arch-tegra20 => arch-tegra}/usb.h | 22 -
arch/arm/include/asm/arch-tegra20/tegra.h | 1 -
arch/arm/include/asm/arch-tegra30/tegra.h | 2 +
board/nvidia/common/board.c | 2 +-
drivers/usb/host/ehci-tegra.c | 546 +++++++++++++++++++-
7 files changed, 533 insertions(+), 608 deletions(-)
delete mode 100644 arch/arm/cpu/armv7/tegra20/usb.c
rename arch/arm/include/asm/{arch-tegra20 => arch-tegra}/usb.h (89%)Signature · 1 line
1.8.0.2
PATCH v2 1/7 tegra: usb: set USB_PORTS_MAX to correct value
Both Tegra20 and Tegra30 have a max of 3 USB controllers.
--- arch/arm/cpu/armv7/tegra20/usb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/cpu/armv7/tegra20/usb.c +1 -1
@@ -44,7 +44,7 @@#endif enum { -USB_PORTS_MAX =4 ,/* Maximum ports we allow */ +USB_PORTS_MAX =3 ,/* Maximum ports we allow */ };/* Parameters we need for USB */
Signature · 1 line
1.8.0.2
PATCH v2 1/7 tegra: usb: set USB_PORTS_MAX to correct value
Quoted 3 lines · Lucas Stach
Both Tegra20 and Tegra30 have a max of 3 USB controllers.
Signed-off-by Lucas Stach <[email protected]>
Quoted 20 lines
--- arch/arm/cpu/armv7/tegra20/usb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)arch/arm/cpu/armv7/tegra20/usb.c +1
-2@@ -44,7 +44,7 @@#endif enum { -USB_PORTS_MAX =4 ,/* Maximum ports we allow */ +USB_PORTS_MAX =3 ,/* Maximum ports we allow */ };/* Parameters we need for USB */ --1.8.0.2
PATCH v2 2/7 tegra: usb: make controller init functions more self contained
In reply to Lucas StachThere is no need to pass around all those parameters. The init functions are able to easily extract all the needed setup info on their own.
---
To clarify why this is a good thing an excerpt from the first round of review:
"The intent of this patch is not really to save up on parameters passed, but to make it possible to later move out the controller initialization into the ehci_hcd_init function without having to save away this global state for later use[,thus avoid bloating the file global state]."
--- arch/arm/cpu/armv7/tegra20/usb.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-)
arch/arm/cpu/armv7/tegra20/usb.c +12 -12
@@ -198,11 +198,12 @@ void usbf_reset_controller(struct fdt_usb *config, struct usb_ctlr *usbctlr) }/* set up the UTMI USB controller with the parameters provided */ -static int init_utmi_usb_controller (struct fdt_usb *config, -struct usb_ctlr *usbctlr,const u32 timing[]) +static int init_utmi_usb_controller (struct fdt_usb *config) {u32 val;int loop_count; +const unsigned *timing; +struct usb_ctlr *usbctlr = config->reg;clock_enable (config->periph_id);
@@ -229,6 +230,8 @@ static int init_utmi_usb_controller(struct fdt_usb *config,* PLL Delay CONFIGURATION settings. The following parameters control * the bring up of the plls. */ + timing = usb_pll[clock_get_osc_freq ()]; + val =readl (&usbctlr->utmip_misc_cfg1);clrsetbits_le32 (&val,UTMIP_PLLU_STABLE_COUNT_MASK , timing[PARAM_STABLE_COUNT ] <<UTMIP_PLLU_STABLE_COUNT_SHIFT );
@@ -331,12 +334,12 @@ static int init_utmi_usb_controller(struct fdt_usb *config,#endif /* set up the ULPI USB controller with the parameters provided */ -static int init_ulpi_usb_controller (struct fdt_usb *config, -struct usb_ctlr *usbctlr) +static int init_ulpi_usb_controller (struct fdt_usb *config) {u32 val;int loop_count;struct ulpi_viewport ulpi_vp; +struct usb_ctlr *usbctlr = config->reg;/* set up ULPI reference clock on pllp_out4 */ clock_enable (PERIPH_ID_DEV2_OUT );
@@ -408,8 +411,7 @@ static int init_ulpi_usb_controller(struct fdt_usb *config, return 0; }#else -static int init_ulpi_usb_controller (struct fdt_usb *config, -struct usb_ctlr *usbctlr) +static int init_ulpi_usb_controller (struct fdt_usb *config) {printf ("No code to set up ULPI controller, please enable" "CONFIG_USB_ULPI and CONFIG_USB_ULPI_VIEWPORT" );
@@ -430,22 +432,20 @@ static void config_clock(const u32 timing[])* @param config USB port configuration * @return 0 if ok, -1 if error (too many ports) */ -static int add_port (struct fdt_usb *config,const u32 timing[]) +static int add_port (struct fdt_usb *config) { -struct usb_ctlr *usbctlr = config->reg; -if (port_count ==USB_PORTS_MAX ) {printf ("tegrausb: Cannot register more than %d ports\n" ,USB_PORTS_MAX );return -1 ; } -if (config->utmi &&init_utmi_usb_controller (config, usbctlr, timing)) { +if (config->utmi &&init_utmi_usb_controller (config)) {printf ("tegrausb: Cannot init port\n" );return -1 ; } -if (config->ulpi &&init_ulpi_usb_controller (config, usbctlr)) { +if (config->ulpi &&init_ulpi_usb_controller (config)) {printf ("tegrausb: Cannot init port\n" );return -1 ; }
@@ -558,7 +558,7 @@ int board_usb_init(const void *blob)return -1 ; } -if (add_port (&config, usb_pll[freq])) +if (add_port (&config))return -1 ;set_host_mode (&config); }
Signature · 1 line
1.8.0.2
PATCH v2 2/7 tegra: usb: make controller init functions more self contained
Hi Lucas,
Quoted 5 lines · Lucas Stach
There is no need to pass around all those parameters. The init functions are able to easily extract all the needed setup info on their own.
Signed-off-by Lucas Stach <[email protected]>
Minor comment: I think the commit message should include what you have below the --- since it provides the motivation for the commit.
Quoted 102 lines
---
To clarify why this is a good thing an excerpt from the first round of review:
"The intent of this patch is not really to save up on parameters passed, but to make it possible to later move out the controller initialization into theehci_hcd_initfunction without having to save away this global state for later use[,thus avoid bloating the file global state]."--- arch/arm/cpu/armv7/tegra20/usb.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-)arch/arm/cpu/armv7/tegra20/usb.c +12
-13@@ -198,11 +198,12 @@ void usbf_reset_controller(struct fdt_usb *config, struct usb_ctlr *usbctlr) }/* set up the UTMI USB controller with the parameters provided */ -static int init_utmi_usb_controller (struct fdt_usb *config, -struct usb_ctlr *usbctlr,const u32 timing[]) +static int init_utmi_usb_controller (struct fdt_usb *config) {u32 val;int loop_count; +const unsigned *timing; +struct usb_ctlr *usbctlr = config->reg;clock_enable (config->periph_id);@@ -229,6 +230,8 @@ static int init_utmi_usb_controller(struct fdt_usb *config,* PLL Delay CONFIGURATION settings. The following parameters control * the bring up of the plls. */ + timing = usb_pll[clock_get_osc_freq ()]; + val =readl (&usbctlr->utmip_misc_cfg1);clrsetbits_le32 (&val,UTMIP_PLLU_STABLE_COUNT_MASK , timing[PARAM_STABLE_COUNT ] <<UTMIP_PLLU_STABLE_COUNT_SHIFT );@@ -331,12 +334,12 @@ static int init_utmi_usb_controller(struct fdt_usb *config,#endif /* set up the ULPI USB controller with the parameters provided */ -static int init_ulpi_usb_controller (struct fdt_usb *config, -struct usb_ctlr *usbctlr) +static int init_ulpi_usb_controller (struct fdt_usb *config) {u32 val;int loop_count;struct ulpi_viewport ulpi_vp; +struct usb_ctlr *usbctlr = config->reg;/* set up ULPI reference clock on pllp_out4 */ clock_enable (PERIPH_ID_DEV2_OUT );@@ -408,8 +411,7 @@ static int init_ulpi_usb_controller(struct fdt_usb *config, return 0; }#else -static int init_ulpi_usb_controller (struct fdt_usb *config, -struct usb_ctlr *usbctlr) +static int init_ulpi_usb_controller (struct fdt_usb *config) {printf ("No code to set up ULPI controller, please enable" "CONFIG_USB_ULPI and CONFIG_USB_ULPI_VIEWPORT" );@@ -430,22 +432,20 @@ static void config_clock(const u32 timing[])* @param config USB port configuration * @return 0 if ok, -1 if error (too many ports) */ -static int add_port (struct fdt_usb *config,const u32 timing[]) +static int add_port (struct fdt_usb *config) { -struct usb_ctlr *usbctlr = config->reg; -if (port_count ==USB_PORTS_MAX ) {printf ("tegrausb: Cannot register more than %d ports\n" ,USB_PORTS_MAX );return -1 ; } -if (config->utmi &&init_utmi_usb_controller (config, usbctlr, timing)) { +if (config->utmi &&init_utmi_usb_controller (config)) {printf ("tegrausb: Cannot init port\n" );return -1 ; } -if (config->ulpi &&init_ulpi_usb_controller (config, usbctlr)) { +if (config->ulpi &&init_ulpi_usb_controller (config)) {printf ("tegrausb: Cannot init port\n" );return -1 ; }@@ -558,7 +558,7 @@ int board_usb_init(const void *blob)return -1 ; } -if (add_port (&config, usb_pll[freq])) +if (add_port (&config))return -1 ;set_host_mode (&config); } --1.8.0.2
PATCH v2 3/7 tegra: usb: remove unneeded function parameter
In reply to Lucas StachJust a dead parameter, never actually used.
--- arch/arm/cpu/armv7/tegra20/usb.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
arch/arm/cpu/armv7/tegra20/usb.c +2 -4
@@ -486,8 +486,7 @@ int tegrausb_stop_port(int portnum)return 0 ; } -int fdt_decode_usb (const void *blob,int node,unsigned osc_frequency_mhz, -struct fdt_usb *config) +int fdt_decode_usb (const void *blob,int node,struct fdt_usb *config) {const char *phy, *mode;
@@ -535,7 +534,6 @@ int fdt_decode_usb(const void *blob, int node, unsigned osc_frequency_mhz,int board_usb_init (const void *blob) {struct fdt_usb config; -unsigned osc_freq =clock_get_rate (CLOCK_ID_OSC );enum clock_osc_freq freq;int node_list[USB_PORTS_MAX ];int node, count, i;
@@ -552,7 +550,7 @@ int board_usb_init(const void *blob) node = node_list[i];if (!node)continue ; -if (fdt_decode_usb (blob, node, osc_freq, &config)) { +if (fdt_decode_usb (blob, node, &config)) {debug ("Cannot decode USB node %s\n" ,fdt_get_name (blob, node,NULL ));return -1 ;
Signature · 1 line
1.8.0.2
PATCH v2 4/7 tegra: usb: move controller init into start_port
In reply to Lucas StachThere is no need to init a USB controller before the upper layers indicate that they are actually going to use it.
board_usb_init now only parses the device tree and sets up the common pll.
---
v2:
- remember if port is already initialized and skip init in that case
--- arch/arm/cpu/armv7/tegra20/usb.c | 57 ++++++++++++++++++++-------------------- 1 file changed, 29 insertions(+), 28 deletions(-)
arch/arm/cpu/armv7/tegra20/usb.c +29 -28
@@ -79,6 +79,7 @@ struct fdt_usb { unsigned ulpi:1; /* 1 if port has external ULPI transceiver */ unsigned enabled:1; /* 1 to enable, 0 to disable */ unsigned has_legacy_mode:1; /* 1 if this port has legacy mode */ + unsigned initialized:1; /* has this port already been initialized? */enum dr_mode dr_mode;/* dual role mode */ enum periph_id periph_id;/* peripheral id */ struct fdt_gpio_state vbus_gpio;/* GPIO for vbus enable */
@@ -426,44 +427,36 @@ static void config_clock(const u32 timing[]) timing[PARAM_CPCON], timing[PARAM_LFCON]); } -/** -* Add a new USB port to the list of available ports. -* -* @param config USB port configuration -* @return 0 if ok, -1 if error (too many ports) -*/ -static int add_port (struct fdt_usb *config) +int tegrausb_start_port (int portnum,u32 *hccr,u32 *hcor) { -if (port_count ==USB_PORTS_MAX ) { -printf ("tegrausb: Cannot register more than %d ports\n" , -USB_PORTS_MAX ); +struct fdt_usb *config; +struct usb_ctlr *usbctlr; + +if (portnum >= port_count)return -1 ; - } + + config = &port[portnum]; + +/* skip init, if the port is already initialized */ +if (config->initialized) + goto success;if (config->utmi &&init_utmi_usb_controller (config)) { -printf ("tegrausb: Cannot init port\n" ); +printf ("tegrausb: Cannot init port %d\n" , portnum);return -1 ; }if (config->ulpi &&init_ulpi_usb_controller (config)) { -printf ("tegrausb: Cannot init port\n" ); +printf ("tegrausb: Cannot init port %d\n" , portnum);return -1 ; } - port[port_count++] = *config; - -return 0 ; -} - -int tegrausb_start_port (int portnum,u32 *hccr,u32 *hcor) -{ -struct usb_ctlr *usbctlr; +set_host_mode (config); -if (portnum >= port_count) -return -1 ; -set_host_mode (&port[portnum]); + config->initialized =1 ; - usbctlr = port[portnum].reg; +success: + usbctlr = config->reg; *hccr = (u32)&usbctlr->cap_length; *hcor = (u32)&usbctlr->usb_cmd;return 0 ;
@@ -483,6 +476,8 @@ int tegrausb_stop_port(int portnum)writel (2 , &usbctlr->usb_cmd);udelay (1000 ); + port[portnum].initialized =0 ; +return 0 ; }
@@ -546,6 +541,12 @@ int board_usb_init(const void *blob) count =fdtdec_find_aliases_for_id (blob,"usb" ,COMPAT_NVIDIA_TEGRA20_USB , node_list,USB_PORTS_MAX );for (i =0 ; i < count; i++) { +if (port_count ==USB_PORTS_MAX ) { +printf ("tegrausb: Cannot register more than %d ports\n" , +USB_PORTS_MAX ); +return -1 ; + } +debug ("USB %d: " , i); node = node_list[i];if (!node)
@@ -555,10 +556,10 @@ int board_usb_init(const void *blob) fdt_get_name(blob, node, NULL));return -1 ; } + config.initialized =0 ; -if (add_port (&config)) -return -1 ; -set_host_mode (&config); +/* add new USB port to the list of available ports */ + port[port_count++] = config; }return 0 ;
Signature · 1 line
1.8.0.2
PATCH v2 4/7 tegra: usb: move controller init into start_port
Quoted 6 lines · Lucas Stach
There is no need to init a USB controller before the upper layers indicate that they are actually going to use it.
board_usb_initnow only parses the device tree and sets up the common pll.Signed-off-by Lucas Stach <[email protected]>
PATCH v2 5/7 tegra: usb: various small cleanups
In reply to Lucas StachRemove unneeded headers, function prototype and stale comment, that doesn't match the actual codebase anymore.
--- arch/arm/cpu/armv7/tegra20/usb.c | 13 +------------ arch/arm/include/asm/arch-tegra20/usb.h | 3 --- 2 files changed, 1 insertion(+), 15 deletions(-)
arch/arm/cpu/armv7/tegra20/usb.c +1 -12
@@ -25,21 +25,15 @@#include <asm/io.h> #include <asm-generic/gpio.h> #include <asm/arch/clock.h> -#include <asm/arch/gpio.h> -#include <asm/arch/pinmux.h> -#include <asm/arch/tegra.h> #include <asm/arch/usb.h> #include <usb/ulpi.h> -#include <asm/arch-tegra/clk_rst.h> -#include <asm/arch-tegra/sys_proto.h> -#include <asm/arch-tegra/uart.h> #include <libfdt.h> #include <fdtdec.h> #ifdef CONFIG_USB_ULPI #ifndef CONFIG_USB_ULPI_VIEWPORT #error "To use CONFIG_USB_ULPI on Tegra Boards you have to also \ - define CONFIG_USB_ULPI_VIEWPORT" + define CONFIG_USB_ULPI_VIEWPORT"#endif #endif
@@ -191,11 +185,6 @@ void usbf_reset_controller(struct fdt_usb *config, struct usb_ctlr *usbctlr)/* Enable the UTMIP PHY */ if (config->utmi)setbits_le32 (&usbctlr->susp_ctrl,UTMIP_PHY_ENB ); - -/* -* TODO: where do we take the USB1 out of reset? The old code would -* take USB3 out of reset, but not USB1. This code doesn't do either. -*/ }/* set up the UTMI USB controller with the parameters provided */
arch/arm/include/asm/arch-tegra20/usb.h +0 -3
@@ -243,9 +243,6 @@ struct usb_ctlr {#define VBUS_VLD_STS (1 << 26) -/* Change the USB host port into host mode */ -void usb_set_host_mode (void ); -/* Setup USB on the board */ int board_usb_init (const void *blob);
Signature · 1 line
1.8.0.2
PATCH v2 5/7 tegra: usb: various small cleanups
Quoted 4 lines · Lucas Stach
Remove unneeded headers, function prototype and stale comment, that doesn't match the actual codebase anymore.
Signed-off-by Lucas Stach <[email protected]>
Quoted 61 lines
--- arch/arm/cpu/armv7/tegra20/usb.c | 13 +------------ arch/arm/include/asm/arch-tegra20/usb.h | 3 --- 2 files changed, 1 insertion(+), 15 deletions(-)arch/arm/cpu/armv7/tegra20/usb.c +1
-12@@ -25,21 +25,15 @@#include <asm/io.h> #include <asm-generic/gpio.h> #include <asm/arch/clock.h> -#include <asm/arch/gpio.h> -#include <asm/arch/pinmux.h> -#include <asm/arch/tegra.h> #include <asm/arch/usb.h> #include <usb/ulpi.h> -#include <asm/arch-tegra/clk_rst.h> -#include <asm/arch-tegra/sys_proto.h> -#include <asm/arch-tegra/uart.h> #include <libfdt.h> #include <fdtdec.h> #ifdef CONFIG_USB_ULPI #ifndef CONFIG_USB_ULPI_VIEWPORT #error "To use CONFIG_USB_ULPI on Tegra Boards you have to also \ - define CONFIG_USB_ULPI_VIEWPORT" + define CONFIG_USB_ULPI_VIEWPORT"#endif #endif @@ -191,11 +185,6 @@ void usbf_reset_controller(struct fdt_usb *config, struct usb_ctlr *usbctlr)/* Enable the UTMIP PHY */ if (config->utmi)setbits_le32 (&usbctlr->susp_ctrl,UTMIP_PHY_ENB ); - -/* -* TODO: where do we take the USB1 out of reset? The old code would -* take USB3 out of reset, but not USB1. This code doesn't do either. -*/ }/* set up the UTMI USB controller with the parameters provided */ arch/arm/include/asm/arch-tegra20/usb.h +0
-4@@ -243,9 +243,6 @@ struct usb_ctlr {#define VBUS_VLD_STS (1 << 26) -/* Change the USB host port into host mode */ -void usb_set_host_mode (void ); -/* Setup USB on the board */ int board_usb_init (const void *blob); --1.8.0.2
PATCH v2 6/7 tegra: usb: move implementation into right directory
In reply to Lucas StachThis moves the Tegra USB implementation into the drivers/usb/host directory. Note that this merges the old /arch/arm/cpu/armv7/tegra20/usb.c file into ehci-tegra.c. No code changes, just moving stuff around.
v2: While at it also move some defines and the usb.h header file to make usb driver usable for Tegra30.
NOTE: A lot more work is required to properly init the PHYs and PLL_U on Tegra30, this is just to make porting easier and it does no harm here.
---
arch/arm/cpu/armv7/tegra20/Makefile | 1 -
arch/arm/cpu/armv7/tegra20/usb.c | 555 ---------------------
.../include/asm/{arch-tegra20 => arch-tegra}/usb.h | 0
arch/arm/include/asm/arch-tegra20/tegra.h | 1 -
arch/arm/include/asm/arch-tegra30/tegra.h | 2 +
board/nvidia/common/board.c | 2 +-
drivers/usb/host/ehci-tegra.c | 535 +++++++++++++++++++-
7 files changed, 536 insertions(+), 560 deletions(-)
delete mode 100644 arch/arm/cpu/armv7/tegra20/usb.c
rename arch/arm/include/asm/{arch-tegra20 => arch-tegra}/usb.h (100%)arch/arm/cpu/armv7/tegra20/Makefile +0 -1
@@ -27,7 +27,6 @@ include $(TOPDIR)/config.mk LIB = $(obj)lib$(SOC).o -COBJS-$(CONFIG_USB_EHCI_TEGRA) += usb.o COBJS-$(CONFIG_PWM_TEGRA) += pwm.o COBJS-$(CONFIG_VIDEO_TEGRA) += display.o
arch/arm/cpu/armv7/tegra20/usb.c deleted +0 -555
555 lines not on this page · raw message
arch/arm/include/asm/arch-tegra/usb.h renamed from arch/arm/include/asm/arch-tegra20/usb.h +0 -0
arch/arm/include/asm/arch-tegra20/tegra.h +0 -1
@@ -29,7 +29,6 @@#include <asm/arch-tegra/tegra.h> #define TEGRA_USB1_BASE 0xC5000000 -#define TEGRA_USB3_BASE 0xC5008000#define BCT_ODMDATA_OFFSET 4068/* 12 bytes from end of BCT */
arch/arm/include/asm/arch-tegra30/tegra.h +2 -0
@@ -21,6 +21,8 @@#include <asm/arch-tegra/tegra.h> +#define TEGRA_USB1_BASE 0x7D000000 +#define BCT_ODMDATA_OFFSET 6116/* 12 bytes from end of BCT */ #endif /* TEGRA30_H */
board/nvidia/common/board.c +1 -1
@@ -46,7 +46,7 @@#include <asm/arch/emc.h> #endif #ifdef CONFIG_USB_EHCI_TEGRA -#include <asm/arch/usb.h> +#include <asm/arch-tegra/usb.h> #endif #include <i2c.h> #include <spi.h>
drivers/usb/host/ehci-tegra.c +533 -2
556 lines not on this page · raw message
Signature · 1 line
1.8.0.2
PATCH v2 6/7 tegra: usb: move implementation into right directory
Quoted 11 lines · Lucas Stach
This moves the Tegra USB implementation into the
drivers/usb/hostdirectory. Note that this merges the old /arch/arm/cpu/armv7/tegra20/usb.c file intoehci-tegra.c. No code changes, just moving stuff around.v2: While at it also move some defines and the
usb.hheader file to make usb driver usable for Tegra30.
NOTE: A lot more work is required to properly init the PHYs andPLL_Uon Tegra30, this is just to make porting easier and it does no harm here.Signed-off-by Lucas Stach <[email protected]>
I have to admit I am not sure what happened to the existing drivers/usb/host/ehci-tegra.c, but I'm sure you have it covered.
Quoted 12 lines
---
arch/arm/cpu/armv7/tegra20/Makefile | 1 -
arch/arm/cpu/armv7/tegra20/usb.c | 555 ---------------------
.../include/asm/{arch-tegra20 => arch-tegra}/usb.h | 0
arch/arm/include/asm/arch-tegra20/tegra.h | 1 -
arch/arm/include/asm/arch-tegra30/tegra.h | 2 +
board/nvidia/common/board.c | 2 +-
drivers/usb/host/ehci-tegra.c | 535 +++++++++++++++++++-
7 files changed, 536 insertions(+), 560 deletions(-)
delete mode 100644 arch/arm/cpu/armv7/tegra20/usb.c
rename arch/arm/include/asm/{arch-tegra20 => arch-tegra}/usb.h (100%)PATCH v2 7/7 tegra: usb: move [start|stop]_port into ehci_hcd_[init|stop]
In reply to Lucas StachThe ehci_hcd entry points were just calling into the Tegra USB functions. Now that they are in the same file we can just move over the implementation.
--- arch/arm/include/asm/arch-tegra/usb.h | 19 ------ drivers/usb/host/ehci-tegra.c | 119 +++++++++++++++------------------- 2 files changed, 51 insertions(+), 87 deletions(-)
arch/arm/include/asm/arch-tegra/usb.h +0 -19
@@ -246,23 +246,4 @@ struct usb_ctlr {/* Setup USB on the board */ int board_usb_init (const void *blob); -/** -* Start up the given port number (ports are numbered from 0 on each board). -* This returns values for the appropriate hccr and hcor addresses to use for -* USB EHCI operations. -* -* @param portnum port number to start -* @param hccr returns start address of EHCI HCCR registers -* @param hcor returns start address of EHCI HCOR registers -* @return 0 if ok, -1 on error (generally invalid port number) -*/ -int tegrausb_start_port (int portnum,u32 *hccr,u32 *hcor); - -/** -* Stop the current port -* -* @return 0 if ok, -1 if no port was active -*/ -int tegrausb_stop_port (int portnum); -#endif /* _TEGRA_USB_H_ */
drivers/usb/host/ehci-tegra.c +51 -68
143 lines not on this page · raw message
Signature · 1 line
1.8.0.2
PATCH v2 7/7 tegra: usb: move [start|stop]_port into ehci_hcd_[init|stop]
Quoted 5 lines · Lucas Stach
The
ehci_hcdentry points were just calling into the Tegra USB functions. Now that they are in the same file we can just move over the implementation.Signed-off-by Lucas Stach <[email protected]>
Quoted 5 lines
--- arch/arm/include/asm/arch-tegra/usb.h | 19 ------ drivers/usb/host/ehci-tegra.c | 119 +++++++++++++++------------------- 2 files changed, 51 insertions(+), 87 deletions(-)
v2 cover Move Tegra EHCI drive to correct place
In reply to Lucas StachLucas,
-----Original Message-----
From: Lucas Stach [mailto:dev at lynxeye.de]
Sent: Friday, January 25, 2013 7:41 AM
To: u-boot at lists.denx.de
Cc: Tom Warren; Marek Vasut; Simon Glass; Stephen Warren
Subject: [PATCH v2 0/7] Move Tegra EHCI drive to correct place
This moves out the Tegra EHCI driver from a platform specific directory to the standard driver/usb/host dir.
This is a preparation needed to share this driver between Tegra20 and Tegra30. No functional change in here, so Tegra30 is still not working.
Patch 6 could be a lot smaller if it were generated with -B, as GIT would detect that most of it is moving stuff over, but last time I did this it prevented git apply to work. So sorry for the big diff.
I think I incorporated all changes needed to reflect the review feedback I got on this last time.
I expect this series to go in through the Tegra tree.
I tried to apply this to u-boot-tegra/next and it needed some massaging to get it to apply cleanly. Minor stuff, but you'll need to rebase it on top of current u-boot-tegra/next (I just pushed a new version with my 'Move common clock code' patch and Allen's fix for the DTS sort patch. Sorry, but the Tegra repo is going to be fairly dynamic for the next few weeks.
Also, when I did get it applied and tried to ./MAKEALL -s tegra20 -s tegra30, I got the following warning on all T20 builds:
ehci-tegra.c: In function 'ehci_hcd_init':
ehci-tegra.c:565: warning: assignment makes pointer from integer without a cast ehci-tegra.c:566: warning: assignment makes pointer from integer without a cast
Also, it appears that arch-tegra20/usb.h is still hanging around (in my edited patch series, at any rate). Shouldn't the moved arch-tegra/usb.h be used exclusively? Removing arch-tegra20/usb.h causes fatal errors in nvidia/common/board.c. If it does need to exist, then it needs to live in arch-tegra30, also, so it'll be available when T30 gets USB turned on.
Tom
Lucas Stach (7):
tegra: usb: set USB_PORTS_MAX to correct value
tegra: usb: make controller init functions more self contained
tegra: usb: remove unneeded function parameter
tegra: usb: move controller init into start_port
tegra: usb: various small cleanups
tegra: usb: move implementation into right directory
tegra: usb: move [start|stop]_port into ehci_hcd_[init|stop]
arch/arm/cpu/armv7/tegra20/Makefile | 1 -
arch/arm/cpu/armv7/tegra20/usb.c | 567 ---------------------
.../include/asm/{arch-tegra20 => arch-tegra}/usb.h | 22 -
arch/arm/include/asm/arch-tegra20/tegra.h | 1 -
arch/arm/include/asm/arch-tegra30/tegra.h | 2 +
board/nvidia/common/board.c | 2 +-
drivers/usb/host/ehci-tegra.c | 546 +++++++++++++++++++-
7 files changed, 533 insertions(+), 608 deletions(-) delete mode 100644 arch/arm/cpu/armv7/tegra20/usb.c rename arch/arm/include/asm/{arch-tegra20 => arch-tegra}/usb.h (89%)--
1.8.0.2
--
nvpublic
v2 cover Move Tegra EHCI drive to correct place
Hello Tom,
Am Freitag, den 25.01.2013, 08:07 -0800 schrieb Tom Warren:
Quoted 2 lines
I tried to apply this to u-boot-tegra/next and it needed some massaging to get it to apply cleanly. Minor stuff, but you'll need to rebase it on top of current u-boot-tegra/next (I just pushed a new version with my 'Move common clock code' patch and Allen's fix for the DTS sort patch. Sorry, but the Tegra repo is going to be fairly dynamic for the next few weeks.
Ok, I'll wait for some comments on the actual code, then repost a rebased version.
Quoted 6 lines
Also, when I did get it applied and tried to ./MAKEALL -s tegra20 -s tegra30, I got the following warning on all T20 builds:
ehci-tegra.c: In function 'ehci_hcd_init':
ehci-tegra.c:565: warning: assignment makes pointer from integer without a cast ehci-tegra.c:566: warning: assignment makes pointer from integer without a cast
Ah damn, forgot to squash the fix in the last patch.
Quoted 1 line
Also, it appears that
arch-tegra20/usb.his still hanging around (in my edited patch series, at any rate). Shouldn't the movedarch-tegra/usb.hbe used exclusively? Removingarch-tegra20/usb.hcauses fatal errors innvidia/common/board.c. If it does need to exist, then it needs to live in arch-tegra30, also, so it'll be available when T30 gets USB turned on.
I don't see why this is happening. The shortlog points at git picking up the rename at the in the wrong dir, I'll look into this when reposting. But the change to nvidia/common/board.c to use the new include dir is definitely included in patch 6.
Regards,
Lucas
v2 cover Move Tegra EHCI drive to correct place
In reply to Lucas StachDear Lucas Stach,
Quoted 6 lines
This moves out the Tegra EHCI driver from a platform specific directory to the standard driver/usb/host dir.
This is a preparation needed to share this driver between Tegra20 and Tegra30. No functional change in here, so Tegra30 is still not working.
Quoted 8 lines
Patch 6 could be a lot smaller if it were generated with -B, as GIT would detect that most of it is moving stuff over, but last time I did this it prevented git apply to work. So sorry for the big diff.
I think I incorporated all changes needed to reflect the review feedback I got on this last time.
I expect this series to go in through the Tegra tree.
Last two don't apply, I applied first five and pushed.
Best regards,
Marek Vasut
v2 cover Move Tegra EHCI drive to correct place
Quoted 12 lines · Marek Vasut
Dear Lucas Stach,
Quoted 10 lines
This moves out the Tegra EHCI driver from a platform specific directory to the standard driver/usb/host dir.
This is a preparation needed to share this driver between Tegra20 and Tegra30. No functional change in here, so Tegra30 is still not working.
Patch 6 could be a lot smaller if it were generated with -B, as GIT would detect that most of it is moving stuff over, but last time I did this it prevented git apply to work. So sorry for the big diff.
Quoted 6 lines
Quoted 4 lines
I think I incorporated all changes needed to reflect the review feedback I got on this last time.
I expect this series to go in through the Tegra tree.
Last two don't apply, I applied first five and pushed.
Marek, what about any conflicts this will cause with other patches in the Tegra tree? Especially since Lucas *explicitly* stated that he expected the series to go through the Tegra tree, I expect that some co-ordination is required here
v2 cover Move Tegra EHCI drive to correct place
Dear Stephen Warren,
Quoted 16 lines · Marek Vasut
Quoted 15 lines
Dear Lucas Stach,
Quoted 13 lines
This moves out the Tegra EHCI driver from a platform specific directory to the standard driver/usb/host dir.
This is a preparation needed to share this driver between Tegra20 and Tegra30. No functional change in here, so Tegra30 is still not working.
Patch 6 could be a lot smaller if it were generated with -B, as GIT would detect that most of it is moving stuff over, but last time I did this it prevented git apply to work. So sorry for the big diff.
I think I incorporated all changes needed to reflect the review feedback I got on this last time.
Quoted 8 lines
Quoted 3 lines
Quoted 1 line
I expect this series to go in through the Tegra tree.
Last two don't apply, I applied first five and pushed.
Marek, what about any conflicts this will cause with other patches in the Tegra tree? Especially since Lucas *explicitly* stated that he expected the series to go through the Tegra tree, I expect that some co-ordination is required here
Ok, I can drop them from -USB, will you pick them ? I must have missed that part.
If nothing else, 01-05 build-test cleanly ;-)
Best regards,
Marek Vasut
v2 cover Move Tegra EHCI drive to correct place
Quoted 22 lines · Marek Vasut
Dear Stephen Warren,
Quoted 20 lines · Marek Vasut
Quoted 18 lines
Dear Lucas Stach,
Quoted 6 lines
This moves out the Tegra EHCI driver from a platform specific directory to the standard driver/usb/host dir.
This is a preparation needed to share this driver between Tegra20 and Tegra30. No functional change in here, so Tegra30 is still not working.
Quoted 8 lines
Patch 6 could be a lot smaller if it were generated with -B, as GIT would detect that most of it is moving stuff over, but last time I did this it prevented git apply to work. So sorry for the big diff.
I think I incorporated all changes needed to reflect the review feedback I got on this last time.
I expect this series to go in through the Tegra tree.
Last two don't apply, I applied first five and pushed.
Quoted 7 lines
Quoted 4 lines
Marek, what about any conflicts this will cause with other patches in the Tegra tree? Especially since Lucas *explicitly* stated that he expected the series to go through the Tegra tree, I expect that some co-ordination is required here
Ok, I can drop them from -USB, will you pick them ? I must have missed that part.
That's a question for Tom.
v2 cover Move Tegra EHCI drive to correct place
In reply to Marek VasutMarek,
Quoted 30 lines
-----Original Message-----
From: Marek Vasut [mailto:marex at denx.de]
Sent: Sunday, January 27, 2013 4:49 PM
To: Stephen Warren
Cc: Lucas Stach; u-boot at lists.denx.de; Tom Warren; Simon Glass
Subject: Re: [PATCH v2 0/7] Move Tegra EHCI drive to correct placeDear Stephen Warren,
Quoted 8 lines · Marek Vasut
Quoted 7 lines
Dear Lucas Stach,
Quoted 5 lines
This moves out the Tegra EHCI driver from a platform specific directory to the standard driver/usb/host dir.
This is a preparation needed to share this driver between Tegra20 and Tegra30. No functional change in here, so Tegra30 is still not
working.
Quoted 12 lines
Quoted 11 lines
Quoted 9 lines
Patch 6 could be a lot smaller if it were generated with -B, as GIT would detect that most of it is moving stuff over, but last time I did this it prevented git apply to work. So sorry for the big diff.
I think I incorporated all changes needed to reflect the review feedback I got on this last time.
I expect this series to go in through the Tegra tree.
Last two don't apply, I applied first five and pushed.
Quoted 7 lines
Quoted 4 lines
Marek, what about any conflicts this will cause with other patches in the Tegra tree? Especially since Lucas *explicitly* stated that he expected the series to go through the Tegra tree, I expect that some co-ordination is required here
Ok, I can drop them from -USB, will you pick them ? I must have missed that part.
These will go thru the Tegra tree when they've gotten some review time (Simon just Acked some of them), and when Lucas fixes the build warning in patch 6. I'm waiting on a V2 patchset from Lucas, which I'd have thought would be clear from even a cursory read of the threads & reviews for this series.
Tom
Quoted 5 lines
If nothing else, 01-05 build-test cleanly ;-)
Best regards,
Marek Vasut
--
nvpublic