RK3288如何开机GPIO为高或者为低

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);




3..by jiangdou QQ:344283973


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值