karo: tx6: configure PMIC to a consistent state upon boot
[karo-tx-uboot.git] / board / karo / tx6 / rn5t567.h
index 80ebf6c..4ab1b02 100644 (file)
@@ -23,6 +23,8 @@
 #define RN5T567_DC2CTL2                0x2f
 #define RN5T567_DC3CTL         0x30
 #define RN5T567_DC3CTL2                0x31
+#define RN5T567_DC4CTL         0x32
+#define RN5T567_DC4CTL2                0x33
 #define RN5T567_DC1DAC         0x36
 #define RN5T567_DC2DAC         0x37
 #define RN5T567_DC3DAC         0x38
@@ -31,6 +33,7 @@
 #define RN5T567_DC2DAC_SLP     0x3c
 #define RN5T567_DC3DAC_SLP     0x3d
 #define RN5T567_DC4DAC_SLP     0x3e
+#define RN5T567_IREN           0x40
 #define RN5T567_LDOEN1         0x44
 #define RN5T567_LDOEN2         0x45
 #define RN5T567_LDODIS         0x46
 #define RN5T567_LDO4DAC                0x4f
 #define RN5T567_LDO5DAC                0x50
 #define RN5T567_LDORTC1DAC     0x56 /* VBACKUP */
+#define RN5T567_IOSEL          0x90
+#define RN5T567_IOOUT          0x91
+#define RN5T567_GPEDGE1                0x92
+#define RN5T567_EN_GPIR                0x94
+#define RN5T567_INTPOL         0x9c
+#define RN5T567_INTEN          0x9d
 
 #define NOETIMSET_DIS_OFF_NOE_TIM      (1 << 3)
 
-#define DC2_DC2EN              (1 << 0)
-#define DC2_DC2DIS             (1 << 1)
+#define DCnCTL_DCnEN           (1 << 0)
+#define DCnCTL_DCnDIS          (1 << 1)
+#define DCnMODE(m)             (((m) & 0x3) << 4)
+#define DCnMODE_SLP(m)         (((m) & 0x3) << 6)
+#define DCnMODE_AUTO           0
+#define DCnMODE_PWM            1
+#define DCnMODE_PSM            2
 
 /* calculate voltages in 10mV */
-#define rn5t_v2r(v,n,m)                        DIV_ROUND(((((v) < (n)) ? (n) : (v)) - (n)), (m))
+#define rn5t_v2r(v,n,m)                        DIV_ROUND(((((v) * 10 < (n)) ? (n) : (v) * 10) - (n)), m)
 #define rn5t_r2v(r,n,m)                        (((r) * (m) + (n)) / 10)
 
 /* DCDC1-4 */
-#define rn5t_mV_to_regval(mV)          rn5t_v2r((mV) * 10, 6000, 125)
+#define rn5t_mV_to_regval(mV)          rn5t_v2r(mV, 6000, 125)
 #define rn5t_regval_to_mV(r)           rn5t_r2v(r, 6000, 125)
 
 /* LDO1-2, 4-5 */
-#define rn5t_mV_to_regval2(mV)         rn5t_v2r((mV) * 10, 9000, 250)
-#define rn5t_regval2_to_mV(r)          rn5t_r2v(r, 9000, 250)
+#define rn5t_mV_to_regval2(mV)         (rn5t_v2r(mV, 9000, 500) << 1)
+#define rn5t_regval2_to_mV(r)          rn5t_r2v((r) >> 1, 9000, 500)
 
 /* LDO3 */
-#define rn5t_mV_to_regval3(mV)         rn5t_v2r((mV) * 10, 6000, 250)
-#define rn5t_regval3_to_mV(r)          rn5t_r2v(r, 6000, 250)
+#define rn5t_mV_to_regval3(mV)         (rn5t_v2r(mV, 6000, 500) << 1)
+#define rn5t_regval3_to_mV(r)          rn5t_r2v((r) >> 1, 6000, 500)
 
 /* LDORTC */
-#define rn5t_mV_to_regval_rtc(mV)      rn5t_v2r((mV) * 10, 12000, 250)
-#define rn5t_regval_rtc_to_mV(r)       rn5t_r2v(r, 12000, 250)
+#define rn5t_mV_to_regval_rtc(mV)      (rn5t_v2r(mV, 12000, 500) << 1)
+#define rn5t_regval_rtc_to_mV(r)       rn5t_r2v((r) >> 1, 12000, 500)