[PATCH 2/4] ARM: OMAP2: Remove legacy USB FS support
Felipe Balbi
balbi at ti.com
Tue May 22 03:07:03 EDT 2012
On Mon, May 21, 2012 at 12:01:06PM -0700, Tony Lindgren wrote:
> The FS (Full Speed) USB controller is available on 2420 and 2430,
> but not being used.
>
> Out of the 2420 based boards only Nokia N8X0 are seeing active
> development and they have external HS (High Speed) TUSB controller.
> On omap 2430sdp there is MUSB HS controller, so there's no need
> to use the legacy USB FS controller.
>
> That leaves only H4 and Apollon boards that could use the FS USB
> controller. As both H4 and Apollon boards are old proprietary
> development boards, it's unlikely that we have any active
> developers working on those boards using the USB.
>
> So remove the FS USB support for omap2 machines. Patches are
> welcome if somebody wants to instead fix it all up to the
> current standards.
>
> Cc: linux-usb at vger.kernel.org
> Cc: Felipe Balbi <balbi at ti.com>
Acked-by: Felipe Balbi <balbi at ti.com>
> Cc: Kyungmin Park <kyungmin.park at samsung.com>
> Signed-off-by: Tony Lindgren <tony at atomide.com>
> ---
> arch/arm/mach-omap2/Kconfig | 2
> arch/arm/mach-omap2/Makefile | 3
> arch/arm/mach-omap2/board-2430sdp.c | 11 -
> arch/arm/mach-omap2/board-apollon.c | 18 --
> arch/arm/mach-omap2/board-h4.c | 13 -
> arch/arm/mach-omap2/usb-fs.c | 359 -----------------------------------
> 6 files changed, 406 deletions(-)
> delete mode 100644 arch/arm/mach-omap2/usb-fs.c
>
> diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
> index 0e4dd67..042f157 100644
> --- a/arch/arm/mach-omap2/Kconfig
> +++ b/arch/arm/mach-omap2/Kconfig
> @@ -64,13 +64,11 @@ config SOC_OMAP2420
> depends on ARCH_OMAP2
> default y
> select OMAP_DM_TIMER
> - select ARCH_OMAP_OTG
>
> config SOC_OMAP2430
> bool "OMAP2430 support"
> depends on ARCH_OMAP2
> default y
> - select ARCH_OMAP_OTG
>
> config SOC_OMAP3430
> bool "OMAP3430 support"
> diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
> index fa742f3..664224f 100644
> --- a/arch/arm/mach-omap2/Makefile
> +++ b/arch/arm/mach-omap2/Makefile
> @@ -244,9 +244,6 @@ obj-y += $(omap-flash-y) $(omap-flash-m)
> omap-hsmmc-$(CONFIG_MMC_OMAP_HS) := hsmmc.o
> obj-y += $(omap-hsmmc-m) $(omap-hsmmc-y)
>
> -
> -usbfs-$(CONFIG_ARCH_OMAP_OTG) := usb-fs.o
> -obj-y += $(usbfs-m) $(usbfs-y)
> obj-y += usb-musb.o
> obj-y += omap_phy_internal.o
>
> diff --git a/arch/arm/mach-omap2/board-2430sdp.c b/arch/arm/mach-omap2/board-2430sdp.c
> index 99ca6ba..6523aea 100644
> --- a/arch/arm/mach-omap2/board-2430sdp.c
> +++ b/arch/arm/mach-omap2/board-2430sdp.c
> @@ -254,16 +254,6 @@ static struct omap2_hsmmc_info mmc[] __initdata = {
> {} /* Terminator */
> };
>
> -static struct omap_usb_config sdp2430_usb_config __initdata = {
> - .otg = 1,
> -#ifdef CONFIG_USB_GADGET_OMAP
> - .hmc_mode = 0x0,
> -#elif defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
> - .hmc_mode = 0x1,
> -#endif
> - .pins[0] = 3,
> -};
> -
> #ifdef CONFIG_OMAP_MUX
> static struct omap_board_mux board_mux[] __initdata = {
> { .reg_offset = OMAP_MUX_TERMINATOR },
> @@ -280,7 +270,6 @@ static void __init omap_2430sdp_init(void)
> omap_serial_init();
> omap_sdrc_init(NULL, NULL);
> omap_hsmmc_init(mmc);
> - omap2_usbfs_init(&sdp2430_usb_config);
>
> omap_mux_init_signal("usb0hs_stp", OMAP_PULL_ENA | OMAP_PULL_UP);
> usb_musb_init(NULL);
> diff --git a/arch/arm/mach-omap2/board-apollon.c b/arch/arm/mach-omap2/board-apollon.c
> index 502c31e..519bcd3 100644
> --- a/arch/arm/mach-omap2/board-apollon.c
> +++ b/arch/arm/mach-omap2/board-apollon.c
> @@ -35,7 +35,6 @@
> #include <asm/mach/flash.h>
>
> #include <plat/led.h>
> -#include <plat/usb.h>
> #include <plat/board.h>
> #include "common.h"
> #include <plat/gpmc.h>
> @@ -253,13 +252,6 @@ out:
> clk_put(gpmc_fck);
> }
>
> -static struct omap_usb_config apollon_usb_config __initdata = {
> - .register_dev = 1,
> - .hmc_mode = 0x14, /* 0:dev 1:host1 2:disable */
> -
> - .pins[0] = 6,
> -};
> -
> static struct panel_generic_dpi_data apollon_panel_data = {
> .name = "apollon",
> };
> @@ -297,15 +289,6 @@ static void __init apollon_led_init(void)
> gpio_request_array(apollon_gpio_leds, ARRAY_SIZE(apollon_gpio_leds));
> }
>
> -static void __init apollon_usb_init(void)
> -{
> - /* USB device */
> - /* DEVICE_SUSPEND */
> - omap_mux_init_signal("mcbsp2_clkx.gpio_12", 0);
> - gpio_request_one(12, GPIOF_OUT_INIT_LOW, "USB suspend");
> - omap2_usbfs_init(&apollon_usb_config);
> -}
> -
> #ifdef CONFIG_OMAP_MUX
> static struct omap_board_mux board_mux[] __initdata = {
> { .reg_offset = OMAP_MUX_TERMINATOR },
> @@ -321,7 +304,6 @@ static void __init omap_apollon_init(void)
> apollon_init_smc91x();
> apollon_led_init();
> apollon_flash_init();
> - apollon_usb_init();
>
> /* REVISIT: where's the correct place */
> omap_mux_init_signal("sys_nirq", OMAP_PULL_ENA | OMAP_PULL_UP);
> diff --git a/arch/arm/mach-omap2/board-h4.c b/arch/arm/mach-omap2/board-h4.c
> index 876becf..ace2048 100644
> --- a/arch/arm/mach-omap2/board-h4.c
> +++ b/arch/arm/mach-omap2/board-h4.c
> @@ -32,7 +32,6 @@
> #include <asm/mach/arch.h>
> #include <asm/mach/map.h>
>
> -#include <plat/usb.h>
> #include <plat/board.h>
> #include "common.h"
> #include <plat/menelaus.h>
> @@ -329,17 +328,6 @@ static void __init h4_init_flash(void)
> h4_flash_resource.end = base + SZ_64M - 1;
> }
>
> -static struct omap_usb_config h4_usb_config __initdata = {
> - /* S1.10 OFF -- usb "download port"
> - * usb0 switched to Mini-B port and isp1105 transceiver;
> - * S2.POS3 = ON, S2.POS4 = OFF ... to enable battery charging
> - */
> - .register_dev = 1,
> - .pins[0] = 3,
> -/* .hmc_mode = 0x14,*/ /* 0:dev 1:host 2:disable */
> - .hmc_mode = 0x00, /* 0:dev|otg 1:disable 2:disable */
> -};
> -
> static struct at24_platform_data m24c01 = {
> .byte_len = SZ_1K / 8,
> .page_size = 16,
> @@ -381,7 +369,6 @@ static void __init omap_h4_init(void)
> ARRAY_SIZE(h4_i2c_board_info));
>
> platform_add_devices(h4_devices, ARRAY_SIZE(h4_devices));
> - omap2_usbfs_init(&h4_usb_config);
> omap_serial_init();
> omap_sdrc_init(NULL, NULL);
> h4_init_flash();
> diff --git a/arch/arm/mach-omap2/usb-fs.c b/arch/arm/mach-omap2/usb-fs.c
> deleted file mode 100644
> index 1481078..0000000
> --- a/arch/arm/mach-omap2/usb-fs.c
> +++ /dev/null
> @@ -1,359 +0,0 @@
> -/*
> - * Platform level USB initialization for FS USB OTG controller on omap1 and 24xx
> - *
> - * Copyright (C) 2004 Texas Instruments, Inc.
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License as published by
> - * the Free Software Foundation; either version 2 of the License, or
> - * (at your option) any later version.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> - * GNU General Public License for more details.
> - *
> - * You should have received a copy of the GNU General Public License
> - * along with this program; if not, write to the Free Software
> - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
> - */
> -
> -#include <linux/module.h>
> -#include <linux/kernel.h>
> -#include <linux/types.h>
> -#include <linux/errno.h>
> -#include <linux/init.h>
> -#include <linux/platform_device.h>
> -#include <linux/clk.h>
> -#include <linux/err.h>
> -
> -#include <asm/irq.h>
> -
> -#include <plat/usb.h>
> -#include <plat/board.h>
> -
> -#include "control.h"
> -#include "mux.h"
> -
> -#define INT_USB_IRQ_GEN INT_24XX_USB_IRQ_GEN
> -#define INT_USB_IRQ_NISO INT_24XX_USB_IRQ_NISO
> -#define INT_USB_IRQ_ISO INT_24XX_USB_IRQ_ISO
> -#define INT_USB_IRQ_HGEN INT_24XX_USB_IRQ_HGEN
> -#define INT_USB_IRQ_OTG INT_24XX_USB_IRQ_OTG
> -
> -#if defined(CONFIG_ARCH_OMAP2)
> -
> -#ifdef CONFIG_USB_GADGET_OMAP
> -
> -static struct resource udc_resources[] = {
> - /* order is significant! */
> - { /* registers */
> - .start = UDC_BASE,
> - .end = UDC_BASE + 0xff,
> - .flags = IORESOURCE_MEM,
> - }, { /* general IRQ */
> - .start = INT_USB_IRQ_GEN,
> - .flags = IORESOURCE_IRQ,
> - }, { /* PIO IRQ */
> - .start = INT_USB_IRQ_NISO,
> - .flags = IORESOURCE_IRQ,
> - }, { /* SOF IRQ */
> - .start = INT_USB_IRQ_ISO,
> - .flags = IORESOURCE_IRQ,
> - },
> -};
> -
> -static u64 udc_dmamask = ~(u32)0;
> -
> -static struct platform_device udc_device = {
> - .name = "omap_udc",
> - .id = -1,
> - .dev = {
> - .dma_mask = &udc_dmamask,
> - .coherent_dma_mask = 0xffffffff,
> - },
> - .num_resources = ARRAY_SIZE(udc_resources),
> - .resource = udc_resources,
> -};
> -
> -static inline void udc_device_init(struct omap_usb_config *pdata)
> -{
> - pdata->udc_device = &udc_device;
> -}
> -
> -#else
> -
> -static inline void udc_device_init(struct omap_usb_config *pdata)
> -{
> -}
> -
> -#endif
> -
> -#if defined(CONFIG_USB_OHCI_HCD) || defined(CONFIG_USB_OHCI_HCD_MODULE)
> -
> -/* The dmamask must be set for OHCI to work */
> -static u64 ohci_dmamask = ~(u32)0;
> -
> -static struct resource ohci_resources[] = {
> - {
> - .start = OMAP_OHCI_BASE,
> - .end = OMAP_OHCI_BASE + 0xff,
> - .flags = IORESOURCE_MEM,
> - },
> - {
> - .start = INT_USB_IRQ_HGEN,
> - .flags = IORESOURCE_IRQ,
> - },
> -};
> -
> -static struct platform_device ohci_device = {
> - .name = "ohci",
> - .id = -1,
> - .dev = {
> - .dma_mask = &ohci_dmamask,
> - .coherent_dma_mask = 0xffffffff,
> - },
> - .num_resources = ARRAY_SIZE(ohci_resources),
> - .resource = ohci_resources,
> -};
> -
> -static inline void ohci_device_init(struct omap_usb_config *pdata)
> -{
> - pdata->ohci_device = &ohci_device;
> -}
> -
> -#else
> -
> -static inline void ohci_device_init(struct omap_usb_config *pdata)
> -{
> -}
> -
> -#endif
> -
> -#if defined(CONFIG_USB_OTG) && defined(CONFIG_ARCH_OMAP_OTG)
> -
> -static struct resource otg_resources[] = {
> - /* order is significant! */
> - {
> - .start = OTG_BASE,
> - .end = OTG_BASE + 0xff,
> - .flags = IORESOURCE_MEM,
> - }, {
> - .start = INT_USB_IRQ_OTG,
> - .flags = IORESOURCE_IRQ,
> - },
> -};
> -
> -static struct platform_device otg_device = {
> - .name = "omap_otg",
> - .id = -1,
> - .num_resources = ARRAY_SIZE(otg_resources),
> - .resource = otg_resources,
> -};
> -
> -static inline void otg_device_init(struct omap_usb_config *pdata)
> -{
> - pdata->otg_device = &otg_device;
> -}
> -
> -#else
> -
> -static inline void otg_device_init(struct omap_usb_config *pdata)
> -{
> -}
> -
> -#endif
> -
> -static void omap2_usb_devconf_clear(u8 port, u32 mask)
> -{
> - u32 r;
> -
> - r = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0);
> - r &= ~USBTXWRMODEI(port, mask);
> - omap_ctrl_writel(r, OMAP2_CONTROL_DEVCONF0);
> -}
> -
> -static void omap2_usb_devconf_set(u8 port, u32 mask)
> -{
> - u32 r;
> -
> - r = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0);
> - r |= USBTXWRMODEI(port, mask);
> - omap_ctrl_writel(r, OMAP2_CONTROL_DEVCONF0);
> -}
> -
> -static void omap2_usb2_disable_5pinbitll(void)
> -{
> - u32 r;
> -
> - r = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0);
> - r &= ~(USBTXWRMODEI(2, USB_BIDIR_TLL) | USBT2TLL5PI);
> - omap_ctrl_writel(r, OMAP2_CONTROL_DEVCONF0);
> -}
> -
> -static void omap2_usb2_enable_5pinunitll(void)
> -{
> - u32 r;
> -
> - r = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0);
> - r |= USBTXWRMODEI(2, USB_UNIDIR_TLL) | USBT2TLL5PI;
> - omap_ctrl_writel(r, OMAP2_CONTROL_DEVCONF0);
> -}
> -
> -static u32 __init omap2_usb0_init(unsigned nwires, unsigned is_device)
> -{
> - u32 syscon1 = 0;
> -
> - omap2_usb_devconf_clear(0, USB_BIDIR_TLL);
> -
> - if (nwires == 0)
> - return 0;
> -
> - if (is_device)
> - omap_mux_init_signal("usb0_puen", 0);
> -
> - omap_mux_init_signal("usb0_dat", 0);
> - omap_mux_init_signal("usb0_txen", 0);
> - omap_mux_init_signal("usb0_se0", 0);
> - if (nwires != 3)
> - omap_mux_init_signal("usb0_rcv", 0);
> -
> - switch (nwires) {
> - case 3:
> - syscon1 = 2;
> - omap2_usb_devconf_set(0, USB_BIDIR);
> - break;
> - case 4:
> - syscon1 = 1;
> - omap2_usb_devconf_set(0, USB_BIDIR);
> - break;
> - case 6:
> - syscon1 = 3;
> - omap_mux_init_signal("usb0_vp", 0);
> - omap_mux_init_signal("usb0_vm", 0);
> - omap2_usb_devconf_set(0, USB_UNIDIR);
> - break;
> - default:
> - printk(KERN_ERR "illegal usb%d %d-wire transceiver\n",
> - 0, nwires);
> - }
> -
> - return syscon1 << 16;
> -}
> -
> -static u32 __init omap2_usb1_init(unsigned nwires)
> -{
> - u32 syscon1 = 0;
> -
> - omap2_usb_devconf_clear(1, USB_BIDIR_TLL);
> -
> - if (nwires == 0)
> - return 0;
> -
> - /* NOTE: board-specific code must set up pin muxing for usb1,
> - * since each signal could come out on either of two balls.
> - */
> -
> - switch (nwires) {
> - case 2:
> - /* NOTE: board-specific code must override this setting if
> - * this TLL link is not using DP/DM
> - */
> - syscon1 = 1;
> - omap2_usb_devconf_set(1, USB_BIDIR_TLL);
> - break;
> - case 3:
> - syscon1 = 2;
> - omap2_usb_devconf_set(1, USB_BIDIR);
> - break;
> - case 4:
> - syscon1 = 1;
> - omap2_usb_devconf_set(1, USB_BIDIR);
> - break;
> - case 6:
> - default:
> - printk(KERN_ERR "illegal usb%d %d-wire transceiver\n",
> - 1, nwires);
> - }
> -
> - return syscon1 << 20;
> -}
> -
> -static u32 __init omap2_usb2_init(unsigned nwires, unsigned alt_pingroup)
> -{
> - u32 syscon1 = 0;
> -
> - omap2_usb2_disable_5pinbitll();
> - alt_pingroup = 0;
> -
> - /* NOTE omap1 erratum: must leave USB2_UNI_R set if usb0 in use */
> - if (alt_pingroup || nwires == 0)
> - return 0;
> -
> - omap_mux_init_signal("usb2_dat", 0);
> - omap_mux_init_signal("usb2_se0", 0);
> - if (nwires > 2)
> - omap_mux_init_signal("usb2_txen", 0);
> - if (nwires > 3)
> - omap_mux_init_signal("usb2_rcv", 0);
> -
> - switch (nwires) {
> - case 2:
> - /* NOTE: board-specific code must override this setting if
> - * this TLL link is not using DP/DM
> - */
> - syscon1 = 1;
> - omap2_usb_devconf_set(2, USB_BIDIR_TLL);
> - break;
> - case 3:
> - syscon1 = 2;
> - omap2_usb_devconf_set(2, USB_BIDIR);
> - break;
> - case 4:
> - syscon1 = 1;
> - omap2_usb_devconf_set(2, USB_BIDIR);
> - break;
> - case 5:
> - /* NOTE: board-specific code must mux this setting depending
> - * on TLL link using DP/DM. Something must also
> - * set up OTG_SYSCON2.HMC_TLL{ATTACH,SPEED}
> - * 2420: hdq_sio.usb2_tllse0 or vlynq_rx0.usb2_tllse0
> - * 2430: hdq_sio.usb2_tllse0 or sdmmc2_dat0.usb2_tllse0
> - */
> -
> - syscon1 = 3;
> - omap2_usb2_enable_5pinunitll();
> - break;
> - case 6:
> - default:
> - printk(KERN_ERR "illegal usb%d %d-wire transceiver\n",
> - 2, nwires);
> - }
> -
> - return syscon1 << 24;
> -}
> -
> -void __init omap2_usbfs_init(struct omap_usb_config *pdata)
> -{
> - struct clk *ick;
> -
> - if (!cpu_is_omap24xx())
> - return;
> -
> - ick = clk_get(NULL, "usb_l4_ick");
> - if (IS_ERR(ick))
> - return;
> -
> - clk_enable(ick);
> - pdata->usb0_init = omap2_usb0_init;
> - pdata->usb1_init = omap2_usb1_init;
> - pdata->usb2_init = omap2_usb2_init;
> - udc_device_init(pdata);
> - ohci_device_init(pdata);
> - otg_device_init(pdata);
> - omap_otg_init(pdata);
> - clk_disable(ick);
> - clk_put(ick);
> -}
> -
> -#endif
>
--
balbi
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20120522/82ca019b/attachment-0001.sig>
More information about the linux-arm-kernel
mailing list