高通 SPI驱动笔记
来源:互联网 发布:知天下事打一个动物 编辑:程序博客网 时间:2024/04/30 05:17
1. 设备树
//msm8909.dtsi: spi_1: spi@78b9000 { /* BLSP1 QUP5 */ compatible = "qcom,spi-qup-v2";//厂商设备名 #address-cells = <1>;//子元素地址值的个数 #size-cells = <0>;//子元素长度值的个数 reg-names = "spi_physical", "spi_bam_physical"; reg = <0x78b9000 0x600>,//SPI地址 <0x7884000 0x23000>;//BAM地址 interrupt-names = "spi_irq", "spi_bam_irq"; /*中断号(BLSP4\SWDocument\BSP\Peripherals\BAM,\SWDocument\BSP\Peripherals\BAM) BLSP[1~12]->IRQ[95~106] BLSP[1~6]->BAM IRQ =238,BLSP[7~12]->BAM IRQ =239 */ interrupts = <0 99 0>, <0 238 0>; spi-max-frequency = <19200000>;//最大传输波特率 pinctrl-names = "spi_default", "spi_sleep"; pinctrl-0 = <&spi1_default &spi1_cs0_active>; pinctrl-1 = <&spi1_sleep &spi1_cs0_sleep>; clocks = <&clock_gcc clk_gcc_blsp1_ahb_clk>, <&clock_gcc clk_gcc_blsp1_qup5_spi_apps_clk>; clock-names = "iface_clk", "core_clk"; qcom,infinite-mode = <0>;//qup初始模式 qcom,use-bam; qcom,use-pinctrl; qcom,ver-reg-exists; /* bam-consumer-pipe-index:BLSP BAM pipes 见\SWDocument\BSP\Peripherals\BAM Table4-5 bam-producer-pipe-index:BLSP BAM pipes 见\SWDocument\BSP\Peripherals\BAM Table4-5 */ qcom,bam-consumer-pipe-index = <18>; qcom,bam-producer-pipe-index = <19>; //BLSP bus master ID 见\SWDocument\BSP\Peripherals\BAM Table4-3 qcom,master-id = <86>; };//msm8909-pinctrl.dtsi: spi1_active { /* MOSI, MISO, CLK */ qcom,pins = <&gp 16>, <&gp 17>, <&gp 19>; qcom,num-grp-pins = <3>;//how many pins contains in all qcom,pin-func = <1>;//function pin label = "spi1-active"; /* active state */ spi1_default: spi1_default { drive-strength = <12>; /* 12 MA */ bias-disable = <0>; /* No PULL */ }; }; spi1_suspend { /* MOSI, MISO, CLK */ qcom,pins = <&gp 16>, <&gp 17>, <&gp 19>; qcom,num-grp-pins = <3>; qcom,pin-func = <0>; label = "spi1-suspend"; /* suspended state */ spi1_sleep: spi1_sleep { drive-strength = <2>; /* 2 MA */ bias-pull-down; /* pull down */ }; }; spi1_cs0_active { /* CS */ qcom,pins = <&gp 18>; qcom,num-grp-pins = <1>; qcom,pin-func = <1>; label = "spi1-cs0-active"; spi1_cs0_active: cs0_active { drive-strength = <2>; bias-disable = <0>; }; }; spi1_cs0_suspend { /* CS */ qcom,pins = <&gp 18>; qcom,num-grp-pins = <1>; qcom,pin-func = <0>; label = "spi1-cs0-suspend"; spi1_cs0_sleep: cs0_sleep { drive-strength = <2>; bias-disable = <0>; }; };
注意:
如有GPIO重复使用,请屏蔽相关gpio和相关驱动(如I2C_5,因为I2C和SPI均被注册), tpiu_setb_4 中 //qcom,pins = <&gp 16>; tpiu_setb_5 中 //qcom,pins = <&gp 17>; tlmm_gpio_key 中 //ZHANGLEI //qcom,pins = <&gp 16>, <&gp 17>, <&gp 92>; // 90 91
2. set up clocks
//此步骤不适用于msm8994之后的版本
Project_Root/drivers/clk/qcom/clock-gcc-8909.c://一部分cpu版本在kernel/arch/arm/mach-msm/下添加时钟节点:/* Clock lookup */static struct clk_lookup msm_clocks_lookup[] = {//Add node to BLSP1 AHB ClockCLK_LIST(gcc_blsp1_ahb_clk),/*Add a node to QUP Core clock.*/CLK_LIST(blsp1_qup4_spi_apps_clk_src),
3. Set up the GPIO
//此步骤不适用于msm8994之后的版本
3.1 Project_Root/kernel/arch/arm/mach-msm/board--gpiomux.c
3.1.1 Create a configuration structure:
static struct gpiomux_setting gpio_blsp1_spi_config
3.1.2 Create a GPIO array:
static struct msm_gpiomux_config msm_blsp_configs[] __initdata
3.1.3 Register the GPIOs:
void __init msm_8974_init_gpiomux(void)
4. Configure the runtime GPIO:
//此步骤不适用于msm8994之后的版本
4.1 Project_Root/kernel/arch/arm/mach-msm/board--gpiomux.c
4.1.1 Create a suspend/active configuration structure:
static struct gpiomux_setting gpio_blsp1_spi_configstatic struct gpiomux_setting gpio_blsp1_spi_suspend_config
4.1.2 Create a GPIO array
static struct msm_gpiomux_config msm_blsp_configs[] __initdata
4.1.3 Register the GPIOs
void __init msm_8974_init_gpiomux(void)
4.1.4 Add GPIO numbers to the device tree.
/kernel/arch/arm/boot/dts/<chipset>-cdp.dts
1 0
- 高通 SPI驱动笔记
- LINUX SPI驱动笔记
- Linux驱动笔记:SPI驱动
- Linux SPI驱动之笔记
- ADS131A02驱动调试笔记(stm32f407+spi)
- MPU6500驱动调试笔记(STM32F407+SPI)
- Linux SPI 子系统驱动笔记之Linux spi设备驱动与SPI控制器驱动的匹配问题
- spi驱动
- SPI驱动
- SPI驱动
- spi驱动
- spi驱动
- SPI驱动
- 高通APQ8074 spi 接口配置
- 高通平台 8074 spi 的配置
- 高通APQ8074 spi 接口配置
- 高通APQ8074 spi 接口配置
- 高通APQ8074 spi 接口配置
- 030.For 循环代替 While 循环
- mysql格式化小数保留小数点后两位(小数点格式化)
- 正则表达式的一些方法
- OFBiz搭建项目详细讲解
- android面试题 不单单为了面试也是一次很好的学习
- 高通 SPI驱动笔记
- mysql中DATE_FORMAT()和str_to_date()简介
- Jackson 高性能的JSON处理 ObjectMapper
- 第七周项目5-排队看病模拟
- 039.Local Array 局部数组
- jenkins自动化构建rails程序
- IE11 —— F12 开发者工具
- 计算几何基础——矢量和叉积 && 叉积、线段相交判断、凸包(转载)
- 根据大脑频率调整状态