iMX8MP : Delay BUCK5 (VDD_1V8) output of PCA9450CHN

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

iMX8MP : Delay BUCK5 (VDD_1V8) output of PCA9450CHN

Jump to solution
702 Views
khang_letruong
Senior Contributor III

Dear iMX Hardware Experts,

Due to an hardware error in the design of the power-sequence of the camera sensor, we are looking for having a work-around in the firmware to delay its 1V8 power supply (directly connected to VDD_1V8 - BUCK5 of PCA9450CHN) compared to its 2V8 power supply (via a regulator taking 3V3 - BUCK4 of PCA9450CHN as input) :

U701.png

Our custom board takes the iMX8MP EVK as reference. Therefore, it seems that the BUCK4 and BUCK5 are configured as regulator-always-on in both u-Boot and kernel :

-  u-Boot :

 

 

+&i2c1 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default", "gpio";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       pinctrl-1 = <&pinctrl_i2c1_gpio>;
+       scl-gpios = <&gpio5 14 GPIO_ACTIVE_HIGH>;
+       sda-gpios = <&gpio5 15 GPIO_ACTIVE_HIGH>;
+       status = "okay";
+
+       pmic: pca9450@25 {
+               reg = <0x25>;
+               compatible = "nxp,pca9450c";
+               /* PMIC PCA9450 PMIC_nINT GPIO1_IO3 */
+               pinctrl-0 = <&pinctrl_pmic>;
+               gpio_intr = <&gpio1 3 GPIO_ACTIVE_LOW>;
+
+               regulators {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       pca9450,pmic-buck2-uses-i2c-dvs;
+                       /* Run/Standby voltage */
+                       pca9450,pmic-buck2-dvs-voltage = <950000>, <850000>;
+
+                       ...
+                       buck4_reg: regulator@3 {
+                               reg = <3>;
+                               regulator-compatible = "buck4";
+                               regulator-min-microvolt = <600000>;
+                               regulator-max-microvolt = <3400000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       buck5_reg: regulator@4 {
+                               reg = <4>;
+                               regulator-compatible = "buck5";
+                               regulator-min-microvolt = <600000>;
+                               regulator-max-microvolt = <3400000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+                       ...
+               };
+       };
+};

 

- Kernel :

 

+&i2c1 {
+       clock-frequency = <400000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c1>;
+       status = "okay";
+
+       pmic: pca9450@25 {
+               reg = <0x25>;
+               compatible = "nxp,pca9450c";
+               /* PMIC PCA9450 PMIC_nINT GPIO1_IO3 */
+               pinctrl-0 = <&pinctrl_pmic>;
+               interrupt-parent = <&gpio1>;
+               interrupts =  GPIO_ACTIVE_LOW>;
+
+               regulators {
+                       ...
+
+                       buck4: BUCK4{
+                               regulator-name = "BUCK4";
+                               regulator-min-microvolt = <600000>;
+                               regulator-max-microvolt = <3400000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       buck5: BUCK5{
+                               regulator-name = "BUCK5";
+                               regulator-min-microvolt = <600000>;
+                               regulator-max-microvolt = <3400000>;
+                               regulator-boot-on;
+                               regulator-always-on;
+                       };
+
+                       ...
+               };
+       };
+};

 

And with above configurations, it seems that both 1v8 from buck5 and 3v3 from buck4 are available at nearly the same time, which causes some instability to the imaging sensor on a mass-production camera board.

Now if we wish to delay the 1v8 (buck5) a little time (in milisecond). There's some ideas such as :

- Add regulator-ramp-delay = <xxxx>  (to u-Boot, Kernel or both !?!?) to theoretically delay the moment it reaches its nominal voltage.

- Remove the regulator-boot-on property (from u-Boot, Kernel or both !?!?)

- Remove the regulator-always-on property so that it is back to its default setting : PMIC_ON_REQ = H  (from u-Boot, Kernel or both !?!?) :
PMIC-BULK5.png
 
I am looking forward to having your advice!
 
Thanks in advance and best regards,
Khang

 

Labels (1)
0 Kudos
1 Solution
561 Views
Rita_Wang
NXP TechSupport
NXP TechSupport

You can have the following try:

1. comment "regulator-boot-on"

 

2. add these 2 members to node
regulator-ramp-delay
regulator-enable-ramp-delay

View solution in original post

6 Replies
633 Views
Rita_Wang
NXP TechSupport
NXP TechSupport

Are you using the PMIC PCA9450CHN? What is the hardware error in the design of the power-sequence of the camera sensor in your design?

0 Kudos
595 Views
khang_letruong
Senior Contributor III

Hi @Rita_Wang ,

Are you using the PMIC PCA9450CHN?

Yes we do. That is the only option for iMX8MP + LPDDR4.

What is the hardware error in the design of the power-sequence of the camera sensor in your design?

It is that the 3v3 needs to be available early than the 1v8. But in our case, they were connected directly to the BUCK4 and BUCK5 of PCA9450CHN and they seem to be available at the same time.

Best Regards,

Khang

 

 

 

0 Kudos
575 Views
Rita_Wang
NXP TechSupport
NXP TechSupport

Did the board can work?

0 Kudos
573 Views
khang_letruong
Senior Contributor III

Hi @Rita_Wang ,

The camera boards work randomly with different success rate. The issue is described here : https://community.nxp.com/t5/i-MX-Processors/iMX8MP-Debug-MIPI2-issue/td-p/1728553

 

0 Kudos
556 Views
Rita_Wang
NXP TechSupport
NXP TechSupport

@khang_letruong We China team will have the Mid-Autumn Festival and National Day in the next 9days, so maybe will update to you when we are back, if your questions is urgent you can create new thread, and the  engineer in  other regions will support you.

562 Views
Rita_Wang
NXP TechSupport
NXP TechSupport

You can have the following try:

1. comment "regulator-boot-on"

 

2. add these 2 members to node
regulator-ramp-delay
regulator-enable-ramp-delay