1,修改/kernel/arch/arm/boot/dts/rk3288-box.dts
- usb_control {
- compatible = "rockchip,rk3288-usb-control";
- host_drv_gpio = <&gpio0 GPIO_B6 GPIO_ACTIVE_LOW>;//modify by jiangdou
- otg_drv_gpio = <&gpio0 GPIO_B4 GPIO_ACTIVE_LOW>;
- ++ 3G_VCC_33_POWER = <&gpio7 GPIO_A5 GPIO_ACTIVE_HIGH>;//modify by jiangdou for 3G_POWER
2,修改/kernel/drivers/usb/dwc_otg_310/usbdev_rk32.c
- ++#define INVALID_GPIO -1 //add for 3G_power by jiangdou
- ++int power_3g_en = INVALID_GPIO;//add for 3G_power by jiangdou
- static int rk_usb_control_probe(struct platform_device *pdev)
- {
- int gpio, err;
- struct device_node *np = pdev->dev.of_node;
- int ret = 0;
- control_usb =
- devm_kzalloc(&pdev->dev, sizeof(*control_usb), GFP_KERNEL);
- if (!control_usb) {
- dev_err(&pdev->dev, "unable to alloc memory for control usb\n");
- ret = -ENOMEM;
- goto out;
- }
- control_usb->chip_id = RK3288_USB_CTLR;
- control_usb->remote_wakeup = of_property_read_bool(np,
- "rockchip,remote_wakeup");
- control_usb->usb_irq_wakeup = of_property_read_bool(np,
- "rockchip,usb_irq_wakeup");
- INIT_DELAYED_WORK(&control_usb->usb_charger_det_work,
- usb_battery_charger_detect_work);
- control_usb->host_gpios =
- devm_kzalloc(&pdev->dev, sizeof(struct gpio), GFP_KERNEL);
- if (!control_usb->host_gpios) {
- dev_err(&pdev->dev, "unable to alloc memory for host_gpios\n");
- ret = -ENOMEM;
- goto out;
- }
- ++/*------------------------------我是分割线----------------------------------*/
- ++//add for 3G_power by jiangdou start
- ++ power_3g_en = of_get_named_gpio(np, "3G_VCC_33_POWER", 0);
- ++ if (!gpio_is_valid(power_3g_en)) {
- ++ dev_err(&pdev->dev, "invalid host gpio%d\n", power_3g_en);
- ++ } else {
- ++ err = devm_gpio_request(&pdev->dev, power_3g_en, "3G_VCC_33_POWER");
- ++ if (err) {
- ++ dev_err(&pdev->dev,
- ++ "failed to request GPIO%d for host_drv\n",
- ++ power_3g_en);
- ++ ret = err;
- ++ //goto out;
- ++ }
- ++ gpio_direction_output(power_3g_en, 1);
- ++ }
- ++
- ++//add for 3G_power by jiangdou end
- ++/*------------------------------我是分割线----------------------------------*/
- gpio = of_get_named_gpio(np, "host_drv_gpio", 0);