精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux Regmap 操作函數

麥辣雞腿堡 ? 來源:嵌入式Linux系統開發 ? 作者:嵌入式Linux系統開 ? 2023-07-06 17:31 ? 次閱讀

Regmap 操作函數

1、Regmap 申請與初始化

regmap 支持多種物理總線,比如 I2C 和 SPI,我們需要根據所使用的接口來選擇合適的 regmap 初始化函數。Linux 內核提供了針對不同接口的 regmap 初始化函數。

SPI 接口初始化函數為 regmap_init_spi

I2C 接口的初始化函數為 regmap_init_i2c

不管是什么接口,全部使用 regmap_exit 這個函數來釋放 regmap

我們一般會在 probe 函數中初始化 regmap_config,然后申請并初始化 regmap。

2、regmap 設備訪問 API 函數

不管是 I2C 還是 SPI 等接口,還是 SOC 內部的寄存器,對于寄存器的操作就兩種:讀和寫。regmap 提供了最核心的兩個讀寫操作:regmap_read 和 regmap_write。這兩個函數分別用來讀/寫寄存器

在 regmap_read 和 regmap_write 的基礎上還衍生出了其他一些 regmap 的 API 函數,首先是regmap_update_bits 函數。看名字就知道,此函數用來修改寄存器指定的 bit,函數原型如下:

int

regmap_update_bits

(structregmap*

map

,

unsigned

int

reg,

unsigned

int

mask,

unsigned

int

val,

函數參數和返回值含義如下:

map:要操作的 regmap。

reg:要操作的寄存器。

mask:掩碼,需要更新的位必須在掩碼中設置為 1。

val:需要更新的位值。

返回值:0,寫成功;其他值,寫失敗。

比如要將寄存器的 bit1 和 bit2 置 1,那么 mask 應該設置為 0X00000011,此時 val 的 bit1 和 bit2 應該設置為 1,也就是 0Xxxxxxx11。

如果要清除寄存器的 bit4 和 bit7,那么 mask 應該設置為 0X10010000,val 的 bit4 和 bit7 設置為 0,也就是 0X0xx0xxxx。

接下來看一下 regmap_bulk_read 函數,此函數用于讀取多個寄存器的值,函數原型如下:

int

regmap_bulk_read

(structregmap*

map

,

unsigned

int

reg,

void

*val,

size_t

val_count)

函數參數和返回值含義如下:

map:要操作的 regmap。

reg:要讀取的第一個寄存器。

val:讀取到的數據緩沖區。

val_count:要讀取的寄存器數量。

返回值:0,寫成功;其他值,讀失敗。

另外也有多個寄存器寫函數 regmap_bulk_write,函數原型如下:

int

regmap_bulk_write

(structregmap*

map

,

unsigned

int

reg,

const

void

*val,

size_t

val_count)

函數參數和返回值含義如下:

map:要操作的 regmap。

reg:要寫的第一個寄存器。

val:要寫的寄存器數據緩沖區。

val_count:要寫的寄存器數量。

返回值:0,寫成功;其他值,讀失敗。

關于 regmap 常用到 API 函數就講解到這里,還有很多其他功能的 API 函數,大家自行查 閱 Linux 內核即可,內核里面對每個 API 函數都有詳細的講解。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11232

    瀏覽量

    208958
  • 函數
    +關注

    關注

    3

    文章

    4308

    瀏覽量

    62445
  • 系統
    +關注

    關注

    1

    文章

    1010

    瀏覽量

    21320
收藏 人收藏

    評論

    相關推薦

    「正點原子Linux連載」第六十章Linux RTC驅動實驗

    址對應的虛擬地址。第259行,Linux3.1引入了一個全新的regmap機制,regmap用于提供一套方便的API函數操作底層硬件寄存器
    發表于 03-18 10:20

    「正點原子Linux連載」第六十章Linux RTC驅動實驗

    址對應的虛擬地址。第259行,Linux3.1引入了一個全新的regmap機制,regmap用于提供一套方便的API函數操作底層硬件寄存器
    發表于 03-23 09:52

    linux基本操作與C語言基礎

    目錄C語言基礎C++linux基本操作io操作數據結構進程線程網絡編程實戰項目C語言基礎基本數據類型指針結構體、聯合體、枚舉C++拓展classnew繼承 子類父類、虛函數、友元
    發表于 12-17 07:53

    以rk808驅動為例子講解i2c regmap方式讀寫

    I2C讀寫時序regmap i2cIntroRegmap主要目的是減少慢速I/O驅動上的重復邏輯,提供一種通用的接口來操作底層硬件上的寄存器.Regmap除了能做到統一的I/O接口,還可以在驅動
    發表于 08-11 16:43

    Linux操作系統

    linux的教學內容1 、Linux概述 2 、Linux操作系統安裝3、 Linux的內核 4 、Li
    發表于 04-10 16:54 ?0次下載
    <b class='flag-5'>Linux</b><b class='flag-5'>操作</b>系統

    Linux C函數手冊

    Linux C函數庫參考,一本linux學習的參考備查手冊
    發表于 11-03 17:33 ?0次下載

    linux_C函數庫中文手冊

    linux_C函數庫中文手冊linux_C函數庫中文手冊
    發表于 03-20 10:42 ?14次下載

    Linux C函數參考手冊

    Linux C函數參考手冊
    發表于 10-25 15:32 ?6次下載
    <b class='flag-5'>Linux</b> C<b class='flag-5'>函數</b>參考手冊

    基于Linux2.6.30開發DS18B20的驅動程序的類型和文件操作接口函數詳解

    本文介紹了Linux設備驅動程序的類型和文件操作接口函數,以及驅動程序的基本開發過程。以ARM9為平臺,基于Linux2.6.30開發DS18B20的驅動程序,以模塊的形式加載到內核
    發表于 06-27 09:57 ?1459次閱讀
    基于<b class='flag-5'>Linux</b>2.6.30開發DS18B20的驅動程序的類型和文件<b class='flag-5'>操作</b>接口<b class='flag-5'>函數</b>詳解

    Linux教程之Linux C函數參考教程免費下載

    本文檔的主要內容詳細介紹的是Linux教程之Linux C函數參考教程免費下載。
    發表于 03-20 08:00 ?4次下載
    <b class='flag-5'>Linux</b>教程之<b class='flag-5'>Linux</b> C<b class='flag-5'>函數</b>參考教程免費下載

    linux系統更新的操作操作原理

    linux系統更新的簡單操作操作原理。
    發表于 05-27 09:34 ?1848次閱讀

    Linux內核GPIO操作函數的詳解分析

    本文檔的主要內容詳細介紹的是Linux內核GPIO操作函數的詳解分析免費下載。
    發表于 01-22 16:58 ?28次下載

    Linux中什么是 Regmap

    Linux 下大部分設備的驅動開發都是操作其內部寄存器,比如 I2C/SPI 設備的本質都是一樣的,通過 I2C/SPI 接口讀寫芯片內部寄存器。芯片內部寄存器也是同樣的道理,比如 I.MX6ULL
    的頭像 發表于 07-06 17:25 ?476次閱讀

    Linux Regmap 驅動框架

    regmap 向驅動編寫人員提供的 API 接口,驅動編寫人員使用這些API 接口來操作具體的芯片設備,也是驅動編寫人員重點要掌握的。 2、regmap 結構體 Linux 內 核
    的頭像 發表于 07-06 17:29 ?1092次閱讀
    <b class='flag-5'>Linux</b> <b class='flag-5'>Regmap</b> 驅動框架

    Linux內核如何使用結構體和函數指針?

    我將結合具體的Linux內核驅動框架代碼來展示Linux內核如何使用結構體和函數指針。
    的頭像 發表于 09-06 14:17 ?996次閱讀
    <b class='flag-5'>Linux</b>內核如何使用結構體和<b class='flag-5'>函數</b>指針?