天天看點

提升知識點---使用裝置數進行led控制

haled{
            #address-cell = <1>;   //表示起始位址占用一個位元組的長度。
            #size-cells = <1>;       //表示位址占用一個位元組長
            compatible = "alpa-led";   //表示屬性的相容屬性為"alpa-led"
            status = "okay";          // 表示設定的狀态為“okay”
             reg = < 0X020C406C 0X04 /* CCM_CCGR1_BASE */
                          0X020E0068 0X04 /* SW_MUX_GPIO1_IO03_BASE */
                          0X020E02F4 0X04 /* SW_PAD_GPIO1_IO03_BASE */
                          0X0209C000 0X04 /* GPIO1_DR_BASE */
                          0X0209C004 0X04 >; /* GPIO1_GDIR_BASE */
};    //表示驅動裡面所要使用的寄存器實體位址 ,對應寄存器的首位址。
核心驅動代碼:
//編寫驅動入口函數
static int __init led_init(void)
{
        u32 val = 0;
        //擷取裝置樹中的屬性資料
dtsled.nd = of_find_node_by_path("/haled");
     
       //擷取compatible對應的屬性内容
proper = of_find_property(dtsled.nd,"compatible",NULL);
    //擷取reg中的屬性内容
  ret = of_property_read_u32_array(dtsled.nd,"reg",regdata,10);
   //核心将擷取對應寄存器的位址
}      

繼續閱讀