<十> USB 驱动的移植

拷贝 ohci.h 到 arch/arm/mach-s5pv210/include/mach/目录下
拷贝 usb-phy.h 到 arch/arm/mach-s5pv210/include/mach/目录下
拷贝 setup-usb-phy.c 到 arch/arm/mach-s5pv210/目录下
拷贝 regs-otg.h 到 arch/arm/plat-samsung/include/plat/目录下
拷贝 ohci-exynos.c 到 drivers/usb/host/目录下


1.修改 drivers/usb/host/ohci-hcd.c


#ifdef CONFIG_USB_OHCI_HCD_OMAP1
#include "ohci-omap.c"
#define OMAP1_PLATFORM_DRIVER ohci_hcd_omap_driver
#endif
上边添加如下代码:
#ifdef CONFIG_ARCH_S5PV210
#include "ohci-exynos.c"
#define PLATFORM_DRIVER exynos_ohci_driver
#endif


2.修改 drivers/usb/Kconfig


default y if ARCH_S3C2410
下添加:
default y if ARCH_S5PV210
修改 arch/arm/mach-s5pv210/Kconfig在
config S5PV210_SETUP_I2C1
bool
help
Common setup code for i2c bus 1.
下面添加如下代码:
config S5PV210_SETUP_USB_PHY
bool
help
Common setup code for the USB PHY controller

config MACH_SMDKV210
bool “SMDKV210”
下添加:
select S5P_DEV_USB_OHCI
select S5PV210_SETUP_USB_PHY


3.修改 arch/arm/plat-s5p/Kconfig


config S5P_DEV_USB_EHCI
bool
help
Compile in platform device definition for USB EHCI
下添加如下代码:
config S5P_DEV_USB_OHCI
bool
help
Compile in platform device definition for USB OHCI


4.修改 arch/arm/mach-s5pv210/Makefile

在文件最后添加
obj-$(CONFIG_S5PV210_SETUP_USB_PHY) += setup-usb-phy.o


5.修改 arch/arm/mach-s5pv210/include/mach/map.h:

添加如下代码:
#define S5PV210_PA_OHCI 0xEC300000
#define S5P_PA_OHCI S5PV210_PA_OHCI
#define S5P_SZ_OHCI SZ_1M


6.修改 arch/arm/plat-samsung/include/plat/map-base.h:

添加如下代码:#define S3C_VA_OTG S3C_ADDR(0x00E00000)
#define S3C_VA_OTGSFR S3C_ADDR(0x00F00000)


7.修改平台代码 arch/arm/mach-s5pv210/mach-smdkv210.c:

添加头文件:
#include <mach/ohci.h>
#include <mach/usb-phy.h>
添加如下代码:
static struct map_desc s5pv210_iodesc[] __initdata = {
{
.virtual = (unsigned long)S3C_VA_OTG,
.pfn = __phys_to_pfn(S5PV210_PA_HSOTG),
.length = SZ_1M,
.type = MT_DEVICE,
}, {
.virtual = (unsigned long)S3C_VA_OTGSFR,
.pfn = __phys_to_pfn(S5PV210_PA_HSPHY),
.length = SZ_1M,
.type = MT_DEVICE,
},
};
修改:
s5p_init_io(NULL, 0, S5P_VA_CHIPID);
为:
s5p_init_io(s5pv210_iodesc, ARRAY_SIZE(s5pv210_iodesc), S5P_VA_CHIPID);
添加代码:
/*USB OHCI*/
static struct s5p_ohci_platdata s5pv210_ohci_pdata;
static void __init s5pv210_ohci_init(void)
{
struct s5p_ohci_platdata *pdata = &s5pv210_ohci_pdata;
s5p_ohci_set_platdata(pdata);
}
/* USB OHCI Host Controller registration */
static struct resource s5p_ohci_resource[] = {
[0] = {
.start = S5P_PA_OHCI,
.end = S5P_PA_OHCI + S5P_SZ_OHCI - 1,
.flags = IORESOURCE_MEM,
},[1] = {
.start = IRQ_UHOST,
.end = IRQ_UHOST,
.flags = IORESOURCE_IRQ,
}
};
static u64 s5p_device_ohci_dmamask = 0xffffffffUL;
struct platform_device s5p_device_ohci = {
.name = "s5p-ohci",
.id = -1,
.num_resources = ARRAY_SIZE(s5p_ohci_resource),
.resource = s5p_ohci_resource,
.dev = {
.dma_mask = &s5p_device_ohci_dmamask,
.coherent_dma_mask = 0xffffffffUL
}
};
void __init s5p_ohci_set_platdata(struct s5p_ohci_platdata *pd)
{
struct s5p_ohci_platdata *npd;
npd = s3c_set_platdata(pd, sizeof(struct s5p_ohci_platdata),
&s5p_device_ohci);
if (!npd->phy_init)
npd->phy_init = s5p_usb_phy_init;
if (!npd->phy_exit)
npd->phy_exit = s5p_usb_phy_exit;
if (!npd->port_status)
npd->port_status = s5p_usb_host_port_status;
}
在机构体数组 smdkv210_devices[]中添加
&s5p_device_ohci,
在函数 smdkv210_machine_init 中添加
s5pv210_ohci_init();


8.配置内核

make menuconfig
Device Drivers --->SCSI device support --->
<*> SCSI device support
<*> SCSI disk support
<*> SCSI generic support
[*] USB support --->
<*> Support for Host-side USB
<*> OHCI HCD support
<*> USB Mass Storage support


9.编译内核并拷贝到 tftpboot 下

$ make zImage
$ cp arch/arm/boot/zImage /tftpboot


10.测试

启动目标板并在目标板上完成如下操作:
插入 U 盘显示如下
usb 1-1.4: new full-speed USB device number 5 using s5p-ohci
scsi2 : usb-storage 1-1.4:1.0
scsi 2:0:0:0: Direct-Access aigo Miniking 8.07 PQ: 0 ANSI: 2
sd 2:0:0:0: Attached scsi generic sg0 type 0
sd 2:0:0:0: [sda] 7886848 512-byte logical blocks: (4.03 GB/3.76 GiB)
sd 2:0:0:0: [sda] Write Protect is off
sd 2:0:0:0: [sda] No Caching mode page present
sd 2:0:0:0: [sda] Assuming drive cache: write through
sd 2:0:0:0: [sda] No Caching mode page present
sd 2:0:0:0: [sda] Assuming drive cache: write through
sda: sda1 (这里显示的内容是设备与分区)
sd 2:0:0:0: [sda] No Caching mode page present
sd 2:0:0:0: [sda] Assuming drive cache: write through
sd 2:0:0:0: [sda] Attached SCSI removable disk
usb 1-1.4: new full-speed USB device number 5 using s5p-ohci


11.在终端上执行挂载的设备与上边显示相关

# mount -t vfat /dev/sda1 /mnt
# ls
可以查看到 U 盘内容,即完成实验
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值