创龙A40I内核适配

ADC芯片CL1689驱动适配

  • 内核中添加驱动

    • linux-3.10/drivers/iio/adc 目录下

      • 在此目录下添加该CL1689 芯片的驱动代码:

        • 由于A40I使用的spi驱动器是基于8bits基础上实现的,而网上的spi转adc的驱动应用大多数是基于16bits控制器实现的,因此需要修改驱动应用源码来适配,可以参考下列网址再进行具体改动,此处不贴修改后的源码 :
        • https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/iio/adc/ad7949.c?id=7f40e0614317f20ac07b5aa5cec2eb43737e28d6
      • Makefile文件中添加该驱动的编译目标:

        obj-$(CONFIG_AD_SIGMA_DELTA) += ad_sigma_delta.o
        obj-$(CONFIG_AD7266) += ad7266.o
        obj-$(CONFIG_AD7298) += ad7298.o
        obj-$(CONFIG_AD7923) += ad7923.o
        obj-$(CONFIG_AD7791) += ad7791.o
        obj-$(CONFIG_AD7793) += ad7793.o
        obj-$(CONFIG_AD7887) += ad7887.o
        obj-$(CONFIG_AD7476) += ad7476.o
        obj-$(CONFIG_AD7689) += ad7689.o 
        obj-$(CONFIG_AD7949) += ad7949.o (增加)
        obj-$(CONFIG_AT91_ADC) += at91_adc.o
        obj-$(CONFIG_EXYNOS_ADC) += exynos_adc.o
        obj-$(CONFIG_LP8788_ADC) += lp8788_adc.o
        obj-$(CONFIG_MAX1363) += max1363.o
        obj-$(CONFIG_MCP320X) += mcp320x.o
        obj-$(CONFIG_TI_ADC081C) += ti-adc081c.o
        obj-$(CONFIG_TI_AM335X_ADC) += ti_am335x_adc.o
        obj-$(CONFIG_VIPERBOARD_ADC) += viperboard_adc.o
        obj-$(CONFIG_VIPERBOARD_ADC) += viperboard_adc.o
        
      • Kconfig中添加该驱动的配置信息,注意在该Kconfig配置文件中增加配置信息需要与Makefile文件中编译目标驱动的顺序保持一致:

        config AD7689
        	tristate "Analog Devices AD7689 and similar ADCs driver"
        	depends on SPI
        	help
        	  Say yes here to build support for Analog Devices
        	  AD7949, AD7682, AD7689 8 Channel ADCs.
        
        	  To compile this driver as a module, choose M here: the
        	  module will be called ad7949.
        
        config AD7949
        	tristate "Analog Devices ad7949 and similar ADCs driver"
        	depends on SPI
        	help
        	  Say yes here to build support for Analog Devices
        	  AD7949, AD7682, AD7689 8 Channel ADCs.
        
        	  To compile this driver as a module, choose M here: the
        	  module will be called ad7949.
        
        config AT91_ADC
        	tristate "Atmel AT91 ADC"
        	depends on ARCH_AT91
        	select IIO_BUFFER
        	select IIO_TRIGGERED_BUFFER
        	select SYSFS
        	help
        	  Say yes here to build support for Atmel AT91 ADC.
        
  • 使能 Industrial I/O support
    在这里插入图片描述
    在这里插入图片描述

  • 修改设备树文件

    • lichee/linux-3.10/arch/arm/boot/tlt3_a40i-evm.dts

      • 在设备上中添加该驱动信息

        adc_supply: fixedregulator {
               compatible = "regulator-fixed";
               regulator-name = "fixed-supply";
               regulator-min-microvolt = <3300000>;
               regulator-max-microvolt = <3300000>;
        };
        
        &spi1 {
        	status = "okay";
            	spi1_cs_number = <1>;
            	spi1_cs_bitmap = <1>;
        
        
        	ad7949:ad7949@0 {
        		compatible = "adi,ad7949";
        		reg = <0>;
        		spi-max-frequency = <1000000>;	
                spi-cpha;
                spi-cpol;
                vref-supply = <&adc_supply>;
        	};
        };
        
    • lichee/linux-3.10/arch/arm/boot/sun8iw11p1.dtsi

    • lichee/tools/pack/chips/sun8iw11p1/configs/tlt3_a40i-evm/sys_config_hdmi.fex

      • 修改前

        [uart2]
        uart2_used       = 1
        uart2_port       = 2
        uart2_type       = 2
        uart2_tx         = port:PI18<3><1><default><default>
        uart2_rx         = port:PI19<3><1><default><default>
        
        [spi1]
        spi1_used       = 0
        spi1_cs_number  = 2
        spi1_cs_bitmap  = 3
        spi1_cs0        = port:PA0<3><1><default><default>
        spi1_cs1        = port:PA4<3><1><default><default>
        spi1_sclk       = port:PA1<3><default><default><default>
        spi1_mosi       = port:PA2<3><default><default><default>
        spi1_miso       = port:PA3<3><default><default><default>
        
      • 修改后

        [uart2]
        uart2_used       = 0
        uart2_port       = 2
        uart2_type       = 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值