Firefly开源社区

标题: rk3288 reload使用usb host2的问题 [打印本页]

作者: r123qq    时间: 2017-9-4 11:46
标题: rk3288 reload使用usb host2的问题
rk3288 reload中USB HOST2是接的HUB。改了一下,USB HOST2没有接HUB,而是跟USB HOST1一样直接用。想着可以直接接USB键盘、鼠标、摄像头等。
软件需要在哪里改设置能让USB HOST2工作起来?
现在的默认软件配置下在USB HOST2插上鼠标后,
dmesg中会有:rk_ehci_hcd_enable,enable host controller. 但鼠标是不工作的


作者: Mr.Lee    时间: 2017-9-4 15:25
试一下以下修改能不能实现:
kernel/arch/arm/boot/dts/firefly-rk3288-reload.dts |    3 ++-
kernel/drivers/usb/dwc_otg_310/usbdev_rk32.c       |   27 +++++++++++++++++---
2 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/kernel/arch/arm/boot/dts/firefly-rk3288-reload.dts b/kernel/arch/arm/boot/dts/firefly-rk3288-reload.dts
index 59ef1f0..fc2ca54 100644
--- a/kernel/arch/arm/boot/dts/firefly-rk3288-reload.dts
+++ b/kernel/arch/arm/boot/dts/firefly-rk3288-reload.dts
@@ -171,7 +171,8 @@
        usb_control {
                compatible = "rockchip,rk3288-usb-control";

-                host_drv_gpio = <&gpio0 GPIO_B6 GPIO_ACTIVE_LOW>;
+                host1_drv_gpio = <&gpio0 GPIO_B6 GPIO_ACTIVE_HIGH>;
+                host2_drv_gpio = <&gpio0 GPIO_B5 GPIO_ACTIVE_HIGH>;
                otg_drv_gpio = <&gpio0 GPIO_B4 GPIO_ACTIVE_LOW>;

                rockchip,remote_wakeup;
diff --git a/kernel/drivers/usb/dwc_otg_310/usbdev_rk32.c b/kernel/drivers/usb/dwc_otg_310/usbdev_rk32.c
index 48926cb..cdbba1d 100755
--- a/kernel/drivers/usb/dwc_otg_310/usbdev_rk32.c
+++ b/kernel/drivers/usb/dwc_otg_310/usbdev_rk32.c
@@ -1004,22 +1004,41 @@ static int rk_usb_control_probe(struct platform_device *pdev)
                goto out;
        }

-        gpio = of_get_named_gpio(np, "host_drv_gpio", 0);
+        gpio = of_get_named_gpio(np, "host1_drv_gpio", 0);
        control_usb->host_gpios->gpio = gpio;

        if (!gpio_is_valid(gpio)) {
-                dev_err(&pdev->dev, "invalid host gpio%d\n", gpio);
+                dev_err(&pdev->dev, "invalid host1 gpio%d\n", gpio);
        } else {
-                err = devm_gpio_request(&pdev->dev, gpio, "host_drv_gpio");
+                err = devm_gpio_request(&pdev->dev, gpio, "host1_drv_gpio");
                if (err) {
                        dev_err(&pdev->dev,
-                                "failed to request GPIO%d for host_drv\n",
+                                "failed to request GPIO%d for host1_drv\n",
                                gpio);
                        ret = err;
                        goto out;
                }
                gpio_direction_output(control_usb->host_gpios->gpio, 1);
        }
+       
+     
+        gpio = of_get_named_gpio(np, "host2_drv_gpio", 0);
+        control_usb->host_gpios->gpio = gpio;
+
+        if (!gpio_is_valid(gpio)) {
+                dev_err(&pdev->dev, "invalid host2 gpio%d\n", gpio);
+        } else {
+                err = devm_gpio_request(&pdev->dev, gpio, "host2_drv_gpio");
+                if (err) {
+                        dev_err(&pdev->dev,
+                                "failed to request GPIO%d for host2_drv\n",
+                                gpio);
+                        ret = err;
+                        goto out;
+                }
+                gpio_direction_output(control_usb->host_gpios->gpio, 1);
+        }
+

        control_usb->otg_gpios =
            devm_kzalloc(&pdev->dev, sizeof(struct gpio), GFP_KERNEL);
--
作者: r123qq    时间: 2017-9-5 08:11
Mr.Lee 发表于 2017-9-4 15:25
试一下以下修改能不能实现:
kernel/arch/arm/boot/dts/firefly-rk3288-reload.dts |    3 ++-
kernel/d ...

您好,我按照您说的进行了修改,运行效果跟修改之前一样,USB HOST1插上鼠标可以正常识别并工作,但USB HOST2则在插上时dmesg提示:EHCI: rk_ehci_hcd_enable, enable host controller。其它的没有
作者: Mr.Lee    时间: 2017-9-5 09:11
查看一下是否有拉高引脚:
cat sys/kernel/debug/gpio:
gpio-13  (host2_drv_gpio      ) out hi
gpio-14  (host1_drv_gpio      ) out hi
还有就是硬件修改有没有正确。
作者: r123qq    时间: 2017-9-5 09:30
本帖最后由 r123qq 于 2017-9-5 09:50 编辑
Mr.Lee 发表于 2017-9-5 09:11
查看一下是否有拉高引脚:
cat sys/kernel/debug/gpio:
gpio-13  (host2_drv_gpio      ) out hi

我的USB HOST 1,2的供电开关是用同一个&gpio0 GPIO_B6,高有效。 我不太明白您让我修改的是有什么作用? 主要还是不太明白USB这一块的驱动的配置及用到的文件。&gpio0 GPIO_B6确认是拉高的。
您让我加的host1_drv_gpio,host2_drv_gpio好象就是申请IO并可以给它上电。
因为我的USB HOST1,2共用&gpio0 GPIO_B6,所以只要对它操作,USB HOST2应该也上电了。
所以USB HOST2的ECHI enable能看到

作者: Mr.Lee    时间: 2017-9-5 09:46
rk3288 reload中USB HOST2是接的HUB。改了一下,USB HOST2没有接HUB,而是跟USB HOST1一样直接用。

确认一下,host2和host1是接同一个引脚,host2没有接HUB,host1接HUB?
作者: r123qq    时间: 2017-9-5 09:51
Mr.Lee 发表于 2017-9-5 09:46
确认一下,host2和host1是接同一个引脚,host2没有接HUB,host1接HUB?

host1,2都没有接HUB
作者: Mr.Lee    时间: 2017-9-5 10:12
host1,2都没有接HUB

现在就是host2完全不能用了?试一下以下修改:
diff --git a/kernel/drivers/usb/dwc_otg_310/usbdev_rk32.c b/kernel/drivers/usb/dwc_otg_310/usbdev_rk32.c
index cdbba1d..655290e 100755
--- a/kernel/drivers/usb/dwc_otg_310/usbdev_rk32.c
+++ b/kernel/drivers/usb/dwc_otg_310/usbdev_rk32.c
@@ -480,7 +480,7 @@ static void rk_ehci_hw_init(void)
         * host0 PLL blocks remain powered.
         */
        control_usb->grf_uoc1_base->CON0 = (1 << 16) | 0;
-
+       control_usb->grf_uoc1_base->CON0 = 0x08000000;
        /* DRV_VBUS GPIO init */
        if (gpio_is_valid(control_usb->host_gpios->gpio)) {
                if (!gpio_get_value(control_usb->host_gpios->gpio))

作者: r123qq    时间: 2017-9-5 10:32
本帖最后由 r123qq 于 2017-9-5 10:40 编辑
Mr.Lee 发表于 2017-9-5 10:12
现在就是host2完全不能用了?试一下以下修改:
diff --git a/kernel/drivers/usb/dwc_otg_310/usbdev_rk ...

您好,按您的修改了,还是跟以前一样,
usb host2插上鼠标后,
dmesg中会出现消息: EHCI: rk_ehci_hcd_enable, enable host controller
但没有认到鼠标。
usb host2在插上鼠标后,会有消息提示。应该usb host2硬件是正常工作的。
但是不是软件上没把它配成host接口在用啊?
在RK3288,dtsi中关于usb2是如下所示:
usb2: usb@ff500000 {
                compatible = "rockchip,rk3288_rk_ehci_host";
                reg = <0xff500000 0x20000>;
                interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&clk_gates13 5>, <&clk_gates7 6>;
                clock-names = "clk_usbphy2", "hclk_usb2";
                resets = <&reset RK3288_SOFT_RST_USBHOST0_H>, <&reset RK3288_SOFT_RST_USBHOST0PHY>,
                                <&reset RK3288_SOFT_RST_USBHOST0C>, <&reset RK3288_SOFT_RST_USB_HOST0>;
                reset-names = "ehci_ahb", "ehci_phy", "ehci_controller", "ehci";
        };

好象本来就配的是EHCI,所以它认到的也是EHCI.
说一下我这边的硬件配置,使用rk3288 reload核心板,自己扩展的底板。只用到了3个USB, USB0 OTG,USB1 HOST, USB2 HOST.
跟参考电路图不一样的是USB HOST2,在参考电路图中,它是连接了一个USB HUB,我这边没有,连接方式跟USB1 HOST一样。
USB1,2共用一个驱动管脚&gpio0 GPIO_B6。
现在USB1工作正常,但USB2则不象一个HOST一样工作,插上鼠标后,能看到EHCI ENABLE之类的字样。但认不到鼠标

作者: Mr.Lee    时间: 2017-9-5 10:42
r123qq 发表于 2017-9-5 10:32
您好,按您的修改了,还是跟以前一样,
usb host2插上鼠标后,
dmesg中会出现消息: EHCI: rk_ehci_hcd ...

底板的原理图能不能提供一下?发我邮箱:lzs@t-chip.com.cn
作者: r123qq    时间: 2017-9-5 11:09
Mr.Lee 发表于 2017-9-5 10:42
底板的原理图能不能提供一下?发我邮箱:

已发您邮箱,请查收,多谢。
作者: jpchen    时间: 2017-9-5 14:54
请硬件上先确定VCC_HOST_5V和VCC_HOST_5V_A电压是否正常,还有硬件其他是否正常,同时软件上是否已经同步最新SDK
作者: ziven    时间: 2017-9-12 00:04
r123qq 发表于 2017-9-5 11:09
已发您邮箱,请查收,多谢。

您好!我也遇到该问题,请问你解决了吗?麻烦分享补丁
作者: ziven    时间: 2017-9-12 00:04
device not accepting address 6, error -71 我的usb host2 插鼠标也是不行,U盘也是不行
作者: ziven    时间: 2017-9-12 00:15
标题: rk3288 android5.1 usbhost2 插鼠标log,u盘完全无响应
本帖最后由 ziven 于 2017-9-12 00:16 编辑

   70.504835] vcodec_service: ff9a0000.vpu_service: power off...
[   70.504943] vcodec_service: done
[   72.495213] vcodec_service: ff9a0000.vpu_service: power on
[   73.653960] dwc_otg_hcd_enable, enable host controller
[   73.757622] Using Buffer DMA mode
[   73.757650] Periodic Transfer Interrupt Enhancement - disabled
[   73.757661] Multiprocessor Interrupt Enhancement - disabled
[   73.757671] OTG VER PARAM: 0, OTG VER FLAG: 0
[   73.757680] ^^^^^^^^^^^^^^^^^^Host Mode
[   73.801062] Init: Power Port (0)
[   74.096620] Indeed it is in host mode hprt0 = 00041901
[   74.273674] usb 3-1: new low-speed USB device number 6 using usb20_host
[   74.276113] Indeed it is in host mode hprt0 = 00041901
[   74.450902] usb 3-1: device descriptor read/64, error -71
[   74.560168] Indeed it is in host mode hprt0 = 00041901
[   74.735949] usb 3-1: device descriptor read/64, error -71
[   74.844656] Indeed it is in host mode hprt0 = 00041901
[   75.021604] usb 3-1: new low-speed USB device number 7 using usb20_host
[   75.023494] Indeed it is in host mode hprt0 = 00041901
[   75.198636] usb 3-1: device descriptor read/64, error -71
[   75.308667] Indeed it is in host mode hprt0 = 00041901
[   75.483930] usb 3-1: device descriptor read/64, error -71
[   75.591945] Indeed it is in host mode hprt0 = 00041901
[   75.769259] usb 3-1: new low-speed USB device number 8 using usb20_host
[   76.182314] usb 3-1: device not accepting address 8, error -71
[   76.182419] Indeed it is in host mode hprt0 = 00041901
[   76.359732] usb 3-1: new low-speed USB device number 9 using usb20_host
[   76.772992] usb 3-1: device not accepting address 9, error -71
[   76.773262] hub 3-0:1.0: unable to enumerate USB device on port 1
作者: goodman    时间: 2019-11-25 18:46
我这边也是这个现象一模一样,直接拉出了usb_host1的脚,没有接hub,现在接上面什么设备都没有。
只有打印,rk_ehci_hcd_enable,enable host controller.。
虽然是挖坟贴,但是很希望有谁解决了分享下。




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1