This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

OMAP4470 + TPS62361, how to set the vdd_mpu ?

Other Parts Discussed in Thread: TWL6030, TWL6032, 4460

Hi All,

I need some help on my panda board features 4470 + tps62361 + twl6030.

the VDD_CORE and VDD_IVA are supplied by twl6030, and the VDD_MPU is supplied by tps62361.

but the board is not stable, it will stuck sometimes, when stuck, the LCD is still on, but the cpu already hang, about 10 seconds, the board restart itself.

Now we can sure that it is caused by the voltage of VDD_MPU, I tried to improve the voltage of it like below, and disable the SmartReflex to do calibate


diff --git a/arch/arm/mach-omap2/opp4xxx_data.c b/arch/arm/mach-omap2/opp4xxx_data.c
index 8bebfca..642309f 100644
--- a/arch/arm/mach-omap2/opp4xxx_data.c
+++ b/arch/arm/mach-omap2/opp4xxx_data.c
@@ -358,6 +358,7 @@ static struct omap_opp_def __initdata omap446x_opp_def_list[] = {
* Structures containing OMAP4470 voltage supported and various
* voltage dependent data for each VDD.
*/
+#if 0
#define OMAP4470_VDD_MPU_OPP50_UV 1025000
#define OMAP4470_VDD_MPU_OPP100_UV 1200000
#define OMAP4470_VDD_MPU_OPPTURBO_UV 1312000
@@ -365,13 +366,29 @@ static struct omap_opp_def __initdata omap446x_opp_def_list[] = {
#define OMAP4470_VDD_MPU_OPPNITROSB_UV 1380000

struct omap_volt_data omap447x_vdd_mpu_volt_data[] = {
- VOLT_DATA_DEFINE(OMAP4470_VDD_MPU_OPP50_UV, 0, OMAP44XX_CONTROL_FUSE_MPU_OPP50, 0xf4, 0x0c, OMAP_ABB_NOMINAL_OPP),
- VOLT_DATA_DEFINE(OMAP4470_VDD_MPU_OPP100_UV, 0, OMAP44XX_CONTROL_FUSE_MPU_OPP100, 0xf9, 0x16, OMAP_ABB_NOMINAL_OPP),
- VOLT_DATA_DEFINE(OMAP4470_VDD_MPU_OPPTURBO_UV, 0, OMAP44XX_CONTROL_FUSE_MPU_OPPTURBO, 0xfa, 0x23, OMAP_ABB_NOMINAL_OPP),
- VOLT_DATA_DEFINE(OMAP4470_VDD_MPU_OPPNITRO_UV, 0, OMAP44XX_CONTROL_FUSE_MPU_OPPNITRO, 0xfa, 0x27, OMAP_ABB_FAST_OPP),
+ VOLT_DATA_DEFINE(OMAP4470_VDD_MPU_OPP50_UV, 90000, OMAP44XX_CONTROL_FUSE_MPU_OPP50, 0xf4, 0x0c, OMAP_ABB_NOMINAL_OPP),
+ VOLT_DATA_DEFINE(OMAP4470_VDD_MPU_OPP100_UV, 60000, OMAP44XX_CONTROL_FUSE_MPU_OPP100, 0xf9, 0x16, OMAP_ABB_NOMINAL_OPP),
+ VOLT_DATA_DEFINE(OMAP4470_VDD_MPU_OPPTURBO_UV, 30000, OMAP44XX_CONTROL_FUSE_MPU_OPPTURBO, 0xfa, 0x23, OMAP_ABB_NOMINAL_OPP),
+ VOLT_DATA_DEFINE(OMAP4470_VDD_MPU_OPPNITRO_UV, 30000, OMAP44XX_CONTROL_FUSE_MPU_OPPNITRO, 0xfa, 0x27, OMAP_ABB_FAST_OPP),
VOLT_DATA_DEFINE(OMAP4470_VDD_MPU_OPPNITROSB_UV, 30000, OMAP44XX_CONTROL_FUSE_MPU_OPPNITROSB, 0xfa, 0x27, OMAP_ABB_FAST_OPP),
VOLT_DATA_DEFINE(0, 0, 0, 0, 0, 0),
};
+#else
+#define OMAP4470_VDD_MPU_OPP50_UV 1040000
+#define OMAP4470_VDD_MPU_OPP100_UV 1100000
+#define OMAP4470_VDD_MPU_OPPTURBO_UV 1170000
+#define OMAP4470_VDD_MPU_OPPNITRO_UV 1310000
+#define OMAP4470_VDD_MPU_OPPNITROSB_UV 1410000
+
+struct omap_volt_data omap447x_vdd_mpu_volt_data[] = {
+ VOLT_DATA_DEFINE(OMAP4470_VDD_MPU_OPP50_UV, 1, OMAP44XX_CONTROL_FUSE_MPU_OPP50, 0xf4, 0x0c, OMAP_ABB_NOMINAL_OPP),
+ VOLT_DATA_DEFINE(OMAP4470_VDD_MPU_OPP100_UV, 1, OMAP44XX_CONTROL_FUSE_MPU_OPP100, 0xf9, 0x16, OMAP_ABB_NOMINAL_OPP),
+ VOLT_DATA_DEFINE(OMAP4470_VDD_MPU_OPPTURBO_UV, 1, OMAP44XX_CONTROL_FUSE_MPU_OPPTURBO, 0xfa, 0x23, OMAP_ABB_NOMINAL_OPP),
+ VOLT_DATA_DEFINE(OMAP4470_VDD_MPU_OPPNITRO_UV, 1, OMAP44XX_CONTROL_FUSE_MPU_OPPNITRO, 0xfa, 0x27, OMAP_ABB_FAST_OPP),
+ VOLT_DATA_DEFINE(OMAP4470_VDD_MPU_OPPNITROSB_UV, 1, OMAP44XX_CONTROL_FUSE_MPU_OPPNITROSB, 0xfa, 0x27, OMAP_ABB_FAST_OPP),


Now the board can work more stable, but still stuck. specially when browsering the website. our WIFI chip is WL128X.

So, does anyone can give me some suggestion about this issue ?

thanks for your any reply!