am3517_evm: switch to musb-new

Use new musb framework instead of the old one on AM3517_EVM.

Signed-off-by: Ilya Yanok <ilya.yanok@cogentembedded.com>
This commit is contained in:
Ilya Yanok 2012-11-06 13:48:28 +00:00 committed by Marek Vasut
parent 08fc71711a
commit 88919ff7bf
2 changed files with 88 additions and 19 deletions

View File

@ -25,12 +25,20 @@
#include <common.h>
#include <asm/io.h>
#include <asm/omap_musb.h>
#include <asm/arch/am35x_def.h>
#include <asm/arch/mem.h>
#include <asm/arch/mux.h>
#include <asm/arch/sys_proto.h>
#include <asm/arch/mmc_host_def.h>
#include <asm/arch/musb.h>
#include <asm/mach-types.h>
#include <asm/errno.h>
#include <linux/usb/ch9.h>
#include <linux/usb/gadget.h>
#include <linux/usb/musb.h>
#include <i2c.h>
#include <netdev.h>
#include "am3517evm.h"
DECLARE_GLOBAL_DATA_PTR;
@ -50,6 +58,52 @@ int board_init(void)
return 0;
}
#ifdef CONFIG_USB_MUSB_AM35X
static struct musb_hdrc_config musb_config = {
.multipoint = 1,
.dyn_fifo = 1,
.num_eps = 16,
.ram_bits = 12,
};
static struct omap_musb_board_data musb_board_data = {
.set_phy_power = am35x_musb_phy_power,
.clear_irq = am35x_musb_clear_irq,
.reset = am35x_musb_reset,
};
static struct musb_hdrc_platform_data musb_plat = {
#if defined(CONFIG_MUSB_HOST)
.mode = MUSB_HOST,
#elif defined(CONFIG_MUSB_GADGET)
.mode = MUSB_PERIPHERAL,
#else
#error "Please define either CONFIG_MUSB_HOST or CONFIG_MUSB_GADGET"
#endif
.config = &musb_config,
.power = 250,
.platform_ops = &am35x_ops,
.board_data = &musb_board_data,
};
static void am3517_evm_musb_init(void)
{
/*
* Set up USB clock/mode in the DEVCONF2 register.
* USB2.0 PHY reference clock is 13 MHz
*/
clrsetbits_le32(&am35x_scm_general_regs->devconf2,
CONF2_REFFREQ | CONF2_OTGMODE | CONF2_PHY_GPIOMODE,
CONF2_REFFREQ_13MHZ | CONF2_SESENDEN |
CONF2_VBDTCTEN | CONF2_DATPOL);
musb_register(&musb_plat, &musb_board_data,
(void *)AM35XX_IPSS_USBOTGSS_BASE);
}
#else
#define am3517_evm_musb_init() do {} while (0)
#endif
/*
* Routine: misc_init_r
* Description: Init i2c, ethernet, etc... (done here so udelay works)
@ -62,6 +116,8 @@ int misc_init_r(void)
dieid_num_r();
am3517_evm_musb_init();
return 0;
}
@ -83,3 +139,21 @@ int board_mmc_init(bd_t *bis)
return 0;
}
#endif
#if defined(CONFIG_USB_ETHER) && defined(CONFIG_MUSB_GADGET)
int board_eth_init(bd_t *bis)
{
int rv, n = 0;
rv = cpu_eth_init(bis);
if (rv > 0)
n += rv;
rv = usb_eth_initialize(bis);
if (rv > 0)
n += rv;
return n;
}
#endif

View File

@ -97,15 +97,16 @@
/*
* USB configuration
* Enable CONFIG_MUSB_HCD for Host functionalities MSC, keyboard
* Enable CONFIG_MUSB_UDC for Device functionalities.
* Enable CONFIG_MUSB_HOST for Host functionalities MSC, keyboard
* Enable CONFIG_MUSB_GADGET for Device functionalities.
*/
#define CONFIG_USB_AM35X 1
#define CONFIG_MUSB_HCD 1
#define CONFIG_USB_MUSB_AM35X
#define CONFIG_MUSB_HOST
#define CONFIG_MUSB_PIO_ONLY
#ifdef CONFIG_USB_AM35X
#ifdef CONFIG_USB_MUSB_AM35X
#ifdef CONFIG_MUSB_HCD
#ifdef CONFIG_MUSB_HOST
#define CONFIG_CMD_USB
#define CONFIG_USB_STORAGE
@ -117,21 +118,15 @@
#define CONFIG_PREBOOT "usb start"
#endif /* CONFIG_USB_KEYBOARD */
#endif /* CONFIG_MUSB_HCD */
#endif /* CONFIG_MUSB_HOST */
#ifdef CONFIG_MUSB_UDC
/* USB device configuration */
#define CONFIG_USB_DEVICE 1
#define CONFIG_USB_TTY 1
#define CONFIG_SYS_CONSOLE_IS_IN_ENV 1
/* Change these to suit your needs */
#define CONFIG_USBD_VENDORID 0x0451
#define CONFIG_USBD_PRODUCTID 0x5678
#define CONFIG_USBD_MANUFACTURER "Texas Instruments"
#define CONFIG_USBD_PRODUCT_NAME "AM3517EVM"
#endif /* CONFIG_MUSB_UDC */
#ifdef CONFIG_MUSB_GADGET
#define CONFIG_USB_GADGET_DUALSPEED
#define CONFIG_USB_ETHER
#define CONFIG_USB_ETH_RNDIS
#endif /* CONFIG_MUSB_GADGET */
#endif /* CONFIG_USB_AM35X */
#endif /* CONFIG_USB_MUSB_AM35X */
/* commands to include */
#include <config_cmd_default.h>