Firefly开源社区

12
发表新贴

rk3288 reload使用usb host2的问题

51

积分

0

威望

0

贡献

技术小白

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

回复

使用道具 举报

140

积分

0

威望

0

贡献

社区版主

Rank: 7Rank: 7Rank: 7

积分
140
发表于 2017-9-4 15:25:36     
试一下以下修改能不能实现:
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);
--
回复

使用道具 举报

51

积分

0

威望

0

贡献

技术小白

积分
51
发表于 2017-9-5 08:11:09     
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。其它的没有
回复

使用道具 举报

140

积分

0

威望

0

贡献

社区版主

Rank: 7Rank: 7Rank: 7

积分
140
发表于 2017-9-5 09:11:04     
查看一下是否有拉高引脚:
cat sys/kernel/debug/gpio:
gpio-13  (host2_drv_gpio      ) out hi
gpio-14  (host1_drv_gpio      ) out hi
还有就是硬件修改有没有正确。
回复

使用道具 举报

51

积分

0

威望

0

贡献

技术小白

积分
51
发表于 2017-9-5 09:30:34     
本帖最后由 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能看到
回复

使用道具 举报

140

积分

0

威望

0

贡献

社区版主

Rank: 7Rank: 7Rank: 7

积分
140
发表于 2017-9-5 09:46:38     
rk3288 reload中USB HOST2是接的HUB。改了一下,USB HOST2没有接HUB,而是跟USB HOST1一样直接用。

确认一下,host2和host1是接同一个引脚,host2没有接HUB,host1接HUB?
回复

使用道具 举报

51

积分

0

威望

0

贡献

技术小白

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

host1,2都没有接HUB
回复

使用道具 举报

140

积分

0

威望

0

贡献

社区版主

Rank: 7Rank: 7Rank: 7

积分
140
发表于 2017-9-5 10:12:59     
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))
回复

使用道具 举报

51

积分

0

威望

0

贡献

技术小白

积分
51
发表于 2017-9-5 10:32:05     
本帖最后由 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之类的字样。但认不到鼠标
回复

使用道具 举报

140

积分

0

威望

0

贡献

社区版主

Rank: 7Rank: 7Rank: 7

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

底板的原理图能不能提供一下?发我邮箱:lzs@t-chip.com.cn
回复

使用道具 举报

返回列表
12
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表