Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OS
U-Boot.Mirror
提交
668a6b45
U
U-Boot.Mirror
项目概览
OS
/
U-Boot.Mirror
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
U-Boot.Mirror
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
668a6b45
编写于
8月 12, 2010
作者:
W
Wolfgang Denk
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'master' of
git://git.denx.de/u-boot-usb
上级
5d89115c
842404ea
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
345 addition
and
2 deletion
+345
-2
arch/arm/include/asm/arch-omap3/am35x_def.h
arch/arm/include/asm/arch-omap3/am35x_def.h
+52
-0
common/cmd_usb.c
common/cmd_usb.c
+1
-1
drivers/usb/musb/Makefile
drivers/usb/musb/Makefile
+1
-0
drivers/usb/musb/am35x.c
drivers/usb/musb/am35x.c
+150
-0
drivers/usb/musb/am35x.h
drivers/usb/musb/am35x.h
+94
-0
drivers/usb/musb/musb_core.c
drivers/usb/musb/musb_core.c
+6
-0
drivers/usb/musb/musb_udc.c
drivers/usb/musb/musb_udc.c
+2
-0
include/configs/am3517_evm.h
include/configs/am3517_evm.h
+38
-0
include/usb.h
include/usb.h
+1
-1
未找到文件。
arch/arm/include/asm/arch-omap3/am35x_def.h
0 → 100644
浏览文件 @
668a6b45
/*
* am35x_def.h - TI's AM35x specific definitions.
*
* Based on arch/arm/include/asm/arch-omap3/cpu.h
*
* Author: Ajay Kumar Gupta <ajay.gupta@ti.com>
*
* Copyright (c) 2010 Texas Instruments Incorporated
*
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef _AM35X_DEF_H_
#define _AM35X_DEF_H_
#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
#include <asm/types.h>
#endif
/* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */
#ifndef __KERNEL_STRICT_NAMES
#ifndef __ASSEMBLY__
/* General register mappings of system control module */
#define AM35X_SCM_GEN_BASE 0x48002270
struct
am35x_scm_general
{
u32
res1
[
0xC4
];
/* 0x000 - 0x30C */
u32
devconf2
;
/* 0x310 */
u32
devconf3
;
/* 0x314 */
u32
res2
[
0x2
];
/* 0x318 - 0x31C */
u32
cba_priority
;
/* 0x320 */
u32
lvl_intr_clr
;
/* 0x324 */
u32
ip_sw_reset
;
/* 0x328 */
u32
ipss_clk_ctrl
;
/* 0x32C */
};
#define am35x_scm_general_regs ((struct am35x_scm_general *)AM35X_SCM_GEN_BASE)
#endif
/*__ASSEMBLY__ */
#endif
/* __KERNEL_STRICT_NAMES */
#endif
/* _AM35X_DEF_H_ */
common/cmd_usb.c
浏览文件 @
668a6b45
...
...
@@ -712,7 +712,7 @@ U_BOOT_CMD(
"usb part [dev] - print partition table of one or all USB storage"
" devices
\n
"
"usb read addr blk# cnt - read `cnt' blocks starting at block `blk#'
\n
"
" to memory address `addr'"
" to memory address `addr'
\n
"
"usb write addr blk# cnt - write `cnt' blocks starting at block `blk#'
\n
"
" from memory address `addr'"
);
...
...
drivers/usb/musb/Makefile
浏览文件 @
668a6b45
...
...
@@ -31,6 +31,7 @@ COBJS-$(CONFIG_USB_BLACKFIN) += blackfin_usb.o
COBJS-$(CONFIG_USB_DAVINCI)
+=
davinci.o
COBJS-$(CONFIG_USB_OMAP3)
+=
omap3.o
COBJS-$(CONFIG_USB_DA8XX)
+=
da8xx.o
COBJS-$(CONFIG_USB_AM35X)
+=
am35x.o
COBJS
:=
$
(
COBJS-y
)
SRCS
:=
$(COBJS:.o=.c)
...
...
drivers/usb/musb/am35x.c
0 → 100644
浏览文件 @
668a6b45
/*
* am35x.c - TI's AM35x platform specific usb wrapper functions.
*
* Author: Ajay Kumar Gupta <ajay.gupta@ti.com>
*
* Based on drivers/usb/musb/da8xx.c
*
* Copyright (c) 2010 Texas Instruments Incorporated
*
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <common.h>
#include "am35x.h"
/* MUSB platform configuration */
struct
musb_config
musb_cfg
=
{
.
regs
=
(
struct
musb_regs
*
)
AM35X_USB_OTG_CORE_BASE
,
.
timeout
=
AM35X_USB_OTG_TIMEOUT
,
.
musb_speed
=
0
,
};
/*
* Enable the USB phy
*/
static
u8
phy_on
(
void
)
{
u32
devconf2
;
u32
timeout
;
devconf2
=
readl
(
&
am35x_scm_general_regs
->
devconf2
);
devconf2
&=
~
(
DEVCONF2_RESET
|
DEVCONF2_PHYPWRDN
|
DEVCONF2_OTGPWRDN
|
DEVCONF2_OTGMODE
|
DEVCONF2_REFFREQ
|
DEVCONF2_PHY_GPIOMODE
);
devconf2
|=
DEVCONF2_SESENDEN
|
DEVCONF2_VBDTCTEN
|
DEVCONF2_PHY_PLLON
|
DEVCONF2_REFFREQ_13MHZ
|
DEVCONF2_DATPOL
;
writel
(
devconf2
,
&
am35x_scm_general_regs
->
devconf2
);
/* wait until the USB phy is turned on */
timeout
=
musb_cfg
.
timeout
;
while
(
timeout
--
)
if
(
readl
(
&
am35x_scm_general_regs
->
devconf2
)
&
DEVCONF2_PHYCKGD
)
return
1
;
/* USB phy was not turned on */
return
0
;
}
/*
* Disable the USB phy
*/
static
void
phy_off
(
void
)
{
u32
devconf2
;
/*
* Power down the on-chip PHY.
*/
devconf2
=
readl
(
&
am35x_scm_general_regs
->
devconf2
);
devconf2
&=
~
DEVCONF2_PHY_PLLON
;
devconf2
|=
DEVCONF2_PHYPWRDN
|
DEVCONF2_OTGPWRDN
;
writel
(
devconf2
,
&
am35x_scm_general_regs
->
devconf2
);
}
/*
* This function performs platform specific initialization for usb0.
*/
int
musb_platform_init
(
void
)
{
u32
revision
;
u32
sw_reset
;
/* global usb reset */
sw_reset
=
readl
(
&
am35x_scm_general_regs
->
ip_sw_reset
);
sw_reset
|=
(
1
<<
0
);
writel
(
sw_reset
,
&
am35x_scm_general_regs
->
ip_sw_reset
);
sw_reset
&=
~
(
1
<<
0
);
writel
(
sw_reset
,
&
am35x_scm_general_regs
->
ip_sw_reset
);
/* reset the controller */
writel
(
0x1
,
&
am35x_usb_regs
->
control
);
udelay
(
5000
);
/* start the on-chip usb phy and its pll */
if
(
phy_on
()
==
0
)
return
-
1
;
/* Returns zero if e.g. not clocked */
revision
=
readl
(
&
am35x_usb_regs
->
revision
);
if
(
revision
==
0
)
return
-
1
;
return
0
;
}
/*
* This function performs platform specific deinitialization for usb0.
*/
void
musb_platform_deinit
(
void
)
{
/* Turn off the phy */
phy_off
();
}
/*
* This function reads data from endpoint fifo for AM35x
* which supports only 32bit read operation.
*
* ep - endpoint number
* length - number of bytes to read from FIFO
* fifo_data - pointer to data buffer into which data is read
*/
__attribute__
((
weak
))
void
read_fifo
(
u8
ep
,
u32
length
,
void
*
fifo_data
)
{
u8
*
data
=
(
u8
*
)
fifo_data
;
u32
val
;
int
i
;
/* select the endpoint index */
writeb
(
ep
,
&
musbr
->
index
);
if
(
length
>
4
)
{
for
(
i
=
0
;
i
<
(
length
>>
2
);
i
++
)
{
val
=
readl
(
&
musbr
->
fifox
[
ep
]);
memcpy
(
data
,
&
val
,
4
);
data
+=
4
;
}
length
%=
4
;
}
if
(
length
>
0
)
{
val
=
readl
(
&
musbr
->
fifox
[
ep
]);
memcpy
(
data
,
&
val
,
length
);
}
}
drivers/usb/musb/am35x.h
0 → 100644
浏览文件 @
668a6b45
/*
* am35x.h - TI's AM35x platform specific usb wrapper definitions.
*
* Author: Ajay Kumar Gupta <ajay.gupta@ti.com>
*
* Based on drivers/usb/musb/da8xx.h
*
* Copyright (c) 2010 Texas Instruments Incorporated
*
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef __AM35X_USB_H__
#define __AM35X_USB_H__
#include <asm/arch/am35x_def.h>
#include "musb_core.h"
/* Base address of musb wrapper */
#define AM35X_USB_OTG_BASE 0x5C040000
/* Base address of musb core */
#define AM35X_USB_OTG_CORE_BASE (AM35X_USB_OTG_BASE + 0x400)
/* Timeout for AM35x usb module */
#define AM35X_USB_OTG_TIMEOUT 0x3FFFFFF
/*
* AM35x platform USB wrapper register overlay.
*/
struct
am35x_usb_regs
{
u32
revision
;
u32
control
;
u32
status
;
u32
emulation
;
u32
reserved0
[
1
];
u32
autoreq
;
u32
srpfixtime
;
u32
ep_intsrc
;
u32
ep_intsrcset
;
u32
ep_intsrcclr
;
u32
ep_intmsk
;
u32
ep_intmskset
;
u32
ep_intmskclr
;
u32
ep_intsrcmsked
;
u32
reserved1
[
1
];
u32
core_intsrc
;
u32
core_intsrcset
;
u32
core_intsrcclr
;
u32
core_intmsk
;
u32
core_intmskset
;
u32
core_intmskclr
;
u32
core_intsrcmsked
;
u32
reserved2
[
1
];
u32
eoi
;
u32
mop_sop_en
;
u32
reserved3
[
2
];
u32
txmode
;
u32
rxmode
;
u32
epcount_mode
;
};
#define am35x_usb_regs ((struct am35x_usb_regs *)AM35X_USB_OTG_BASE)
/* USB 2.0 PHY Control */
#define DEVCONF2_PHY_GPIOMODE (1 << 23)
#define DEVCONF2_OTGMODE (3 << 14)
#define DEVCONF2_SESENDEN (1 << 13)
/* Vsess_end comparator */
#define DEVCONF2_VBDTCTEN (1 << 12)
/* Vbus comparator */
#define DEVCONF2_REFFREQ_24MHZ (2 << 8)
#define DEVCONF2_REFFREQ_26MHZ (7 << 8)
#define DEVCONF2_REFFREQ_13MHZ (6 << 8)
#define DEVCONF2_REFFREQ (0xf << 8)
#define DEVCONF2_PHYCKGD (1 << 7)
#define DEVCONF2_VBUSSENSE (1 << 6)
#define DEVCONF2_PHY_PLLON (1 << 5)
/* override PLL suspend */
#define DEVCONF2_RESET (1 << 4)
#define DEVCONF2_PHYPWRDN (1 << 3)
#define DEVCONF2_OTGPWRDN (1 << 2)
#define DEVCONF2_DATPOL (1 << 1)
#endif
/* __AM35X_USB_H__ */
drivers/usb/musb/musb_core.c
浏览文件 @
668a6b45
...
...
@@ -141,6 +141,11 @@ void write_fifo(u8 ep, u32 length, void *fifo_data)
writeb
(
*
data
++
,
&
musbr
->
fifox
[
ep
]);
}
/*
* AM35x supports only 32bit read operations so
* use seperate read_fifo() function for it.
*/
#ifndef CONFIG_USB_AM35X
/*
* This function reads data from endpoint fifo
*
...
...
@@ -160,3 +165,4 @@ void read_fifo(u8 ep, u32 length, void *fifo_data)
while
(
length
--
)
*
data
++
=
readb
(
&
musbr
->
fifox
[
ep
]);
}
#endif
/* CONFIG_USB_AM35X */
drivers/usb/musb/musb_udc.c
浏览文件 @
668a6b45
...
...
@@ -57,6 +57,8 @@
#include "musb_core.h"
#if defined(CONFIG_USB_OMAP3)
#include "omap3.h"
#elif defined(CONFIG_USB_AM35X)
#include "am35x.h"
#elif defined(CONFIG_USB_DAVINCI)
#include "davinci.h"
#endif
...
...
include/configs/am3517_evm.h
浏览文件 @
668a6b45
...
...
@@ -99,6 +99,44 @@
#define CONFIG_OMAP3_MMC 1
#define CONFIG_DOS_PARTITION 1
/*
* USB configuration
* Enable CONFIG_MUSB_HCD for Host functionalities MSC, keyboard
* Enable CONFIG_MUSB_UDC for Device functionalities.
*/
#define CONFIG_USB_AM35X 1
#define CONFIG_MUSB_HCD 1
#ifdef CONFIG_USB_AM35X
#ifdef CONFIG_MUSB_HCD
#define CONFIG_CMD_USB
#define CONFIG_USB_STORAGE
#define CONGIG_CMD_STORAGE
#define CONFIG_CMD_FAT
#ifdef CONFIG_USB_KEYBOARD
#define CONFIG_SYS_USB_EVENT_POLL
#define CONFIG_PREBOOT "usb start"
#endif
/* CONFIG_USB_KEYBOARD */
#endif
/* CONFIG_MUSB_HCD */
#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 */
#endif
/* CONFIG_USB_AM35X */
/* commands to include */
#include <config_cmd_default.h>
...
...
include/usb.h
浏览文件 @
668a6b45
...
...
@@ -133,7 +133,7 @@ struct usb_device {
defined(CONFIG_USB_SL811HS) || defined(CONFIG_USB_ISP116X_HCD) || \
defined(CONFIG_USB_R8A66597_HCD) || defined(CONFIG_USB_DAVINCI) || \
defined(CONFIG_USB_OMAP3) || defined(CONFIG_USB_DA8XX) || \
defined(CONFIG_USB_BLACKFIN)
defined(CONFIG_USB_BLACKFIN)
|| defined(CONFIG_USB_AM35X)
int
usb_lowlevel_init
(
void
);
int
usb_lowlevel_stop
(
void
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录