PMIC PF3000/3001 + i.MX 6UL Resources

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

PMIC PF3000/3001 + i.MX 6UL Resources

PMIC PF3000/3001 + i.MX 6UL Resources

PMIC PF3000/3001 + i.MX 6UL Resources:

=========================================================================================================================

Upload the latest version D as enclosed, SCH-29105 KIT6UL_3000EVM Version D and SCH-29105 KIT6UL_3000EVM Version D.

The attachment SCH-29105 KIT6UL-3000EVM Version C.zip includes i.MX 6UL 14x14 + PMIC PF3000(KIT6UL-3000EVM, SCH-29105 Rev.C) related files:

No.Files in SCH-29105 KIT6UL-3000EVM Version C.zip
1SPF-29105_C.pdf is the corresponding schematic PDF version.
2

SCH-29105_C.zip is the schematic.

3

LAY-29105_C.zip is the PCB layout.

4750-29105_C BOM.xls is the BOM.

 

Its i.MX 6UL 14x14 + PMIC PF3000 BSP:

  1. Apply PF3000 driver patch in imx_3.14.52_1.1.0_ga
    http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/commit/?h=imx_3.14.52_1.1.0_ga&id=e5a7a72cd51a585b8f1a1e299bf88fff44b94440


    Apply
    0001-add-pf3000-on-imx6ul-evk-board.patch, see the attachment.
    Apply 0003-correct-arm-soc-regulator-for-pf300.patch, see the attachment.
    Apply 0001-u-boot-add-pf3000-support-on-imx6ul-14x14-evk-board.patch, see the attachment.

   
   2.  Update customer board dts as the above 0001-add-pf3000-on-imx6ul-evk-board.patch.

 

=========================================================================================================================

The attachment SCH-29090 KIT6UL-3001EVM Version C.zip includes i.MX 6UL 14x14 + PMIC PF3001(KIT6UL-3001EVM, SCH-29090 Rev.C) related files:

No.Files in SCH-29090 KIT6UL-3001EVM Version C.zip
1SPF-29090_C.pdf is the corresponding schematic PDF version.
2

SCH-29090_C.zip is the schematic.

3

LAY-29090_C.zip is the PCB layout.

4750-29090_C BOM.xls is the BOM.

 

Its i.MX 6UL 14x14 + PMIC PF3001 BSP:

  1. Apply PF3001 driver patch in imx_3.14.52_1.1.0_ga http://git.freescale.com/git/cgit.cgi/imx/linux-2.6-imx.git/commit/drivers/regulator/pfuze100-regula...d=19708058f049be9a5dcc81943d1b9a14080367e8
  2. Update PF3001 dts board file as customer board dts.

 

Thanks,

PMIC team: Sean Liu

Labels (1)
Attachments
Comments

Hi NXP-Team,

would it be possible to get some Altium (schematic + board) files for this two boards (29090 + 29105).

Thanks

Hi,

We only support the board through Cadence design tools which was limited by company.

Some customers export to Altium Design files from Cadence Allegro files, see the link https://community.nxp.com/thread/377756?et=watches.email.outcome, this may be helpful.

Sean Liu

sean.liu@nxp.com

PMIC team

Hi,

I would suggest some modifications to above patches (sorry for ugly indentation but cannot attach files into comments):

- first edit is for patch PF3001 driver patch in imx_3.14.52_1.1.0_ga (line numbers differ):

diff --git a/drivers/regulator/pfuze100-regulator.c b/drivers/regulator/pfuze100-regulator.c
index 8903399cd87a..2a6fae48235d 100644
--- a/drivers/regulator/pfuze100-regulator.c
+++ b/drivers/regulator/pfuze100-regulator.c
@@ -130,8 +130,26 @@ static int pfuze100_set_ramp_delay(struct regulator_dev *rdev, int ramp_delay)
int id = rdev_get_id(rdev);
unsigned int ramp_bits;
int ret;
+ bool reg_has_ramp_delay;

- if (id < PFUZE100_SWBST) {
+ switch (pfuze100->chip_id) {
+ case PFUZE3001:
+ /* no dynamic voltage scaling for PF3001 */
+ reg_has_ramp_delay = false;
+ break;
+ case PFUZE3000:
+ reg_has_ramp_delay = (id < PFUZE3000_SWBST);
+ break;
+ case PFUZE200:
+ reg_has_ramp_delay = (id < PFUZE200_SWBST);
+ break;
+ case PFUZE100:
+ default:
+ reg_has_ramp_delay = (id < PFUZE100_SWBST);
+ break;
+ }
+
+ if (reg_has_ramp_delay) {
ramp_delay = 12500 / ramp_delay;
ramp_bits = (ramp_delay >> 1) - (ramp_delay >> 3);
ret = regmap_update_bits(pfuze100->regmap,
@@ -139,8 +157,9 @@ static int pfuze100_set_ramp_delay(struct regulator_dev *rdev, int ramp_delay)
0xc0, ramp_bits << 6);
if (ret < 0)
dev_err(pfuze100->dev, "ramp failed, err %d\n", ret);
- } else
+ } else {
ret = -EACCES;
+ }

return ret;
}

---

this is needed because of regulator IDs are different for each PFuze, so cannot test condition on PFUZE100_SWBST id only.

- second and third edits are:

diff --git a/drivers/regulator/pfuze100-regulator.c b/drivers/regulator/pfuze100-regulator.c
index 8903399cd87a..2a6fae48235d 100644
--- a/drivers/regulator/pfuze100-regulator.c
+++ b/drivers/regulator/pfuze100-regulator.c

@@ -360,7 +379,6 @@ static struct pfuze_regulator pfuze3001_regulators[] = {
PFUZE100_SWB_REG(PFUZE3001, SW2, PFUZE100_SW2VOL, 0x7, pfuze3000_sw2lo),
PFUZE3000_SW3_REG(PFUZE3001, SW3, PFUZE100_SW3AVOL, 900000, 1650000, 50000),
PFUZE100_SWB_REG(PFUZE3001, VSNVS, PFUZE100_VSNVSVOL, 0x7, pfuze100_vsnvs),
- PFUZE100_FIXED_REG(PFUZE3001, VREFDDR, PFUZE100_VREFDDRCON, 750000),
PFUZE100_VGEN_REG(PFUZE3001, VLDO1, PFUZE100_VGEN1VOL, 1800000, 3300000, 100000),
PFUZE100_VGEN_REG(PFUZE3001, VLDO2, PFUZE100_VGEN2VOL, 800000, 1550000, 50000),
PFUZE3000_VCC_REG(PFUZE3001, VCCSD, PFUZE100_VGEN3VOL, 2850000, 3300000, 150000),
@@ -434,7 +452,6 @@ static struct of_regulator_match pfuze3001_matches[] = {
{ .name = "sw2", },
{ .name = "sw3", },
{ .name = "vsnvs", },
- { .name = "vrefddr", },
{ .name = "vldo1", },
{ .name = "vldo2", },
{ .name = "vccsd", },


diff --git a/include/linux/regulator/pfuze100.h b/include/linux/regulator/pfuze100.h
index 8cd1874fd29b..58ca77e73c23 100644
--- a/include/linux/regulator/pfuze100.h
+++ b/include/linux/regulator/pfuze100.h
@@ -67,13 +67,12 @@
#define PFUZE3001_SW2 1
#define PFUZE3001_SW3 2
#define PFUZE3001_VSNVS 3
-#define PFUZE3001_VREFDDR 4
-#define PFUZE3001_VLDO1 5
-#define PFUZE3001_VLDO2 6
-#define PFUZE3001_VCCSD 7
-#define PFUZE3001_V33 8
-#define PFUZE3001_VLDO3 9
-#define PFUZE3001_VLDO4 10
+#define PFUZE3001_VLDO1 4
+#define PFUZE3001_VLDO2 5
+#define PFUZE3001_VCCSD 6
+#define PFUZE3001_V33 7
+#define PFUZE3001_VLDO3 8
+#define PFUZE3001_VLDO4 9

---

since PF3001 doesn't have VREFDDR regulator. Consequently to this edit, example dts file contained into imx6ul-14x14-evk-PF3001 dts.zip should be updated, so

- fourth edit is:

--- imx6ul-14x14-evk-PF3001.dts 2016-03-01 11:34:06.000000000 +0100
+++ imx6ul-14x14-evk-PF3001_edit.dts 2017-07-17 13:57:31.294592294 +0200
@@ -427,7 +427,6 @@
regulator-max-microvolt = <1475000>;
regulator-boot-on;
regulator-always-on;
- regulator-ramp-delay = <6250>;
};

sw2_reg: sw2 {
@@ -450,11 +449,6 @@
regulator-boot-on;
regulator-always-on;
};
-
- vref_reg: vrefddr {
- regulator-boot-on;
- regulator-always-on;
- };

vgen1_reg: vldo1 {
regulator-min-microvolt = <1800000>;

---

regulator-ramp-delay property should be removed because PF3001 does not have dynamic voltage scaling.

- fifth edit:

diff diff --git a/Documentation/devicetree/bindings/regulator/pfuze100.txt b/Documentation/devicetree/bindings/regulator/pfuze100.txt
index 997174a46518..f4a416c0c0fb 100644
--- a/Documentation/devicetree/bindings/regulator/pfuze100.txt
+++ b/Documentation/devicetree/bindings/regulator/pfuze100.txt
@@ -1,7 +1,7 @@
PFUZE100 family of regulators

Required properties:
-- compatible: "fsl,pfuze100", "fsl,pfuze200", "fsl,pfuze3000"
+- compatible: "fsl,pfuze100", "fsl,pfuze200", "fsl,pfuze3000", "fsl,pfuze3001"
- reg: I2C slave address
- fsl,lpsr-mode: some registers need to be saved and restored in lpsr mode
for pfuze3000
@@ -18,6 +18,8 @@ Required child node:
sw1ab,sw2,sw3a,sw3b,swbst,vsnvs,vrefddr,vgen1~vgen6
--PFUZE3000
sw1a,sw1b,sw2,sw3,swbst,vsnvs,vrefddr,vldo1,vldo2,vccsd,v33,vldo3,vldo4
+ --PFUZE3001
+ sw1,sw2,sw3,vsnvs,vldo1,vldo2,vccsd,v33,vldo3,vldo4

Each regulator is defined using the standard binding for regulators.

@@ -299,3 +301,76 @@ Example 3: PFUZE3000
};
};
};
+
+Example 4: PFUZE3001
+
+ pmic: pfuze3001@08 {
+ compatible = "fsl,pfuze3001";
+ reg = <0x08>;
+
+ regulators {
+ sw1a_reg: sw1 {
+ regulator-min-microvolt = <700000>;
+ regulator-max-microvolt = <1475000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ sw2_reg: sw2 {
+ regulator-min-microvolt = <2500000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ sw3a_reg: sw3 {
+ regulator-min-microvolt = <900000>;
+ regulator-max-microvolt = <1650000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ snvs_reg: vsnvs {
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <3000000>;
+ regulator-boot-on;
+ regulator-always-on;
+ };
+
+ vgen1_reg: vldo1 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+
+ vgen2_reg: vldo2 {
+ regulator-min-microvolt = <800000>;
+ regulator-max-microvolt = <1550000>;
+ regulator-always-on;
+ };
+
+ vgen3_reg: vccsd {
+ regulator-min-microvolt = <2850000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+
+ vgen4_reg: v33 {
+ regulator-min-microvolt = <2850000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+
+ vgen5_reg: vldo3 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+
+ vgen6_reg: vldo4 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-always-on;
+ };
+ };
+ };

---

I hope this could help.

Regards

Mauro

No ratings
Version history
Last update:
‎06-06-2016 08:27 PM
Updated by: