Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
09f2dd88
Commit
09f2dd88
authored
Sep 01, 2013
by
Mark Brown
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'regulator/topic/pfuze100' into regulator-next
parents
39fe3b45
6b8430c3
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
613 additions
and
0 deletions
+613
-0
Documentation/devicetree/bindings/regulator/pfuze100.txt
Documentation/devicetree/bindings/regulator/pfuze100.txt
+115
-0
drivers/regulator/Kconfig
drivers/regulator/Kconfig
+8
-0
drivers/regulator/Makefile
drivers/regulator/Makefile
+1
-0
drivers/regulator/pfuze100-regulator.c
drivers/regulator/pfuze100-regulator.c
+445
-0
include/linux/regulator/pfuze100.h
include/linux/regulator/pfuze100.h
+44
-0
No files found.
Documentation/devicetree/bindings/regulator/pfuze100.txt
0 → 100644
View file @
09f2dd88
PFUZE100 family of regulators
Required properties:
- compatible: "fsl,pfuze100"
- reg: I2C slave address
Required child node:
- regulators: This is the list of child nodes that specify the regulator
initialization data for defined regulators. Please refer to below doc
Documentation/devicetree/bindings/regulator/regulator.txt.
The valid names for regulators are:
sw1ab,sw1c,sw2,sw3a,sw3b,sw4,swbst,vsnvs,vrefddr,vgen1~vgen6
Each regulator is defined using the standard binding for regulators.
Example:
pmic: pfuze100@08 {
compatible = "fsl,pfuze100";
reg = <0x08>;
regulators {
sw1a_reg: sw1ab {
regulator-min-microvolt = <300000>;
regulator-max-microvolt = <1875000>;
regulator-boot-on;
regulator-always-on;
regulator-ramp-delay = <6250>;
};
sw1c_reg: sw1c {
regulator-min-microvolt = <300000>;
regulator-max-microvolt = <1875000>;
regulator-boot-on;
regulator-always-on;
};
sw2_reg: sw2 {
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <3300000>;
regulator-boot-on;
regulator-always-on;
};
sw3a_reg: sw3a {
regulator-min-microvolt = <400000>;
regulator-max-microvolt = <1975000>;
regulator-boot-on;
regulator-always-on;
};
sw3b_reg: sw3b {
regulator-min-microvolt = <400000>;
regulator-max-microvolt = <1975000>;
regulator-boot-on;
regulator-always-on;
};
sw4_reg: sw4 {
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <3300000>;
};
swbst_reg: swbst {
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5150000>;
};
snvs_reg: vsnvs {
regulator-min-microvolt = <1000000>;
regulator-max-microvolt = <3000000>;
regulator-boot-on;
regulator-always-on;
};
vref_reg: vrefddr {
regulator-boot-on;
regulator-always-on;
};
vgen1_reg: vgen1 {
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <1550000>;
};
vgen2_reg: vgen2 {
regulator-min-microvolt = <800000>;
regulator-max-microvolt = <1550000>;
};
vgen3_reg: vgen3 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
};
vgen4_reg: vgen4 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
vgen5_reg: vgen5 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
vgen6_reg: vgen6 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3300000>;
regulator-always-on;
};
};
};
drivers/regulator/Kconfig
View file @
09f2dd88
...
@@ -385,6 +385,14 @@ config REGULATOR_PCF50633
...
@@ -385,6 +385,14 @@ config REGULATOR_PCF50633
Say Y here to support the voltage regulators and convertors
Say Y here to support the voltage regulators and convertors
on PCF50633
on PCF50633
config REGULATOR_PFUZE100
tristate "Support regulators on Freescale PFUZE100 PMIC"
depends on I2C
select REGMAP_I2C
help
Say y here to support the regulators found on the Freescale PFUZE100
PMIC.
config REGULATOR_RC5T583
config REGULATOR_RC5T583
tristate "RICOH RC5T583 Power regulators"
tristate "RICOH RC5T583 Power regulators"
depends on MFD_RC5T583
depends on MFD_RC5T583
...
...
drivers/regulator/Makefile
View file @
09f2dd88
...
@@ -49,6 +49,7 @@ obj-$(CONFIG_REGULATOR_MC13783) += mc13783-regulator.o
...
@@ -49,6 +49,7 @@ obj-$(CONFIG_REGULATOR_MC13783) += mc13783-regulator.o
obj-$(CONFIG_REGULATOR_MC13892)
+=
mc13892-regulator.o
obj-$(CONFIG_REGULATOR_MC13892)
+=
mc13892-regulator.o
obj-$(CONFIG_REGULATOR_MC13XXX_CORE)
+=
mc13xxx-regulator-core.o
obj-$(CONFIG_REGULATOR_MC13XXX_CORE)
+=
mc13xxx-regulator-core.o
obj-$(CONFIG_REGULATOR_PALMAS)
+=
palmas-regulator.o
obj-$(CONFIG_REGULATOR_PALMAS)
+=
palmas-regulator.o
obj-$(CONFIG_REGULATOR_PFUZE100)
+=
pfuze100-regulator.o
obj-$(CONFIG_REGULATOR_TPS51632)
+=
tps51632-regulator.o
obj-$(CONFIG_REGULATOR_TPS51632)
+=
tps51632-regulator.o
obj-$(CONFIG_REGULATOR_PCAP)
+=
pcap-regulator.o
obj-$(CONFIG_REGULATOR_PCAP)
+=
pcap-regulator.o
obj-$(CONFIG_REGULATOR_PCF50633)
+=
pcf50633-regulator.o
obj-$(CONFIG_REGULATOR_PCF50633)
+=
pcf50633-regulator.o
...
...
drivers/regulator/pfuze100-regulator.c
0 → 100644
View file @
09f2dd88
/*
* Copyright (C) 2011-2013 Freescale Semiconductor, Inc. All Rights Reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/err.h>
#include <linux/of.h>
#include <linux/of_device.h>
#include <linux/regulator/of_regulator.h>
#include <linux/platform_device.h>
#include <linux/regulator/driver.h>
#include <linux/regulator/machine.h>
#include <linux/regulator/pfuze100.h>
#include <linux/i2c.h>
#include <linux/slab.h>
#include <linux/regmap.h>
#define PFUZE_NUMREGS 128
#define PFUZE100_VOL_OFFSET 0
#define PFUZE100_STANDBY_OFFSET 1
#define PFUZE100_MODE_OFFSET 3
#define PFUZE100_CONF_OFFSET 4
#define PFUZE100_DEVICEID 0x0
#define PFUZE100_REVID 0x3
#define PFUZE100_FABID 0x3
#define PFUZE100_SW1ABVOL 0x20
#define PFUZE100_SW1CVOL 0x2e
#define PFUZE100_SW2VOL 0x35
#define PFUZE100_SW3AVOL 0x3c
#define PFUZE100_SW3BVOL 0x43
#define PFUZE100_SW4VOL 0x4a
#define PFUZE100_SWBSTCON1 0x66
#define PFUZE100_VREFDDRCON 0x6a
#define PFUZE100_VSNVSVOL 0x6b
#define PFUZE100_VGEN1VOL 0x6c
#define PFUZE100_VGEN2VOL 0x6d
#define PFUZE100_VGEN3VOL 0x6e
#define PFUZE100_VGEN4VOL 0x6f
#define PFUZE100_VGEN5VOL 0x70
#define PFUZE100_VGEN6VOL 0x71
struct
pfuze_regulator
{
struct
regulator_desc
desc
;
unsigned
char
stby_reg
;
unsigned
char
stby_mask
;
};
struct
pfuze_chip
{
struct
regmap
*
regmap
;
struct
device
*
dev
;
struct
pfuze_regulator
regulator_descs
[
PFUZE100_MAX_REGULATOR
];
struct
regulator_dev
*
regulators
[
PFUZE100_MAX_REGULATOR
];
};
static
const
int
pfuze100_swbst
[]
=
{
5000000
,
5050000
,
5100000
,
5150000
,
};
static
const
int
pfuze100_vsnvs
[]
=
{
1000000
,
1100000
,
1200000
,
1300000
,
1500000
,
1800000
,
3000000
,
};
static
const
struct
i2c_device_id
pfuze_device_id
[]
=
{
{.
name
=
"pfuze100"
},
{},
};
MODULE_DEVICE_TABLE
(
i2c
,
pfuze_device_id
);
static
const
struct
of_device_id
pfuze_dt_ids
[]
=
{
{
.
compatible
=
"fsl,pfuze100"
},
{},
};
MODULE_DEVICE_TABLE
(
of
,
pfuze_dt_ids
);
static
int
pfuze100_set_ramp_delay
(
struct
regulator_dev
*
rdev
,
int
ramp_delay
)
{
struct
pfuze_chip
*
pfuze100
=
rdev_get_drvdata
(
rdev
);
int
id
=
rdev
->
desc
->
id
;
unsigned
int
ramp_bits
;
int
ret
;
if
(
id
<
PFUZE100_SWBST
)
{
ramp_delay
=
12500
/
ramp_delay
;
ramp_bits
=
(
ramp_delay
>>
1
)
-
(
ramp_delay
>>
3
);
ret
=
regmap_update_bits
(
pfuze100
->
regmap
,
rdev
->
desc
->
vsel_reg
+
4
,
0xc0
,
ramp_bits
<<
6
);
if
(
ret
<
0
)
dev_err
(
pfuze100
->
dev
,
"ramp failed, err %d
\n
"
,
ret
);
}
else
ret
=
-
EACCES
;
return
ret
;
}
static
struct
regulator_ops
pfuze100_ldo_regulator_ops
=
{
.
enable
=
regulator_enable_regmap
,
.
disable
=
regulator_disable_regmap
,
.
is_enabled
=
regulator_is_enabled_regmap
,
.
list_voltage
=
regulator_list_voltage_linear
,
.
set_voltage_sel
=
regulator_set_voltage_sel_regmap
,
.
get_voltage_sel
=
regulator_get_voltage_sel_regmap
,
};
static
struct
regulator_ops
pfuze100_fixed_regulator_ops
=
{
.
list_voltage
=
regulator_list_voltage_linear
,
};
static
struct
regulator_ops
pfuze100_sw_regulator_ops
=
{
.
list_voltage
=
regulator_list_voltage_linear
,
.
set_voltage_sel
=
regulator_set_voltage_sel_regmap
,
.
get_voltage_sel
=
regulator_get_voltage_sel_regmap
,
.
set_voltage_time_sel
=
regulator_set_voltage_time_sel
,
.
set_ramp_delay
=
pfuze100_set_ramp_delay
,
};
static
struct
regulator_ops
pfuze100_swb_regulator_ops
=
{
.
list_voltage
=
regulator_list_voltage_table
,
.
map_voltage
=
regulator_map_voltage_ascend
,
.
set_voltage_sel
=
regulator_set_voltage_sel_regmap
,
.
get_voltage_sel
=
regulator_get_voltage_sel_regmap
,
};
#define PFUZE100_FIXED_REG(_name, base, voltage) \
[PFUZE100_ ## _name] = { \
.desc = { \
.name = #_name, \
.n_voltages = 1, \
.ops = &pfuze100_fixed_regulator_ops, \
.type = REGULATOR_VOLTAGE, \
.id = PFUZE100_ ## _name, \
.owner = THIS_MODULE, \
.min_uV = (voltage), \
.enable_reg = (base), \
.enable_mask = 0x10, \
}, \
}
#define PFUZE100_SW_REG(_name, base, min, max, step) \
[PFUZE100_ ## _name] = { \
.desc = { \
.name = #_name,\
.n_voltages = ((max) - (min)) / (step) + 1, \
.ops = &pfuze100_sw_regulator_ops, \
.type = REGULATOR_VOLTAGE, \
.id = PFUZE100_ ## _name, \
.owner = THIS_MODULE, \
.min_uV = (min), \
.uV_step = (step), \
.vsel_reg = (base) + PFUZE100_VOL_OFFSET, \
.vsel_mask = 0x3f, \
}, \
.stby_reg = (base) + PFUZE100_STANDBY_OFFSET, \
.stby_mask = 0x3f, \
}
#define PFUZE100_SWB_REG(_name, base, mask, voltages) \
[PFUZE100_ ## _name] = { \
.desc = { \
.name = #_name, \
.n_voltages = ARRAY_SIZE(voltages), \
.ops = &pfuze100_swb_regulator_ops, \
.type = REGULATOR_VOLTAGE, \
.id = PFUZE100_ ## _name, \
.owner = THIS_MODULE, \
.volt_table = voltages, \
.vsel_reg = (base), \
.vsel_mask = (mask), \
}, \
}
#define PFUZE100_VGEN_REG(_name, base, min, max, step) \
[PFUZE100_ ## _name] = { \
.desc = { \
.name = #_name, \
.n_voltages = ((max) - (min)) / (step) + 1, \
.ops = &pfuze100_ldo_regulator_ops, \
.type = REGULATOR_VOLTAGE, \
.id = PFUZE100_ ## _name, \
.owner = THIS_MODULE, \
.min_uV = (min), \
.uV_step = (step), \
.vsel_reg = (base), \
.vsel_mask = 0xf, \
.enable_reg = (base), \
.enable_mask = 0x10, \
}, \
.stby_reg = (base), \
.stby_mask = 0x20, \
}
static
struct
pfuze_regulator
pfuze100_regulators
[]
=
{
PFUZE100_SW_REG
(
SW1AB
,
PFUZE100_SW1ABVOL
,
300000
,
1875000
,
25000
),
PFUZE100_SW_REG
(
SW1C
,
PFUZE100_SW1CVOL
,
300000
,
1875000
,
25000
),
PFUZE100_SW_REG
(
SW2
,
PFUZE100_SW2VOL
,
400000
,
1975000
,
25000
),
PFUZE100_SW_REG
(
SW3A
,
PFUZE100_SW3AVOL
,
400000
,
1975000
,
25000
),
PFUZE100_SW_REG
(
SW3B
,
PFUZE100_SW3BVOL
,
400000
,
1975000
,
25000
),
PFUZE100_SW_REG
(
SW4
,
PFUZE100_SW4VOL
,
400000
,
1975000
,
25000
),
PFUZE100_SWB_REG
(
SWBST
,
PFUZE100_SWBSTCON1
,
0x3
,
pfuze100_swbst
),
PFUZE100_SWB_REG
(
VSNVS
,
PFUZE100_VSNVSVOL
,
0x7
,
pfuze100_vsnvs
),
PFUZE100_FIXED_REG
(
VREFDDR
,
PFUZE100_VREFDDRCON
,
750000
),
PFUZE100_VGEN_REG
(
VGEN1
,
PFUZE100_VGEN1VOL
,
800000
,
1550000
,
50000
),
PFUZE100_VGEN_REG
(
VGEN2
,
PFUZE100_VGEN2VOL
,
800000
,
1550000
,
50000
),
PFUZE100_VGEN_REG
(
VGEN3
,
PFUZE100_VGEN3VOL
,
1800000
,
3300000
,
100000
),
PFUZE100_VGEN_REG
(
VGEN4
,
PFUZE100_VGEN4VOL
,
1800000
,
3300000
,
100000
),
PFUZE100_VGEN_REG
(
VGEN5
,
PFUZE100_VGEN5VOL
,
1800000
,
3300000
,
100000
),
PFUZE100_VGEN_REG
(
VGEN6
,
PFUZE100_VGEN6VOL
,
1800000
,
3300000
,
100000
),
};
#ifdef CONFIG_OF
static
struct
of_regulator_match
pfuze100_matches
[]
=
{
{
.
name
=
"sw1ab"
,
},
{
.
name
=
"sw1c"
,
},
{
.
name
=
"sw2"
,
},
{
.
name
=
"sw3a"
,
},
{
.
name
=
"sw3b"
,
},
{
.
name
=
"sw4"
,
},
{
.
name
=
"swbst"
,
},
{
.
name
=
"vsnvs"
,
},
{
.
name
=
"vrefddr"
,
},
{
.
name
=
"vgen1"
,
},
{
.
name
=
"vgen2"
,
},
{
.
name
=
"vgen3"
,
},
{
.
name
=
"vgen4"
,
},
{
.
name
=
"vgen5"
,
},
{
.
name
=
"vgen6"
,
},
};
static
int
pfuze_parse_regulators_dt
(
struct
pfuze_chip
*
chip
)
{
struct
device
*
dev
=
chip
->
dev
;
struct
device_node
*
np
,
*
parent
;
int
ret
;
np
=
of_node_get
(
dev
->
parent
->
of_node
);
if
(
!
np
)
return
0
;
parent
=
of_find_node_by_name
(
np
,
"regulators"
);
if
(
!
parent
)
{
dev_err
(
dev
,
"regulators node not found
\n
"
);
return
-
EINVAL
;
}
ret
=
of_regulator_match
(
dev
,
parent
,
pfuze100_matches
,
ARRAY_SIZE
(
pfuze100_matches
));
of_node_put
(
parent
);
if
(
ret
<
0
)
{
dev_err
(
dev
,
"Error parsing regulator init data: %d
\n
"
,
ret
);
return
ret
;
}
return
0
;
}
static
inline
struct
regulator_init_data
*
match_init_data
(
int
index
)
{
return
pfuze100_matches
[
index
].
init_data
;
}
static
inline
struct
device_node
*
match_of_node
(
int
index
)
{
return
pfuze100_matches
[
index
].
of_node
;
}
#else
static
int
pfuze_parse_regulators_dt
(
struct
pfuze_chip
*
chip
)
{
return
0
;
}
static
inline
struct
regulator_init_data
*
match_init_data
(
int
index
)
{
return
NULL
;
}
static
inline
struct
device_node
*
match_of_node
(
int
index
)
{
return
NULL
;
}
#endif
static
int
pfuze_identify
(
struct
pfuze_chip
*
pfuze_chip
)
{
unsigned
int
value
;
int
ret
;
ret
=
regmap_read
(
pfuze_chip
->
regmap
,
PFUZE100_DEVICEID
,
&
value
);
if
(
ret
)
return
ret
;
if
(
value
&
0x0f
)
{
dev_warn
(
pfuze_chip
->
dev
,
"Illegal ID: %x
\n
"
,
value
);
return
-
ENODEV
;
}
ret
=
regmap_read
(
pfuze_chip
->
regmap
,
PFUZE100_REVID
,
&
value
);
if
(
ret
)
return
ret
;
dev_info
(
pfuze_chip
->
dev
,
"Full lay: %x, Metal lay: %x
\n
"
,
(
value
&
0xf0
)
>>
4
,
value
&
0x0f
);
ret
=
regmap_read
(
pfuze_chip
->
regmap
,
PFUZE100_FABID
,
&
value
);
if
(
ret
)
return
ret
;
dev_info
(
pfuze_chip
->
dev
,
"FAB: %x, FIN: %x
\n
"
,
(
value
&
0xc
)
>>
2
,
value
&
0x3
);
return
0
;
}
static
const
struct
regmap_config
pfuze_regmap_config
=
{
.
reg_bits
=
8
,
.
val_bits
=
8
,
.
max_register
=
PFUZE_NUMREGS
-
1
,
.
cache_type
=
REGCACHE_RBTREE
,
};
static
int
pfuze100_regulator_probe
(
struct
i2c_client
*
client
,
const
struct
i2c_device_id
*
id
)
{
struct
pfuze_chip
*
pfuze_chip
;
struct
pfuze_regulator_platform_data
*
pdata
=
dev_get_platdata
(
&
client
->
dev
);
struct
regulator_config
config
=
{
};
int
i
,
ret
;
pfuze_chip
=
devm_kzalloc
(
&
client
->
dev
,
sizeof
(
*
pfuze_chip
),
GFP_KERNEL
);
if
(
!
pfuze_chip
)
return
-
ENOMEM
;
i2c_set_clientdata
(
client
,
pfuze_chip
);
memcpy
(
pfuze_chip
->
regulator_descs
,
pfuze100_regulators
,
sizeof
(
pfuze_chip
->
regulator_descs
));
pfuze_chip
->
dev
=
&
client
->
dev
;
pfuze_chip
->
regmap
=
devm_regmap_init_i2c
(
client
,
&
pfuze_regmap_config
);
if
(
IS_ERR
(
pfuze_chip
->
regmap
))
{
ret
=
PTR_ERR
(
pfuze_chip
->
regmap
);
dev_err
(
&
client
->
dev
,
"regmap allocation failed with err %d
\n
"
,
ret
);
return
ret
;
}
ret
=
pfuze_identify
(
pfuze_chip
);
if
(
ret
)
{
dev_err
(
&
client
->
dev
,
"unrecognized pfuze chip ID!
\n
"
);
return
ret
;
}
ret
=
pfuze_parse_regulators_dt
(
pfuze_chip
);
if
(
ret
)
return
ret
;
for
(
i
=
0
;
i
<
PFUZE100_MAX_REGULATOR
;
i
++
)
{
struct
regulator_init_data
*
init_data
;
struct
regulator_desc
*
desc
;
int
val
;
desc
=
&
pfuze_chip
->
regulator_descs
[
i
].
desc
;
if
(
pdata
)
init_data
=
pdata
->
init_data
[
i
];
else
init_data
=
match_init_data
(
i
);
/* SW2~SW4 high bit check and modify the voltage value table */
if
(
i
>
PFUZE100_SW1C
&&
i
<
PFUZE100_SWBST
)
{
regmap_read
(
pfuze_chip
->
regmap
,
desc
->
vsel_reg
,
&
val
);
if
(
val
&
0x40
)
{
desc
->
min_uV
=
800000
;
desc
->
uV_step
=
50000
;
desc
->
n_voltages
=
51
;
}
}
config
.
dev
=
&
client
->
dev
;
config
.
init_data
=
init_data
;
config
.
driver_data
=
pfuze_chip
;
config
.
of_node
=
match_of_node
(
i
);
pfuze_chip
->
regulators
[
i
]
=
regulator_register
(
desc
,
&
config
);
if
(
IS_ERR
(
pfuze_chip
->
regulators
[
i
]))
{
dev_err
(
&
client
->
dev
,
"register regulator%s failed
\n
"
,
pfuze100_regulators
[
i
].
desc
.
name
);
ret
=
PTR_ERR
(
pfuze_chip
->
regulators
[
i
]);
while
(
--
i
>=
0
)
regulator_unregister
(
pfuze_chip
->
regulators
[
i
]);
return
ret
;
}
}
return
0
;
}
static
int
pfuze100_regulator_remove
(
struct
i2c_client
*
client
)
{
int
i
;
struct
pfuze_chip
*
pfuze_chip
=
i2c_get_clientdata
(
client
);
for
(
i
=
0
;
i
<
PFUZE100_MAX_REGULATOR
;
i
++
)
regulator_unregister
(
pfuze_chip
->
regulators
[
i
]);
return
0
;
}
static
struct
i2c_driver
pfuze_driver
=
{
.
id_table
=
pfuze_device_id
,
.
driver
=
{
.
name
=
"pfuze100-regulator"
,
.
owner
=
THIS_MODULE
,
.
of_match_table
=
pfuze_dt_ids
,
},
.
probe
=
pfuze100_regulator_probe
,
.
remove
=
pfuze100_regulator_remove
,
};
module_i2c_driver
(
pfuze_driver
);
MODULE_AUTHOR
(
"Robin Gong <b38343@freescale.com>"
);
MODULE_DESCRIPTION
(
"Regulator Driver for Freescale PFUZE100 PMIC"
);
MODULE_LICENSE
(
"GPL v2"
);
MODULE_ALIAS
(
"i2c:pfuze100-regulator"
);
include/linux/regulator/pfuze100.h
0 → 100644
View file @
09f2dd88
/*
* Copyright (C) 2011-2013 Freescale Semiconductor, Inc. All Rights Reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef __LINUX_REG_PFUZE100_H
#define __LINUX_REG_PFUZE100_H
#define PFUZE100_SW1AB 0
#define PFUZE100_SW1C 1
#define PFUZE100_SW2 2
#define PFUZE100_SW3A 3
#define PFUZE100_SW3B 4
#define PFUZE100_SW4 5
#define PFUZE100_SWBST 6
#define PFUZE100_VSNVS 7
#define PFUZE100_VREFDDR 8
#define PFUZE100_VGEN1 9
#define PFUZE100_VGEN2 10
#define PFUZE100_VGEN3 11
#define PFUZE100_VGEN4 12
#define PFUZE100_VGEN5 13
#define PFUZE100_VGEN6 14
#define PFUZE100_MAX_REGULATOR 15
struct
regulator_init_data
;
struct
pfuze_regulator_platform_data
{
struct
regulator_init_data
*
init_data
[
PFUZE100_MAX_REGULATOR
];
};
#endif
/* __LINUX_REG_PFUZE100_H */
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment