Customer use below command to write value into register.
Write "OTP SW1AB VOLT reg." data : Device Address = 0x10、Register Address= 0xA0(OTP SW1AB VOLT reg.)、Master Driven Data=0x2B(reg. data)
But the value didn't change by below read command.
Read "OTP SW1AB VOLT reg." data : Device Address = 0x10、Register Address=0xA0(OTP SW1AB VOLT reg.)、Device Address=0x11、PMIC Driven Data=0x00 (reg. data)
Is this step wrong or miss some step?
Hi Everyone,
I am facing the same issue as posted by Soujanya K in this discussion trying to set SW1B to 1.375V in my custom SABRE-SD board. I am able to write the register successfully but the voltage gets set to 300mV only. Is their any solution to this issue?
Hi m.c.
I think that the problem is that you are trying to read register 0xA0 from the “Functional Page”, and since this register it’s in extended page 1, you first need to access to this extended page 1 to actually read what you wrote on the 0xA0 register: To access registers on Extended Page 1, one must first write 0x01 to the page register at address 0x7F
WRITE_I2C:7F:01 // Access PF0100 EXT Page1
WRITE_I2C:A0:2B // Sw1AB Voltage
READ_12C:A0 //Should read back the expected 0x2B
For more examples, tips and instructions about how to program the MMPF0100 OTP Programming, please take a look at the application note AN4536
Have a great day,
Jose Reyes
-----------------------------------------------------------------------------------------------------------------------
Note: If this post answers your question, please click the Correct Answer button. Thank you!
-----------------------------------------------------------------------------------------------------------------------
Customer use below sequence can write and read regiter SW1AB VOLT(Address 0xA0). But it will change back to original value 0x2B after reset. Is there any step missing?
WRITE_I2C:7F:01
WRITE_I2C:A0:2C
Read_I2C:A0 // read 0x2C
Hi m.c, I didn't verify the addresses but I2C reg updates are not permanent so after each
reset you will have the original values that PMIC was programmed.
Hope this helps.
Sinan Akman
Hello,
We are using a customized board with iMX6 processor, where Sabre-SD design is taken as reference.
Currently SW1B is working at 300mVolts but I would like to change SW1B to work at 1.375Volts,
in kernel_imx/arch/arm/mach-mx6/mx6q_cwt_pmic_pfuze100.c , inside pfuze100_init function i am trying to change PFUZE100_SW1BVOL register value as below :
#define PFUZE100_SW1BVOL | 39 |
#define PFUZE100_SW1BVOL_VSEL 0x2b
#define PFUZE100_SW1BVOL_VSEL_M (0x3f<<0)
ret = pfuze_reg_rmw(pfuze, PFUZE100_SW1BVOL, PFUZE100_SW1BVOL_VSEL_M, PFUZE100_SW1BVOL_VSEL);
In the above code i am getting the ret value as 0, but PFUZE100_SW1BVOL dint change when i read back using pfuze_reg_read
Is the way i am trying to write the register wrong.
Thanks
SK
Soujanya, perhaps you thought about this already but I generally use uboot pmic and I2C commands
to see if i can read and eventually modify those values. You can perhaps give this a try. I know
the latest mainline u-boot has support for all these.
Hope this helps
Sinan Akman
loichureau could you please check?