1.前言
今天看驱动的时候发现一个有趣的代码.我们都知道做驱动需要probe dts节点,也就是捕获dts中定义的设备.但如果想要使用和读写dts中别的节点对应的设备的寄存器该怎么做? 今天在看驱动文件时发现了这个做法,记录下.
2.流程
2.1 驱动的操作
struct regmap *map;
map = syscon_regmap_lookup_by_phandle(pdev->dev.of_node, "fsl,tempmon");
ret = regmap_read(map, IMX6_OCOTP_ANA1, &val);
2.2 dts设置
693 tempmon: tempmon {
694 compatible = "fsl,imx6ul-tempmon", "fsl,imx6sx-tempmon";
695 interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
696 fsl,tempmon = <&anatop>;
697 fsl,tempmon-data = <&ocotp>;
698 clocks = <&clks IMX6UL_CLK_PLL3_USB_OTG>;
699 };
984 ocotp: ocotp-ctrl@021bc000 {
985 compatible = "fsl,imx6ull-ocotp", "syscon";
986 reg = <0x021bc000 0x4000>;
987 clocks = <&clks IMX6UL_CLK_OCOTP>;
988 };