OF_PROP_READ

  of_batterydata.c

// optional =1 =0   =1爲可選,=0爲必選

#define OF_PROP_READ(chip, prop,qpnp_dt_property, retval, optional)    \

do {                                    \

   if (retval)                        \

       break;                          \

                                    \

   retval = of_property_read_u32(chip->spmi->dev.of_node,      \

                    "qcom,"qpnp_dt_property,   \

                    &chip->prop);           \

   pr_err("Error reading " #qpnp_dt_property       \

                " property retval_1 =%d\n", retval);       \

                                    \

   if ((retval == -EINVAL) && optional) {              \

       pr_err("Error reading " #qpnp_dt_property       \

                " property retval_2 =%d\n", retval);       \

       retval = 0;                     \

   }   \

   else if (retval)                       \

       pr_err("Error reading " #qpnp_dt_property       \

                " property rc =%d\n", rc);     \

} while (0)

   

    OF_PROP_READ(chip, cfg_max_voltage_mv,"vddmax-mv", rc,0);

    OF_PROP_READ(chip, cfg_safe_voltage_mv,"vddsafe-mv", rc,0);

    OF_PROP_READ(chip, cfg_min_voltage_mv,"vinmin-mv", rc,0);

    OF_PROP_READ(chip, cfg_safe_current,"ibatsafe-ma", rc,0);

    OF_PROP_READ(chip, cfg_icl_current,"chg-default-dcp-icl-ma", rc,0);

 

    if(rc)

       pr_err("Error reading required propertyrc=%d\n", rc);

 

    OF_PROP_READ(chip, cfg_tchg_mins,"tchg-mins", rc,1);

    OF_PROP_READ(chip, cfg_warm_bat_decidegc,"warm-bat-decidegc", rc,1);

    OF_PROP_READ(chip, cfg_cool_bat_decidegc,"cool-bat-decidegc", rc,1);

    OF_PROP_READ(chip, cfg_hot_batt_p,"batt-hot-percentage", rc,1);

    OF_PROP_READ(chip, cfg_cold_batt_p,"batt-cold-percentage", rc,1);

    OF_PROP_READ(chip, cfg_batt_weak_voltage_uv,"vbatweak-uv", rc,1);

    OF_PROP_READ(chip, cfg_soc_resume_limit,"resume-soc", rc,1);// 因爲這個值是在fg中定義的,所以這裏讀到的是空

    if(rc){

       pr_err("Error reading optional propertyrc=%d\n", rc);

       return rc;

    }

 

這個OF_PROP_READ宏的入口  if(retval)的設計,導致一旦發生錯誤,則不可繼續;

即如果chg-default-dcp-icl-ma讀取失敗,則後續的參數讀取都不能給進行,一直到結尾rc  然後返回錯誤碼,然後報錯


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章