android驅動i2c器件的裝置樹配置
做驅動的要經常配置i2c,而配置i2c無非就是確定i2c器件掛在哪一個i2c總線上,以及i2c的具體地址.下面以高通8909平臺為例子說一下
- 確定i2c機器掛在哪一個i2c總線上
-
- 從原理圖得到SDA,SCL對應的gpio,我這個gpio為gpio6,gpio7
- 在msm8909-pinctrl.dtsi檔案中找到該gpio對應的i2c匯流排,如下,可見其對應的i2c匯流排是i2c_1
pmx_i2c_1 { i2c_1_active: i2c_1_active { mux { pins = "gpio6", "gpio7"; function = "blsp_i2c1"; }; config { pins = "gpio6", "gpio7"; drive-strength = <2>; /* 2 MA */ bias-disable; /* No PULL */ }; }; i2c_1_sleep: i2c_1_sleep { mux { pins = "gpio6", "gpio7"; function = "blsp_i2c1"; }; config { pins = "gpio6", "gpio7"; drive-strength = <2>; /* 2 MA */ bias-disable; /* No PULL */ }; }; };
- 然後在msm8909.dtsi裡面查詢i2c_1,就可以得到其i2c地址為78b5000
i2c_1: [email protected] { /* BLSP1 QUP1 */ compatible = "qcom,i2c-msm-v2"; #address-cells = <1>; #size-cells = <0>; reg-names = "qup_phys_addr"; reg = <0x78b5000 0x1000>; interrupt-names = "qup_irq"; interrupts = <0 95 0>; clocks = <&clock_gcc clk_gcc_blsp1_ahb_clk>, <&clock_gcc clk_gcc_blsp1_qup1_i2c_apps_clk>; clock-names = "iface_clk", "core_clk"; qcom,clk-freq-out = <100000>; qcom,clk-freq-in = <19200000>; pinctrl-names = "i2c_active", "i2c_sleep"; pinctrl-0 = <&i2c_1_active>; pinctrl-1 = <&i2c_1_sleep>; qcom,noise-rjct-scl = <0>; qcom,noise-rjct-sda = <0>; dmas = <&dma_blsp1 4 64 0x20000020 0x20>, <&dma_blsp1 5 32 0x20000020 0x20>; dma-names = "tx", "rx"; qcom,master-id = <86>; };
- 在msm8909-mtp.dtsi裡[email protected]加入其i2c器件的配置
[email protected] { /* BLSP1 QUP1 */ [email protected] { compatible = "fortemedia,fm2018"; reg = <0x60>; fm2018,vdd-en = <&sn7325_1gpio 5 0x00>;//p1 58////sn7325,5 fm2018,pwd-gpio = <&sn7325_gpio 3 0x00>;//p1 26//sn7325,3 fm2018,rst-gpio = <&sn7325_gpio 2 0x00>;//sn7325,2 fm2018,int-gpio = <&sn7325_gpio 4 0x4>;//sn7325,4 }; };
- i2c器件的具體地址
這個一般是由器件datasheet提供,如我使用的這個期間的i2c地址是0x60,如果不清楚,可以打電話問FAE。
相關推薦
android驅動i2c器件的裝置樹配置
做驅動的要經常配置i2c,而配置i2c無非就是確定i2c器件掛在哪一個i2c總線上,以及i2c的具體地址.下面以高通8909平臺為例子說一下 確定i2c機器掛在哪一個i2c總線上 從原理圖得到SDA,SCL對應的gpio,我這個gpio為gpio6,gpio7
rk3399下iic驅動方式二-----裝置樹
方式一 前面說了iic在新核心下的一種方式,下面是第二種方式,這種方式在fireflyWiki教程裡面有說明 程式碼如下 #include <linux/kernel.h> #include <linux/module.h> #include <linux/
第六課:在LCD驅動中使用裝置樹
按照計劃,本課會講解修改uboot和核心讓JZ2440支援裝置樹。 但前面修改uboot已經講解完了,修改核心也沒必要單獨講,可以直接看核心補丁,修改的方法也並不複雜。 核心補丁路徑: doc_and_sources_for_device_tree/sourc
Ti437x LED匯流排驅動模型程式+裝置樹
本文主要記錄AM437X驅動的LED。含簡單的字元裝置驅動、裝置驅動模型、裝置樹以及LED子系統。 目前就Linux驅動的理解是: Linux驅動 = 裸機 + 框架 關於框架,目前的理解是: 以LED驅動為例,之前印象中就是韋老大
【Linux驅動】Linux裝置樹語法詳解
1 概念Linux核心從3.x開始引入裝置樹的概念,用於實現驅動程式碼與裝置資訊相分離。在裝置樹出現以前,所有關於裝置的具體資訊都要寫在驅動裡,一旦外圍裝置變化,驅動程式碼就要重寫。引入了裝置樹之後,驅動程式碼只負責處理驅動的邏輯,而關於裝置的具體資訊存放到裝置樹檔案中,這樣,如果只是硬體介面資訊的變化而沒有
Itop4412開發板emmc驅動移植(裝置樹)
硬體裝置:itop4412開發板 核心版本linux-3.8.1 裝置樹方式減少了裝置的冗餘編碼,同時使移植變得更加高效。eMMC作為開發板的基礎,十分重要。 裝置樹用的是核心自帶的smdk4412.dts vim arch/arm/boot/dts/exynos4412-
android驅動 無法開啟裝置檔案 解決
由於裝置檔案是在核心驅動裡面通過device_create建立的,而device_create建立的裝置檔案預設只有root使用者可讀寫,而hello_device_open一般是由上層APP來呼叫的,這些APP一般不具有root許可權,這時候就導致開啟裝置檔案失敗:Hel
Linux驅動開發08:【裝置樹】MPU6050驅動和i2c驅動
介紹 上一節在nanopi裝置樹的I2C節點下增加了一個MPU6050的子節點,並在sysfs中檢視到了該節點已經被正確解析,這一節我們來修改之前的MPU6050驅動,使之能夠匹配到我們的裝置樹節點,然後再分析裝置樹節點是如何載入到i2c總線上的。 MP
基於i2c子系統的驅動分析-裝置樹
基於i2c子系統的驅動分析 和i2c有關的程式碼都在原始碼drivers/i2c目錄下。核心提供了兩種i2c的實現方法: 第一種叫i2c_dev,對應drivers/i2c/i2c-dev.c,這種方法僅僅封裝了soc的i2c控制器操作,並嚮應用層提供操作介面。其本質是為應
i2c 與 spi 裝置在新版核心中不採用DTS裝置樹形式 在驅動新增裝置資訊(board_info)的方法
本文唯一地址:http://blog.csdn.net/dearsq/article/details/51953610 歡迎轉載,轉載請著名,謝謝~ /* 廢話:在展訊平臺移植 spi 裝置的時候發現完成 dts 和 driver中的 of_match_
Android TP驅動之(二)裝置樹解析
AndroidTP驅動之(二)裝置樹解析 0. 前情提要 上文中我們已經初步搭好了TP驅動的框架。當然我們還缺了重要的部分input子系統,這個不急,我們下一篇文章再敘。 本文我們來完成TP driver中對裝置樹的解析。 1. probe函式
21 使用裝置樹的i2c裝置驅動
在核心裡表示i2c裝置驅動的結構體有點小變化: struct i2c_driver { int (*probe)(struct i2c_client *, const struct i2c
裝置樹時對應的驅動程式設計
一、字元裝置驅動程式的三種寫法 驅動程式編寫有3種方法:傳統方法、使用匯流排裝置驅動模型、使用裝置樹 這3種方法也核心都是一樣的: 分配、設定、註冊 file_operations結構體 這個結構體中有.open, .read, .write, .ioctl等成員 驅動程式要實現這些成員,在這些
Linux驅動開發11:【裝置樹】nanopi的PWM驅動
介紹 前兩節利用裝置樹實現了nanopi的LED驅動和按鍵驅動,這一節來實現nonapi的PWM驅動。PWM驅動在核心中也有相應的實現,因此這裡只是按照要求新增裝置樹檔案即可。這一節和之前一樣,首先修改裝置樹檔案進行測試,然後分析核心相應的軟體實現。 新增裝置樹節點 因為在s
Linux驅動開發10:【裝置樹】nanopi的按鍵驅動
介紹 這一節在nanopi上實現按鍵驅動,和LED驅動一樣,通用的按鍵驅動在linux核心中已經實現好,我們只需要按照要求寫好裝置樹即可,不用我們自己實現按鍵驅動。這一節中首先修改裝置樹並測試按鍵驅動,然後分析drivers/input/keyboard/gpio_keys.c檔案,
04-Linux裝置樹系列-GPIO驅動實踐
1. 前言 GPIO驅動開發可能算是Linux核心裝置驅動開發中最為簡單、最常見的一個方向,對於開發板的按鍵、LED、蜂鳴器、電源控制等模組,可能都是使用GPIO實現的。Linux核心的GPIO子系統在核心不斷的演進過程中進行了多次的重構,本文的第二
嵌入式核心及驅動開發之學習筆記(十七) 裝置樹的定義規則和獲取方法
概述 在Linux 2.6中,arch/arm/plat-xxx和arch/arm/mach-xxx中充斥著大量的垃圾程式碼,相當多數的程式碼只是在描述板級細節,而這些板級細節對於核心來講,不過是垃圾,如板上的platform裝置、resource、i2c_board_info、sp
x4412 基於裝置樹的 hello_world驅動
首先在exynos4412-x4412.dts檔案中新增HelloWorld節點,如下: HelloWorld { compatible = "x4412, hello_world"; status = "okay"; }; 然後新建一
裝置樹之I2C和SPI例項
I2C例項 clock-frequency i2c匯流排頻率,常用值有100000,400000 address-cells 該屬性值必須為1 size-cells 該屬性值必須為0 i2c具體例項如下圖所示:
(最新核心3.4)Linux 裝置樹載入I2C client adapter 的流程(核心3.4 高通)
BLSP(BAM Low-Speed Peripheral) , 每一個BLSP含有兩個QUP, 每一個QUP可以被配置為I2C, SPI, UART, UIM介面, BLSP是高通對於低速介面的一種管理方式。 [email protec