usb ohci driver porting

2023-12-10 20:09
文章标签 usb driver porting ohci

本文主要是介绍usb ohci driver porting,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.kernel
 Device Drivers  ---> 
 SCSI device support  --->  
 <*> SCSI device support
 <*> SCSI disk support
U盘用到了SCSI
USB大容量存储设备利用SCSI(Small Computer System Interface,小型计算机系统接口)协议
和主机系统通信
 [*] USB support  --->  
 <*>   Support for Host-side USB  
 <*>     USB Monitor
 <*>   USB Mass Storage support  
2.编译后下载
初始化错误
<3>s3c2410-ohci s3c2410-ohci: init err (00000000 0000)
 mach-smdk6410.c
 +#include <plat/regs-usb-hsotg-phy.h>
 +#ifdef CONFIG_USB_SUPPORT
+/* Initializes OTG Phy. to output 48M clock */
+void s3c_otg_phy_config(int enable) {
+ u32 val;
+
+ if (enable) {
+  __raw_writel(0x0, S3C_PHYPWR); /* Power up */
+
+  val = __raw_readl(S3C_PHYCLK);
+  val &= ~S3C_PHYCLK_CLKSEL_MASK;
+  __raw_writel(val, S3C_PHYCLK);
+
+  __raw_writel(0x1, S3C_RSTCON);
+  udelay(5);
+  __raw_writel(0x0, S3C_RSTCON); /* Finish the reset */
+  udelay(5);
+ } else {
+  __raw_writel(0x19, S3C_PHYPWR); /* Power down */
+ }
+}
+EXPORT_SYMBOL(s3c_otg_phy_config);
+#endif
+
+
----------------------------------------------------
drivers/usb/host/hoci-s3c2410.c
--- samsung/drivers/usb/host/ohci-s3c2410.c 2012-02-07 11:12:07.893644925 +0800
+++ android2.3_kernel_v1.01/drivers/usb/host/ohci-s3c2410.c 2011-05-23 17:04:07.000000000 +0800
@@ -25,10 +25,12 @@
 
 #define valid_port(idx) ((idx) == 1 || (idx) == 2)
 
+extern void s3c_otg_phy_config(int enable);
+
 /* clock device associated with the hcd */
 
 static struct clk *clk;
-static struct clk *usb_clk;
+static struct clk *otg_clk, *usb_clk;
 
 /* forward definitions */
 
@@ -47,6 +49,10 @@
 
  dev_dbg(&dev->dev, "s3c2410_start_hc:\n");
 
+ clk_enable(otg_clk);
+ s3c_otg_phy_config(1);
+
+
  clk_enable(usb_clk);
  mdelay(2);   /* let the bus clock stabilise */
 
@@ -79,6 +85,7 @@
 
  clk_disable(clk);
  clk_disable(usb_clk);
+ clk_disable(otg_clk);
 }
 
 /* ohci_s3c2410_hub_status_data
@@ -354,7 +361,7 @@
 
  hcd->rsrc_start = dev->resource[0].start;
  hcd->rsrc_len   = dev->resource[0].end - dev->resource[0].start + 1;
-    printk("------------%s----------\n", __func__);
+
  if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len, hcd_name)) {
   dev_err(&dev->dev, "request_mem_region failed\n");
   retval = -EBUSY;
@@ -375,6 +382,13 @@
   goto err_clk;
  }
 
+ otg_clk = clk_get(&dev->dev, "otg");
+ if (IS_ERR(otg_clk)) {
+  dev_err(&dev->dev, "cannot get otg clock\n");
+  retval = -ENOENT;
+  goto err_otg;
+ }
+
  s3c2410_start_hc(dev, hcd);
 
  hcd->regs = ioremap(hcd->rsrc_start, hcd->rsrc_len);
@@ -395,6 +409,10 @@
  err_ioremap:
  s3c2410_stop_hc(dev);
  iounmap(hcd->regs);
+
+ clk_put(otg_clk);
+
+ err_otg:
  clk_put(usb_clk);
 
  err_clk:
@@ -415,10 +433,8 @@
 {
  struct ohci_hcd *ohci = hcd_to_ohci (hcd);
  int ret;
-
  if ((ret = ohci_init(ohci)) < 0)
   return ret;
-
  if ((ret = ohci_run (ohci)) < 0) {
   err ("can't start %s", hcd->self.bus_name);
   ohci_stop (hcd);
3.mknod /dev/sda1 b 8 0
mount -t vfat /dev/sda1 /mnt
4.lsusb
lsusb
Bus 001 Device 001: ID 1d6b:0001
Bus 001 Device 002: ID 8644:800b
5.
[/sys/devices/platform/s3c-hsotg]# cat modalias
platform:s3c-hsotg
---------------------------------------------------------

这篇关于usb ohci driver porting的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/478227

相关文章

Usb Audio Device Descriptor(10) Hid Device

对于 Standard Interface Descriptor, 当 bInterfaceClass=0x03时,即为HID设备。Standard Interface Descriptor如下 struct usb_standard_interface_descriptor{U8 bLength; /*Size of this descriptor in bytes*/U8 bDescrip

Android rk3399 UAC(USB Audio)开发笔记

一、UAC有1.0和2.0,因Windows对2.0支持不好,我使用的是UAC1.0驱动 内核配置:CONFIG_USB_CONFIGFS_F_UAC1          ---这个宏配置无需物理codec,使用虚拟 alsa codec  驱动路径:"kernel\drivers\usb\gadget\function\f_uac1.c" 内核配置:CONFIG_USB_CONFIGFS_

SQLException: No Suitable Driver Found - 完美解决方法详解

🚨 SQLException: No Suitable Driver Found - 完美解决方法详解 🚨 **🚨 SQLException: No Suitable Driver Found - 完美解决方法详解 🚨****摘要 📝****引言 🎯****正文 📚****1. 问题概述 ❗****2. JDBC 驱动程序的工作原理 🔧****3. 错误的根本原因 🕵️**

多款式随身WiFi如何挑选,USB随身WiFi、无线电池随身WiFi、充电宝随身WiFi哪个好?优缺点分析!

市面上的随身WiFi款式多样琳琅满目,最具代表性的就是USB插电款、无线款和充电宝款。今天就来用一篇文章分析一下这三种款式的优缺点。 USB插电款 优点:便宜,无需充电,在有电源的地方可以随时随地插电使用,比如中兴的USB随身WiFi。 缺点:无电源的情况下,无法带出门使用,部分品牌考虑到这个问题,会配备一个充电仓,这个充电仓相对来说就有点累赘了。网速上也不太稳定,波动比较大。

基于FPGA的开源项目:FOC/SHA/USB/JPEG等

文章目录 [1. USB 1.1控制器](https://github.com/WangXuan95/FPGA-USB-Device)[2. FOC控制算法](https://github.com/WangXuan95/FPGA-FOC)[3. BSV高级硬件描述语言入门指南](https://github.com/WangXuan95/BSV_Tutorial_cn)[4. 基于XDMA的

SpringBoot启动报错Failed to determine a suitable driver class

两种解决办法 1.在Application类上加 ` @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) package com.example.demo3;import org.springframework.boot.SpringApplication;import org.springframewo

linux驱动模型 -- bus,device,device_driver之间的关系

Linux 设备驱动模型中,按照层次的组织结构,抽象成总线(struct bus_type),设备(struct device),驱动(struct device_driver)的层次组织形式,这是最原始的抽象结构,在此基础之上,根据不同类型的总线/设备/驱动,有形成了更高层次的组织结构,如 virtio总线(struct bus_type virtio_bus),virtio设备(

JavaBug系列- Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class load

JavaBug系列之Mysql驱动问题 Java医生一、关于错误信息二、如何解决问题 Java医生 本系列记录常见Bug,以及诊断过程和原因 Java/一对一零基础辅导/企业项目一对一辅导/日常Bug解决/代码讲解/毕业设计等 V:study_51ctofx 一、关于错误信息 APPLICATION FAILED TO START Description: Fai

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver问题

执行Class.forName(driverName)时报告此异常! Java项目中明明已经添加了MySQL-connector驱动,还是报java.lang.ClassNotFoundException: com.mysql.jdbc.Driver找不到类文件的异常, 排查了很久,原来是从jdbc.properties配置文件中读取的drivername末尾多了一个空格, 这种错误及其隐蔽,

[UVM]6.component driver monitor sequencer agent scoreboard env test

1.知识点回顾 (1)component需要有parent,因为参加构成组件,所以需要(继承); (2)object与component之间间隔report_object。 2.组件家族 (1)构建寄存器模型 :uvm_reg_predictor;激励器:driver/random_stimulus/sequencer_base/sequencer;监测器:monitor;