Android手机充电IC设备树配置

本文介绍了OTG功能在设备树中的配置方法,包括默认配置和iddig_irq_init配置节点的具体实现,展示了如何通过驱动代码读取这些配置,并应用于USB接口的初始化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >




OTG功能设备树配置

&pio {
	usb_default: default {							/*默认配置可以什么都不写,但必须配置*/
	};

	gpio9_mode3_iddig: iddig_irq_init {
		pins_cmd_dat {
			pins = <PINMUX_GPIO9__FUNC_USB_IDDIG>;	/*中断pin脚的模式*/
			slew-rate = <0>;						/*0:输入,1:输出*/
			bias-pull-up = <00>;
		};
	};
};

&usb0 {
	iddig_gpio = <9 3>;								/*9号IO口的模式3*/
	pinctrl-names = "default", "iddig_irq_init";	/*驱动中会使用这的名字来查询配置节点的地址,从而读出配置数据*/
	pinctrl-0 = <&usb_default>;
	pinctrl-1 = <&gpio9_mode3_iddig>;				/*绑定iddig_irq_init和gpio9_mode3_iddig*/			
	status = "okay";
};



驱动代码读取和配置数据
	/*driver中获取对应模式配置节点*/
	pinctrl_drvvbus = pinctrl_lookup_state(pinctrl, "drvvbus_init");
	if (IS_ERR(pinctrl_drvvbus)) {
		ret = PTR_ERR(pinctrl_drvvbus);
		dev_err(mtk_musb->controller, "Cannot find usb pinctrl drvvbus\n");
	}
	
	//拿到节点
	usb_node = of_find_compatible_node(NULL, NULL, "mediatek,mt6735-usb20");
	//读取节点属性
	of_property_read_u32_index(usb_node, "iddig_gpio", 0, &iddig_pin)
	
	/*通过pintctrl读取不同模式的GPIO看*/
	pinctrl = devm_pinctrl_get(mtk_musb->controller);
	//读取中断pin的配置数据
	pinctrl_iddig = pinctrl_lookup_state(pinctrl, "iddig_irq_init");
	if (IS_ERR(pinctrl_iddig)) {
		ret = PTR_ERR(pinctrl_iddig);
		dev_err(mtk_musb->controller, "Cannot find usb pinctrl iddig_irq_init\n");
	}
	//选择配置数据
	pinctrl_select_state(pinctrl, pinctrl_iddig);	


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值