Patchwork [U-Boot,03/14] Add power bus message definitions in twl4030.h

login
register
mail settings
Submitter Pali Rohár
Date Jan. 24, 2012, 2:28 p.m.
Message ID <1327415291-13260-4-git-send-email-pali.rohar@gmail.com>
Download mbox | patch
Permalink /patch/137560/
State Superseded
Headers show

Comments

Pali Rohár - Jan. 24, 2012, 2:28 p.m.
* Code copied from linux kernel 3.0.0 from file include/linux/i2c/twl.h

Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
---
Changes since original version:
   - Fixed commit message

 include/twl4030.h |   98 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 98 insertions(+), 0 deletions(-)
Marek Vasut - Jan. 25, 2012, 6:04 p.m.
> * Code copied from linux kernel 3.0.0 from file include/linux/i2c/twl.h

Do you need them?

Also, as in other patches, I noticed you don't CC Tom Rini. Also, Ccing Igor 
Grinberg. Please keep the Cc in next inkarnation of the series!

Guys, can you also help review the rest of the series ?

> 
> Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
> ---
> Changes since original version:
>    - Fixed commit message
> 
>  include/twl4030.h |   98
> +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 98
> insertions(+), 0 deletions(-)
> 
> diff --git a/include/twl4030.h b/include/twl4030.h
> index 9cd32ab..0c17f59 100644
> --- a/include/twl4030.h
> +++ b/include/twl4030.h
> @@ -151,6 +151,103 @@
>  #define TWL4030_PM_MASTER_SW_EVENTS_DEVSLP		(1 << 1)
>  #define TWL4030_PM_MASTER_SW_EVENTS_DEVOFF		(1 << 0)
> 
> +/* Power bus message definitions */
> +
> +/* The TWL4030/5030 splits its power-management resources (the various
> + * regulators, clock and reset lines) into 3 processor groups - P1, P2 and
> + * P3. These groups can then be configured to transition between sleep,
> wait-on + * and active states by sending messages to the power bus.  See
> Section 5.4.2 + * Power Resources of TWL4030 TRM
> + */
> +
> +/* Processor groups */
> +#define DEV_GRP_NULL		0x0
> +#define DEV_GRP_P1		0x1	/* P1: all OMAP devices */
> +#define DEV_GRP_P2		0x2	/* P2: all Modem devices */
> +#define DEV_GRP_P3		0x4	/* P3: all peripheral devices */
> +
> +/* Resource groups */
> +#define RES_GRP_RES		0x0	/* Reserved */
> +#define RES_GRP_PP		0x1	/* Power providers */
> +#define RES_GRP_RC		0x2	/* Reset and control */
> +#define RES_GRP_PP_RC		0x3
> +#define RES_GRP_PR		0x4	/* Power references */
> +#define RES_GRP_PP_PR		0x5
> +#define RES_GRP_RC_PR		0x6
> +#define RES_GRP_ALL		0x7	/* All resource groups */
> +
> +#define RES_TYPE2_R0		0x0
> +
> +#define RES_TYPE_ALL		0x7
> +
> +/* Resource states */
> +#define RES_STATE_WRST		0xF
> +#define RES_STATE_ACTIVE	0xE
> +#define RES_STATE_SLEEP		0x8
> +#define RES_STATE_OFF		0x0
> +
> +/* Power resources */
> +
> +/* Power providers */
> +#define RES_VAUX1               1
> +#define RES_VAUX2               2
> +#define RES_VAUX3               3
> +#define RES_VAUX4               4
> +#define RES_VMMC1               5
> +#define RES_VMMC2               6
> +#define RES_VPLL1               7
> +#define RES_VPLL2               8
> +#define RES_VSIM                9
> +#define RES_VDAC                10
> +#define RES_VINTANA1            11
> +#define RES_VINTANA2            12
> +#define RES_VINTDIG             13
> +#define RES_VIO                 14
> +#define RES_VDD1                15
> +#define RES_VDD2                16
> +#define RES_VUSB_1V5            17
> +#define RES_VUSB_1V8            18
> +#define RES_VUSB_3V1            19
> +#define RES_VUSBCP              20
> +#define RES_REGEN               21
> +/* Reset and control */
> +#define RES_NRES_PWRON          22
> +#define RES_CLKEN               23
> +#define RES_SYSEN               24
> +#define RES_HFCLKOUT            25
> +#define RES_32KCLKOUT           26
> +#define RES_RESET               27
> +/* Power Reference */
> +#define RES_Main_Ref            28
> +
> +#define TOTAL_RESOURCES		28
> +/*
> + * Power Bus Message Format ... these can be sent individually by Linux,
> + * but are usually part of downloaded scripts that are run when various
> + * power events are triggered.
> + *
> + *  Broadcast Message (16 Bits):
> + *    DEV_GRP[15:13] MT[12]  RES_GRP[11:9]  RES_TYPE2[8:7] RES_TYPE[6:4]
> + *    RES_STATE[3:0]
> + *
> + *  Singular Message (16 Bits):
> + *    DEV_GRP[15:13] MT[12]  RES_ID[11:4]  RES_STATE[3:0]
> + */
> +
> +#define MSG_BROADCAST(devgrp, grp, type, type2, state) \
> +	((devgrp) << 13 | 1 << 12 | (grp) << 9 | (type2) << 7 \
> +	| (type) << 4 | (state))
> +
> +#define MSG_SINGULAR(devgrp, id, state) \
> +	((devgrp) << 13 | 0 << 12 | (id) << 4 | (state))
> +
> +#define MSG_BROADCAST_ALL(devgrp, state) \
> +	((devgrp) << 5 | (state))
> +
> +#define MSG_BROADCAST_REF MSG_BROADCAST_ALL
> +#define MSG_BROADCAST_PROV MSG_BROADCAST_ALL
> +#define MSG_BROADCAST__CLK_RST MSG_BROADCAST_ALL
> +
>  /* Power Managment Receiver */
>  #define TWL4030_PM_RECEIVER_SC_CONFIG			0x5B
>  #define TWL4030_PM_RECEIVER_SC_DETECT1			0x5C
> @@ -311,6 +408,7 @@
>  #define TWL4030_PM_RECEIVER_VDAC_VSEL_18		0x03
>  #define TWL4030_PM_RECEIVER_VMMC1_VSEL_30		0x02
>  #define TWL4030_PM_RECEIVER_VMMC1_VSEL_32		0x03
> +#define TWL4030_PM_RECEIVER_VSIM_VSEL_18		0x03
> 
>  /* Device Selection in PM Receiver Module */
>  #define TWL4030_PM_RECEIVER_DEV_GRP_P1			0x20
Pali Rohár - Jan. 25, 2012, 7:24 p.m.
On Wednesday 25 January 2012 19:04:37 Marek Vasut wrote:
> > * Code copied from linux kernel 3.0.0 from file include/linux/i2c/twl.h
> 
> Do you need them?
> 

Yes, needed for twl regulator for enabling eMMC.
Igor Grinberg - Jan. 26, 2012, 7:15 a.m.
On 01/25/12 20:04, Marek Vasut wrote:
>> * Code copied from linux kernel 3.0.0 from file include/linux/i2c/twl.h
> 
> Do you need them?
> 
> Also, as in other patches, I noticed you don't CC Tom Rini. Also, Ccing Igor 
> Grinberg. Please keep the Cc in next inkarnation of the series!
> 
> Guys, can you also help review the rest of the series ?

I'm currently really busy, but I'll try to give it a quick glance.

Patch

diff --git a/include/twl4030.h b/include/twl4030.h
index 9cd32ab..0c17f59 100644
--- a/include/twl4030.h
+++ b/include/twl4030.h
@@ -151,6 +151,103 @@ 
 #define TWL4030_PM_MASTER_SW_EVENTS_DEVSLP		(1 << 1)
 #define TWL4030_PM_MASTER_SW_EVENTS_DEVOFF		(1 << 0)
 
+/* Power bus message definitions */
+
+/* The TWL4030/5030 splits its power-management resources (the various
+ * regulators, clock and reset lines) into 3 processor groups - P1, P2 and
+ * P3. These groups can then be configured to transition between sleep, wait-on
+ * and active states by sending messages to the power bus.  See Section 5.4.2
+ * Power Resources of TWL4030 TRM
+ */
+
+/* Processor groups */
+#define DEV_GRP_NULL		0x0
+#define DEV_GRP_P1		0x1	/* P1: all OMAP devices */
+#define DEV_GRP_P2		0x2	/* P2: all Modem devices */
+#define DEV_GRP_P3		0x4	/* P3: all peripheral devices */
+
+/* Resource groups */
+#define RES_GRP_RES		0x0	/* Reserved */
+#define RES_GRP_PP		0x1	/* Power providers */
+#define RES_GRP_RC		0x2	/* Reset and control */
+#define RES_GRP_PP_RC		0x3
+#define RES_GRP_PR		0x4	/* Power references */
+#define RES_GRP_PP_PR		0x5
+#define RES_GRP_RC_PR		0x6
+#define RES_GRP_ALL		0x7	/* All resource groups */
+
+#define RES_TYPE2_R0		0x0
+
+#define RES_TYPE_ALL		0x7
+
+/* Resource states */
+#define RES_STATE_WRST		0xF
+#define RES_STATE_ACTIVE	0xE
+#define RES_STATE_SLEEP		0x8
+#define RES_STATE_OFF		0x0
+
+/* Power resources */
+
+/* Power providers */
+#define RES_VAUX1               1
+#define RES_VAUX2               2
+#define RES_VAUX3               3
+#define RES_VAUX4               4
+#define RES_VMMC1               5
+#define RES_VMMC2               6
+#define RES_VPLL1               7
+#define RES_VPLL2               8
+#define RES_VSIM                9
+#define RES_VDAC                10
+#define RES_VINTANA1            11
+#define RES_VINTANA2            12
+#define RES_VINTDIG             13
+#define RES_VIO                 14
+#define RES_VDD1                15
+#define RES_VDD2                16
+#define RES_VUSB_1V5            17
+#define RES_VUSB_1V8            18
+#define RES_VUSB_3V1            19
+#define RES_VUSBCP              20
+#define RES_REGEN               21
+/* Reset and control */
+#define RES_NRES_PWRON          22
+#define RES_CLKEN               23
+#define RES_SYSEN               24
+#define RES_HFCLKOUT            25
+#define RES_32KCLKOUT           26
+#define RES_RESET               27
+/* Power Reference */
+#define RES_Main_Ref            28
+
+#define TOTAL_RESOURCES		28
+/*
+ * Power Bus Message Format ... these can be sent individually by Linux,
+ * but are usually part of downloaded scripts that are run when various
+ * power events are triggered.
+ *
+ *  Broadcast Message (16 Bits):
+ *    DEV_GRP[15:13] MT[12]  RES_GRP[11:9]  RES_TYPE2[8:7] RES_TYPE[6:4]
+ *    RES_STATE[3:0]
+ *
+ *  Singular Message (16 Bits):
+ *    DEV_GRP[15:13] MT[12]  RES_ID[11:4]  RES_STATE[3:0]
+ */
+
+#define MSG_BROADCAST(devgrp, grp, type, type2, state) \
+	((devgrp) << 13 | 1 << 12 | (grp) << 9 | (type2) << 7 \
+	| (type) << 4 | (state))
+
+#define MSG_SINGULAR(devgrp, id, state) \
+	((devgrp) << 13 | 0 << 12 | (id) << 4 | (state))
+
+#define MSG_BROADCAST_ALL(devgrp, state) \
+	((devgrp) << 5 | (state))
+
+#define MSG_BROADCAST_REF MSG_BROADCAST_ALL
+#define MSG_BROADCAST_PROV MSG_BROADCAST_ALL
+#define MSG_BROADCAST__CLK_RST MSG_BROADCAST_ALL
+
 /* Power Managment Receiver */
 #define TWL4030_PM_RECEIVER_SC_CONFIG			0x5B
 #define TWL4030_PM_RECEIVER_SC_DETECT1			0x5C
@@ -311,6 +408,7 @@ 
 #define TWL4030_PM_RECEIVER_VDAC_VSEL_18		0x03
 #define TWL4030_PM_RECEIVER_VMMC1_VSEL_30		0x02
 #define TWL4030_PM_RECEIVER_VMMC1_VSEL_32		0x03
+#define TWL4030_PM_RECEIVER_VSIM_VSEL_18		0x03
 
 /* Device Selection in PM Receiver Module */
 #define TWL4030_PM_RECEIVER_DEV_GRP_P1			0x20