设备树下的驱动

  • 获取设备树中的属性数据
  •   struct dtsled_dev dtsled;	/* led设备 */
      
      static int __init led_init(void)
      {
      	/* 获取设备树中的属性数据 */
      	/* 1、获取设备节点:alphaled */
      	dtsled.nd = of_find_node_by_path("/alphaled");
      	if(dtsled.nd == NULL) {
      		printk("alphaled node nost find!\r\n");
      		return -EINVAL;
      	} else {
      		printk("alphaled node find!\r\n");
      	}
      
      	/* 2、获取compatible属性内容 */
      	proper = of_find_property(dtsled.nd, "compatible", NULL);
      	if(proper == NULL) {
      		printk("compatible property find failed\r\n");
      	} else {
      		printk("compatible = %s\r\n", (char*)proper->value);
      	}
      
      	/* 3、获取status属性内容 */
      	ret = of_property_read_string(dtsled.nd, "status", &str);
      	if(ret < 0){
      		printk("status read failed!\r\n");
      	} else {
      		printk("status = %s\r\n",str);
      	}
      
      	/* 4、获取reg属性内容 */
      	ret = of_property_read_u32_array(dtsled.nd, "reg", regdata, 10);
      	if(ret < 0) {
      		printk("reg property read failed!\r\n");
      	} else {
      		u8 i = 0;
      		printk("reg data:\r\n");
      		for(i = 0; i < 10; i++)
      			printk("%#X ", regdata[i]);
      		printk("\r\n");
      	}
      }
      
      
    
  • 与新字符设备驱动不同之处在于 字符设备 的初始化
  • image.png
  •   /* 初始化LED */
      
      #if 0
      	/* 1、寄存器地址映射 */
      	IMX6U_CCM_CCGR1 = ioremap(regdata[0], regdata[1]);
      	SW_MUX_GPIO1_IO03 = ioremap(regdata[2], regdata[3]);
        	SW_PAD_GPIO1_IO03 = ioremap(regdata[4], regdata[5]);
      	GPIO1_DR = ioremap(regdata[6], regdata[7]);
      	GPIO1_GDIR = ioremap(regdata[8], regdata[9]);
      #else
      	IMX6U_CCM_CCGR1 = of_iomap(dtsled.nd, 0);
      	SW_MUX_GPIO1_IO03 = of_iomap(dtsled.nd, 1);
        	SW_PAD_GPIO1_IO03 = of_iomap(dtsled.nd, 2);
      	GPIO1_DR = of_iomap(dtsled.nd, 3);
      	GPIO1_GDIR = of_iomap(dtsled.nd, 4);
      #endif
    
  • 设备树节点与属性
  • 参考自优快云:Linux驱动开发:设备树节点与属性-优快云博客
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值