Merge "regulator: qpnp-oledb: Add revid support for OLEDB driver"
This commit is contained in:
commit
f574243fae
3 changed files with 23 additions and 0 deletions
|
@ -14,6 +14,11 @@ Required Node Structure
|
||||||
Value type: <string>
|
Value type: <string>
|
||||||
Definition: should be "qcom,qpnp-oledb-regulator".
|
Definition: should be "qcom,qpnp-oledb-regulator".
|
||||||
|
|
||||||
|
- qcom,pmic-revid
|
||||||
|
Usage: required
|
||||||
|
Value type: <phandle>
|
||||||
|
Definition: Used to identify the PMIC subtype.
|
||||||
|
|
||||||
- reg
|
- reg
|
||||||
Usage: required
|
Usage: required
|
||||||
Value type: <prop-encoded-array>
|
Value type: <prop-encoded-array>
|
||||||
|
@ -224,6 +229,7 @@ pm660a_oledb: qpnp-oledb@e000 {
|
||||||
compatible = "qcom,qpnp-oledb-regulator";
|
compatible = "qcom,qpnp-oledb-regulator";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
qcom,pmic-revid = <&pm660l_revid>;
|
||||||
reg = <0xe000 0x100>;
|
reg = <0xe000 0x100>;
|
||||||
|
|
||||||
label = "oledb";
|
label = "oledb";
|
||||||
|
|
|
@ -415,6 +415,7 @@
|
||||||
compatible = "qcom,qpnp-oledb-regulator";
|
compatible = "qcom,qpnp-oledb-regulator";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
|
qcom,pmic-revid = <&pm660l_revid>;
|
||||||
reg = <0xe000 0x100>;
|
reg = <0xe000 0x100>;
|
||||||
|
|
||||||
label = "oledb";
|
label = "oledb";
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#include <linux/regulator/of_regulator.h>
|
#include <linux/regulator/of_regulator.h>
|
||||||
#include <linux/regulator/qpnp-labibb-regulator.h>
|
#include <linux/regulator/qpnp-labibb-regulator.h>
|
||||||
#include <linux/qpnp/qpnp-pbs.h>
|
#include <linux/qpnp/qpnp-pbs.h>
|
||||||
|
#include <linux/qpnp/qpnp-revid.h>
|
||||||
|
|
||||||
#define QPNP_OLEDB_REGULATOR_DRIVER_NAME "qcom,qpnp-oledb-regulator"
|
#define QPNP_OLEDB_REGULATOR_DRIVER_NAME "qcom,qpnp-oledb-regulator"
|
||||||
#define OLEDB_VOUT_STEP_MV 100
|
#define OLEDB_VOUT_STEP_MV 100
|
||||||
|
@ -162,6 +163,7 @@ struct qpnp_oledb {
|
||||||
struct notifier_block oledb_nb;
|
struct notifier_block oledb_nb;
|
||||||
struct mutex bus_lock;
|
struct mutex bus_lock;
|
||||||
struct device_node *pbs_dev_node;
|
struct device_node *pbs_dev_node;
|
||||||
|
struct pmic_revid_data *pmic_rev_id;
|
||||||
|
|
||||||
u32 base;
|
u32 base;
|
||||||
u8 mod_enable;
|
u8 mod_enable;
|
||||||
|
@ -1085,8 +1087,22 @@ static int qpnp_oledb_parse_fast_precharge(struct qpnp_oledb *oledb)
|
||||||
static int qpnp_oledb_parse_dt(struct qpnp_oledb *oledb)
|
static int qpnp_oledb_parse_dt(struct qpnp_oledb *oledb)
|
||||||
{
|
{
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
|
struct device_node *revid_dev_node;
|
||||||
struct device_node *of_node = oledb->dev->of_node;
|
struct device_node *of_node = oledb->dev->of_node;
|
||||||
|
|
||||||
|
revid_dev_node = of_parse_phandle(oledb->dev->of_node,
|
||||||
|
"qcom,pmic-revid", 0);
|
||||||
|
if (!revid_dev_node) {
|
||||||
|
pr_err("Missing qcom,pmic-revid property - driver failed\n");
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
oledb->pmic_rev_id = get_revid_data(revid_dev_node);
|
||||||
|
if (IS_ERR(oledb->pmic_rev_id)) {
|
||||||
|
pr_debug("Unable to get revid data\n");
|
||||||
|
return -EPROBE_DEFER;
|
||||||
|
}
|
||||||
|
|
||||||
oledb->swire_control =
|
oledb->swire_control =
|
||||||
of_property_read_bool(of_node, "qcom,swire-control");
|
of_property_read_bool(of_node, "qcom,swire-control");
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue