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.

BQ25622: How to get a stable Power Output from the Battery Charger without connecting Battery

Part Number: BQ25622

Tool/software:

We are using BQ25622 for Battery charging application in our system. It receives input voltage VBUS (5V0_MAIN) from 5v Buck converter. Our system (AM62, Wi-Fi, GSM, GPS etc.) is powered by "VMAIN_SYS". We have requirement where in our system should work with or without battery so by default battery charger will be in a charger enable mode. Can you Suggest How to get a stable power at "VMAIN_SYS" if battery is not inserted. Since we are facing system reboot issue when Wi-Fi image being loaded, sim card insertion (when battery is not present in the system).

  

CE, I2C, INT, STAT pins are connected to AM62 processor

  • Hello,

    Whenever the battery is not connected please disable charge in the registers.

    Regards,

    Mike Emanuel

  • Hi Michael, Are you referring to the Register (EN_CHG). If yes, then please let us know apart from "EN_CHG" which registers need to be disabled for stable power without battery

  • Hello,

    Yes, set Charge Disable by setting CHG_EN = 0.

    Regards,

    Mike Emanuel

  • Hi Mike Emanuel,

    Here i want to bring 2 scenarios .

    case 1 : when only external power supply connected , GSM & wifi modules creates rebooting the system .

    case 2 : when only battery connected , then GSM & Wifi  working fine (not rebooting the system)

    case 3 : when battery and external supply connected also system is not rebooting

    Thanks,

    Naresh

  • Hi Naresh, 

    case 1 : when battery connected , GSM & wifi modules creates rebooting the system .

    Can you please help to provide some additional details for case 1? 

    -Is only the battery connected or are both VBUS input and battery connected in this instance? 

    -What is the register configuration of BQ25622 during case 1? 

    Best Regards,

    Garrett

  • HI

    =>When only external power supply(12v ) feeding to system (battery is not connected ), GSM and Wifi makes rebooting the system . but if we disable battery node from device tree file ,then rebooting is not happending but battery is not detecting as expected).

    =>When only Battery connected (no external power supply) , system not rebooting 

    => When External power supply & battery connected togetherm , in that case also system is not rebooting 

    So , we are getting the issue when only external power supply connected .

    May i know which register should i check ? please suggest .

    Below Register i checked when both battery and external power supply connected.

    register 16 - 0xa0

    Register 17 - 0x4f

    Register 18 - 0x4

    Register 19 - 0xc4

    Register 1e - 0x0c

    Thanks,

    Naresh

  • Hi Naresh, 

    Thank you for your reply and further clarification. 

    When only external power supply(12v ) feeding to system (battery is not connected ), GSM and Wifi makes rebooting the system . but if we disable battery node from device tree file ,then rebooting is not happending

    Please help to confirm if my understanding is correct. If you disable charge as per TI recommendation from earlier in this thread you see no issue with rebooting the system? If this is true then BQ25622 appears to be functioning as expected and I do not need you to further check any registers.

    When no battery is connected charge must be disabled to ensure SYS output is regulated properly. 

    then rebooting is not happending but battery is not detecting as expected

    The BQ25622 does not have a built in function to automatically detect if a battery is present or not. If you are interested I can help to provide an algorithm example of how you can perform battery detection using your host MCU and bQ25622 registers. 

    Best Regards,

    Garrett 

  • Hi Garrett,

    Good day!! Hope you are doing good!

    Thanks for your reply, I am Mr. Amarnath replying to this thread on behalf of my teammate Mr. Naresh.

    Garrett, it would be a great help if you can provide us an algorithm example of how to perform the battery detection using our host MCU & BQ25622 registers and based on the battery detection we also need to set the CE pin high/low (i,e.: Charging Functionality Enabled/Disabled).

    Meanwhile we also have another issue like when we try to Pull-Up the CE pin high through the hardware, then we are not able to detect the Battery charger IC (BQ25622) in the i2c bus and so we are not able to read the health of the battery to charge the battery. But I hope your battery detection algorithm shall solve this problem as well. Correct me if I am wrong.

    Thank you.

    Regards
    Amarnath G

  • Hi Amarnath, 

    Thanks for the reply. Please see my comments below. 

    Below images are the battery detection algorithm example you can implement with your host MCU and BQ25622. A couple things I would like to point out. 

    • You are free to pull /CE pin high/low or write 'EN_CHG' bit via I2C to disable/enable charge. You do not need to perform both actions, so you can choose what is more convenient for your system. 
    • The register configurations in part 2 step 1 are intended to mitigate the SYS output instability when charge is enabled and no battery is present. After battery detection algorithm is complete the various settings modified in step 1 should be set back to the desired values for normal operation.

    Please let me know if you have any follow-up questions on the battery detection algorithm example.

    Meanwhile we also have another issue like when we try to Pull-Up the CE pin high through the hardware, then we are not able to detect the Battery charger IC (BQ25622) in the i2c bus and so we are not able to read the health of the battery to charge the battery.

    Pulling /CE pin high to disable charge does not have any effect on I2C communications. I have verified BQ25622 can still communicate with MCU host via I2C with /CE pulled high. Based on this it appears something external to the BQ25622 IC is preventing I2C communication in the case you describe. 

    Best Regards,

    Garrett

  • Hi Garrett,

    Thanks for information.

    We implemented the Battery algorithm part1 where we noted "Vbat_adc values from register 0x30 "  in below mentioned cases .

    we tested the below cases with battery (3.7volts ,1000mA)  and external power supply (12v).

    case 1 : with only External Power supply :

    we took the vbat_Adc readings and other registers values continously we observed that vbat adc values changes on reboot and the value is constant if read again.  Please find the atatched log where we took vbat_Adc readings.

    with power supply
    ==================
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~# dmesg | grep monika[   44.648413] kauditd_printk_skb: 3 callbacks suppressed
    [   44.648432] audit: type=1334 audit(1727788297.396:15): prog-id=10 op=UNLOAD
    [   44.663476] audit: type=1334 audit(1727788297.412:16): prog-id=9 op=UNLOAD
    
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~# dmesg | grep monika
    [    4.219916] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.229364] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.237320] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.246392] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.262256] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.271255] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.281815] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.295937] monika: vbat_adc_value value: 63520
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    =======================================================================================================
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    4.224559] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.233662] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.241608] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.250675] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.266519] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.275533] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.286078] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.296590] monika: vbat_adc_value value: 47264
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    4.224559] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.233662] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.241608] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.250675] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.266519] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.275533] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.286078] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.296590] monika: vbat_adc_value value: 47264
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    4.224559] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.233662] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.241608] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.250675] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.266519] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.275533] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.286078] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.296590] monika: vbat_adc_value value: 47264
    root@am62xx-evm:~# [   44.657012] kauditd_printk_skb: 3 callbacks suppressed
    [   44.657032] audit: type=1334 audit(1727788357.628:15): prog-id=10 op=UNLOAD
    [   44.672473] audit: type=1334 audit(1727788357.644:16): prog-id=9 op=UNLOAD
    
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    4.224559] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.233662] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.241608] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.250675] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.266519] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.275533] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.286078] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.296590] monika: vbat_adc_value value: 47264
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    4.224559] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.233662] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.241608] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.250675] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.266519] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.275533] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.286078] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.296590] monika: vbat_adc_value value: 47264
    root@am62xx-evm:~#
    ================================================================================================================oot@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    4.236542] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.245648] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.253592] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.262661] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.279071] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.288129] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.298677] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.309192] monika: vbat_adc_value value: 50000
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    4.236542] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.245648] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.253592] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.262661] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.279071] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.288129] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.298677] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.309192] monika: vbat_adc_value value: 50000
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    4.236542] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa0
    [    4.245648] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    4.253592] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    4.262661] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.279071] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.288129] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.298677] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.309192] monika: vbat_adc_value value: 50000
    root@am62xx-evm:~#

    case 2 : with battery + with external power supply 

    we took "Vbat_Adc " readings continously ,but we observed that this value is constant even if we rebooted. Please find the atatched log where we took vbat_Adc readings

    with battery + power supply
    ============================
    root@am62xx-evm:~# dmesg | grep monika
    [    4.215695] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.226605] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.235462] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.246369] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.264091] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.273995] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.284576] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.296904] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# dmesg | grep monika
    [    4.215695] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.226605] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.235462] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.246369] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.264091] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.273995] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.284576] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.296904] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# dmesg | grep monika
    [    4.215695] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.226605] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.235462] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.246369] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.264091] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.273995] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.284576] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.296904] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# dmesg | grep monika
    [    4.215695] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.226605] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.235462] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.246369] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.264091] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.273995] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.284576] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.296904] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# dmesg | grep monika
    [    4.215695] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.226605] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.235462] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.246369] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.264091] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.273995] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.284576] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.296904] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# dmesg | grep monika
    [    4.215695] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.226605] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.235462] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.246369] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.264091] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.273995] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.284576] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.296904] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# dmesg | grep monika
    [    4.215695] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.226605] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.235462] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.246369] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.264091] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.273995] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.284576] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.296904] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    4.215695] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.226605] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.235462] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.246369] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.264091] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.273995] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.284576] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.296904] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# dmesg | grep monika
    [    4.215695] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.226605] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.235462] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.246369] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.264091] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.273995] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.284576] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.296904] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# dmesg | grep monika
    [    4.215695] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.226605] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.235462] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.246369] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.264091] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.273995] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.284576] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.296904] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~#
    
    
    =========================================================================================================
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    4.215650] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.226563] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.235635] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.246737] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.264469] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.274380] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.284950] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.297277] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    4.215650] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.226563] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.235635] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.246737] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.264469] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.274380] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.284950] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.297277] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# dmesg | grep monika
    [    4.215650] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.226563] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.235635] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.246737] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.264469] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.274380] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.284950] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.297277] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# dmesg | grep monika
    [    4.215650] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.226563] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.235635] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.246737] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.264469] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.274380] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.284950] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.297277] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# dmesg | grep monika
    [    4.215650] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.226563] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.235635] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.246737] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.264469] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.274380] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    4.284950] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.297277] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~#

    case 3 : with only Battery

    we took  " Vbat_adc " continous readings , but we observed that this value is constant even if we rebooted . please find the atatched log where we took vbat_Adc readings

    With only battery
    ===================
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    4.207224] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.215799] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.223641] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.232235] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.247194] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.255892] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    [    4.265750] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.275616] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    4.207224] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.215799] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.223641] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.232235] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.247194] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.255892] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    [    4.265750] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.275616] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# dmesg | grep monika
    [    4.207224] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.215799] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.223641] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.232235] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.247194] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.255892] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    [    4.265750] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.275616] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# dmesg | grep monika
    [    4.207224] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.215799] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.223641] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.232235] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.247194] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.255892] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    [    4.265750] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.275616] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    4.207224] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.215799] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.223641] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.232235] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.247194] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.255892] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    [    4.265750] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.275616] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# dmesg | grep monika
    [    4.207224] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.215799] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.223641] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.232235] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.247194] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.255892] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    [    4.265750] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.275616] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    4.207224] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.215799] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.223641] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.232235] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.247194] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.255892] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    [    4.265750] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.275616] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# dmesg | grep monika
    [    4.207224] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.215799] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.223641] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.232235] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.247194] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.255892] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    [    4.265750] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.275616] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# dmesg | grep monika
    [    4.207224] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.215799] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.223641] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.232235] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.247194] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.255892] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    [    4.265750] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.275616] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# [   44.683838] kauditd_printk_skb: 3 callbacks suppressed
    [   44.683858] audit: type=1334 audit(1727788237.204:15): prog-id=10 op=UNLOAD
    [   44.698730] audit: type=1334 audit(1727788237.220:16): prog-id=9 op=UNLOAD
    
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    4.207224] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.215799] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.223641] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.232235] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.247194] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.255892] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    [    4.265750] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.275616] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# dmesg | grep monika
    [    4.207224] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.215799] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.223641] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.232235] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.247194] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.255892] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    [    4.265750] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.275616] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# dmesg | grep monika
    [    4.207224] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.215799] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.223641] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.232235] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.247194] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.255892] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    [    4.265750] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.275616] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~# dmesg | grep monika
    [    4.207224] monika: part1 : before clearing 5th bit of EN_CHG register value: 0xa8
    [    4.215799] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    4.223641] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.232235] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    4.247194] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    4.255892] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    [    4.265750] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    4.275616] monika: vbat_adc_value value: 46592
    root@am62xx-evm:~#

    Please find the Battery algorithm part1 code  

    static int bq2562x_detect_work(struct bq2562x_device *bq) {
            int ret;
            //static int count = 0;
            int vbat_a_lsb, vbat_a_msb;
            u16 vbat_adc_value;
            int en_chg_value, ibat_dis_value;
            const u8 undervoltage_threshold = 0x20;
            const u8 no_battery_threshold = 0x10;
            int dis_term;
    
            //*******************************
            //***** ALGORITHM PART 1 ********
            //*******************************
    
            //step 1
            // 0x16 register 5th bit to clear
             en_chg_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_EN_CHG_REG);
             en_chg_value |= (1 << 5);
             i2c_smbus_write_byte_data(bq->client, BQ2562X_EN_CHG_REG, en_chg_value);
    
            en_chg_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_EN_CHG_REG);
    
            pr_info("monika: part1 : before clearing 5th bit of EN_CHG register value: 0x%02x\n", en_chg_value);
            en_chg_value &= ~(1 << 5);
            ret = i2c_smbus_write_byte_data(bq->client, BQ2562X_EN_CHG_REG, en_chg_value);
            en_chg_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_EN_CHG_REG);
            pr_info("monika: part1 : After clearing 5th bit EN_CHG register value: 0x%02x\n", en_chg_value);
    
            //step 2
            //0x16 register 6th bit clear
            ibat_dis_value  = i2c_smbus_read_byte_data(bq->client, BQ2562X_FORCE_IBATDIS_REG);
            pr_info("monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x%02x\n", ibat_dis_value);
            ret = i2c_smbus_write_byte_data(bq->client, BQ2562X_FORCE_IBATDIS_REG, ibat_dis_value | (6 << 0x1) );
    
            ibat_dis_value  = i2c_smbus_read_byte_data(bq->client, BQ2562X_FORCE_IBATDIS_REG);
            pr_info("monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x%02x\n", ibat_dis_value);
    
            //step 3
            usleep_range(5000, 5100);
            
             //step 4
            // 0x16 register set
            ibat_dis_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_FORCE_IBATDIS_REG);
            ibat_dis_value &= ~(1 << 6);
            i2c_smbus_write_byte_data(bq->client, BQ2562X_FORCE_IBATDIS_REG, ibat_dis_value );
            ibat_dis_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_FORCE_IBATDIS_REG);
            pr_info("monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x%02x\n", ibat_dis_value);
    
            //step 5
            //0x26 register , enable 6th and 7th bit
            vbat_adc_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_ADC_REG);
            pr_info("monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x%02x\n", vbat_adc_value);
            // Set ADC to one-shot mode-> ADC_RATE and enable ADC_EN
            ret = i2c_smbus_write_byte_data(bq->client, BQ2562X_ADC_REG, vbat_adc_value | ((1 << 6) | (1 << 7))); // ADC_RATE=1, ADC_EN=1
            vbat_adc_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_ADC_REG);
            pr_info("monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0x%02x\n", vbat_adc_value);
    
            //step 6
            //0x30 register
            vbat_a_lsb =  i2c_smbus_read_byte_data(bq->client, BQ2562X_ADC_VBAT_LSB );
            vbat_a_msb =  i2c_smbus_read_byte_data(bq->client, BQ2562X_ADC_VBAT_MSB );
            vbat_adc_value = ((vbat_a_msb << 8) | vbat_a_lsb) >> BQ2562X_ADC_VBAT_MOVE_STEP;
            vbat_adc_value = vbat_adc_value * BQ2562X_ADC_VBAT_STEP_uV;
            pr_info("monika: vbat_adc_value value: %ld\n", vbat_adc_value);
    
            //FIX it below code
            //
            //
            //
            // Check if VBAT ADC value indicates a valid battery
    }
    

    Kindly help me what is the battery undervoltage threshold value  and what might be the expected range of vbat_adc value ?

    Kindly provide your inputs /suggestions .

    Thanks ,

    Naresh

  • Hi Naresh, 

    Please see my comments below. 

    If you only have the battery connected it is expected that VBAT_ADC will be relatively constant. It will lower over time as battery discharges. For external power only case if charge is disabled then it is expected that VBAT_ADC will remain constant. 

    Have you confirmed that the VBAT_ADC value read from REG0x30 matches expected battery voltage in your testing? Expected range is from fully discharge voltage for your specific battery to full charge voltage, which is typically 4.2V for Li-Ion battery.

    The battery undervoltage threshold will be unique to your battery/system, hence why it was not defined in the slide. The BQ25622 has a built in battery undervoltage protection with a falling threshold of 2.2V, but often customers have an external battery protector which disconnects battery from charger IC at a higher voltage. 

    Best Regards,

    Garrett

  • Hi Garret,

    Thanks for your quick response.

    By taking Battery undervoltage threshold value as 2.2v , implemented both part1 and part2 algorithm recommanded by you . Kindly have a look 

    This bq2562x_detect_work called in the end of the probe function 
    
    //TESSOLVE 
    static int bq2562x_detect_work(struct bq2562x_device *bq) {
            int ret;
            //static int count = 0;
            int vbat_a_lsb, vbat_a_msb;
            long int vbat_adc_value;
            int en_chg_value, ibat_dis_value;
            long int undervoltage_threshold = 2200000;
            int dis_term, dis_pfm;
    
            //*******************************
            //***** ALGORITHM PART 1 ********
            //*******************************
    
            //PART 1 - step 1
            /*
             * Ensure charging is disabled by writting
             * EN_CHG = 0 (write 0x16[5] = 0
             *
             */
             //en_chg_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_EN_CHG_REG);
             //en_chg_value |= (1 << 5);
             //i2c_smbus_write_byte_data(bq->client, BQ2562X_EN_CHG_REG, en_chg_value);
    
             en_chg_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_EN_CHG_REG);
    
             // pr_info("monika: part1 : before clearing 5th bit of EN_CHG register value: 0x%02x\n", en_chg_value);
             en_chg_value &= ~(1 << 5);
             ret = i2c_smbus_write_byte_data(bq->client, BQ2562X_EN_CHG_REG, en_chg_value);
             en_chg_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_EN_CHG_REG);
             pr_info("monika: part1 : After clearing 5th bit EN_CHG register value: 0x%02x\n", en_chg_value);
    
            // PART 1 - step 2
            /*
             * Enable IBAT Discharge current
             * by writting FORCE_IBATDIS = 1 (write 0x16[6] = 1)
             *
             */
            ibat_dis_value  = i2c_smbus_read_byte_data(bq->client, BQ2562X_FORCE_IBATDIS_REG);
            pr_info("monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x%02x\n", ibat_dis_value);
            ret = i2c_smbus_write_byte_data(bq->client, BQ2562X_FORCE_IBATDIS_REG, ibat_dis_value | (6 << 0x1) );
    
            ibat_dis_value  = i2c_smbus_read_byte_data(bq->client, BQ2562X_FORCE_IBATDIS_REG);
            pr_info("monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x%02x\n", ibat_dis_value);
    
            //PART 1 - step 3
            /*
             * wait 5ms
             *
             */
            msleep(5);  // 5 milliseconds
    
            //PART 1 - step 4
            /*
             * Disable IBAT Discharge current
             * by writting FORCE_IBATDIS = 0 (write 0x16[6] = 0)
             *
             */
            ibat_dis_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_FORCE_IBATDIS_REG);
            ibat_dis_value &= ~(1 << 6);
            i2c_smbus_write_byte_data(bq->client, BQ2562X_FORCE_IBATDIS_REG, ibat_dis_value );
            ibat_dis_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_FORCE_IBATDIS_REG);
            pr_info("monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x%02x\n", ibat_dis_value);
    
            //PART 1 - step 5
            /*
             * set adc to one-shot mode 
             * and enable by writting ADC_RATE = 1 (write 0x26[6]=1) and ADC_EN = 1 (write 0x26[7] = 1)
             */
            vbat_adc_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_ADC_REG);
            pr_info("monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x%02x\n", vbat_adc_value);
            // Set ADC to one-shot mode-> ADC_RATE and enable ADC_EN
            ret = i2c_smbus_write_byte_data(bq->client, BQ2562X_ADC_REG, vbat_adc_value | ((1 << 6) | (1 << 7))); // ADC_RATE=1, ADC_EN=1
            vbat_adc_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_ADC_REG);
            pr_info("monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0x%02x\n", vbat_adc_value);
    
            //PART1 - step 6
            /*
             * READBACK VBAT_ADC value from 0x30 register
             *
             * if VBAT_ADC value  > battery undervoltage threshold , then valid battery attached and charge can be enabled
             * else continue PART2 
             *
             */
            vbat_a_lsb =  i2c_smbus_read_byte_data(bq->client, BQ2562X_ADC_VBAT_LSB );
            vbat_a_msb =  i2c_smbus_read_byte_data(bq->client, BQ2562X_ADC_VBAT_MSB );
            vbat_adc_value = ((vbat_a_msb << 8) | vbat_a_lsb) >> BQ2562X_ADC_VBAT_MOVE_STEP;
            vbat_adc_value = vbat_adc_value & 0x0fff;
            vbat_adc_value = vbat_adc_value * BQ2562X_ADC_VBAT_STEP_uV;
            pr_info("monika: vbat_adc_value value: %ld\n", vbat_adc_value);
            pr_info("monika: battery undervoltage threshold value: %ld\n", undervoltage_threshold);
    
           if (vbat_adc_value > undervoltage_threshold) {
                    pr_info("monika: in if block :battery undervoltage threshold value: %ld\n", undervoltage_threshold);
                    pr_info("monika: Valid battery is attached. Charging can be enabled.\n");
                    // Here you can add logic to enable charging if needed
            }
           else {
                    // **************************
                    // ********* PART 2 *********
                    // **************************
    
                    pr_info("monika: in else block :battery undervoltage threshold value: %ld\n", undervoltage_threshold);
                    //PART2 - STEP1
                    /*
                     * configure SYSMIN = 3.84v (write 0x0e=c00),
                     * VREG = 3.7v (write 0x04 = B90)
                     * Disable termination (write 0x14[2] = 1 and
                     * Disable PFM (write 0x18[4] = 1) 
                     *
                     */
                    //0x0e register 0x0c00
                    i2c_smbus_write_byte_data(bq->client, 0x0e, 0x00 );
                    i2c_smbus_write_byte_data(bq->client, 0x0f, 0x0c );
    
                    // 0X04 register 0x0B90
                    i2c_smbus_write_byte_data(bq->client, 0x04, 0x90 );
                    i2c_smbus_write_byte_data(bq->client, 0x05, 0x0b );
    
                    // Disable termination (write 0x14[2] = 1
                    dis_term = i2c_smbus_read_byte_data(bq->client, 0x14);
                    i2c_smbus_write_byte_data(bq->client, 0x14, dis_term | 0x04 ); //set 2nd bit of 0x14 register
    
                    //Disable PFM
                    dis_pfm = i2c_smbus_read_byte_data(bq->client, 0x18);
                    i2c_smbus_write_byte_data(bq->client, 0x14, dis_pfm | 0x10 ); //set 4th bit of 0x18 register
    
                    //PART2 - STEP2 
                    /*
                     * Enabling charge CE pin by writing EN_CHG = 1 (write 0x16[5] = 1)
                     *
                     */
                     // setting 0x16 register 5th bit
                    en_chg_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_EN_CHG_REG);
                    en_chg_value |= (1 << 5);
                    i2c_smbus_write_byte_data(bq->client, BQ2562X_EN_CHG_REG, en_chg_value);
    
                    en_chg_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_EN_CHG_REG);
                    pr_info("monika: part2 : before EN_CHG register value: 0x%02x\n", en_chg_value);
    
                    //PART2 - STEP3 
                    /*
                     * wait to close the protection ic
                     *
                     */
                    msleep(100);  // 100 milliseconds
                    //PART2 - STEP4
                    /*
                     * Disabling charging 
                     * writing EN_CHG = 0 (write 0x16[5] = 0)
                     */
                    en_chg_value &= ~(1 << 5);
                    ret = i2c_smbus_write_byte_data(bq->client, BQ2562X_EN_CHG_REG, en_chg_value);
                    en_chg_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_EN_CHG_REG);
                    pr_info("monika: part2 : After clearing 5th bit EN_CHG register value: 0x%02x\n", en_chg_value);
    
                    //PART2 - STEP5
                    /*
                     * Enable IBAT discharge current
                     * by writting FORCE_IBATDIS = 1 (write 0x16[6] =1 )
                     */
                    //setting 0x16 register 6th bit 
                    ibat_dis_value  = i2c_smbus_read_byte_data(bq->client, BQ2562X_FORCE_IBATDIS_REG);
                    pr_info("monika: part2 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x%02x\n", ibat_dis_value);
                    ret = i2c_smbus_write_byte_data(bq->client, BQ2562X_FORCE_IBATDIS_REG, ibat_dis_value | (6 << 0x1) );
    
                    ibat_dis_value  = i2c_smbus_read_byte_data(bq->client, BQ2562X_FORCE_IBATDIS_REG);
                    pr_info("monika: part2 : after setting 6th: BQ2562X_FORCE_IBATDIS_REG register value: 0x%02x\n", ibat_dis_value);
    
                    //PART2 - STEP6
                    /*
                     * wait 5ms
                     * then Disable IBAT Discharge current 
                     * by writting FORCE_IBATDIS = 0 (write 0x16[6] =0 )
                     */
                    msleep(5);  // 5 milliseconds
    
    
                    // Disable IBAT Discharge current (write 0x16[6] =0 )
                    ibat_dis_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_FORCE_IBATDIS_REG);
                    ibat_dis_value &= ~(1 << 6);
                    i2c_smbus_write_byte_data(bq->client, BQ2562X_FORCE_IBATDIS_REG, ibat_dis_value );
                    ibat_dis_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_FORCE_IBATDIS_REG);
                    pr_info("monika: part2 : after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x%02x\n", ibat_dis_value);
    
                    //PART2 - STEP7
                    /*
                     * Set ADC to one-shot mode
                     * and enabling by writing ADC_RATE = 1  (write 0x26[1] = 1) & ADC_EN =1 (write 0x26[7] =1)
                     */
    
                    vbat_adc_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_ADC_REG);
                    pr_info("monika: part2 : before setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0x%02x\n", vbat_adc_value);
    
                    // Set ADC to one-shot mode-> ADC_RATE and enable ADC_EN
                    ret = i2c_smbus_write_byte_data(bq->client, BQ2562X_ADC_REG, vbat_adc_value | ((1 << 6) | (1 << 7))); // ADC_RATE=1, ADC_EN=1
                    vbat_adc_value = i2c_smbus_read_byte_data(bq->client, BQ2562X_ADC_REG);
                    pr_info("monika: part2 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0x%02x\n", vbat_adc_value);
    
                    //PART2 - STEP8
                    /*
                     * READBACK VBAT_ADC value from 0X30 register
                     * if VBAT_ADC value > battery undervoltage threshold ,valid battery attached and charge can be enabled
                     * if VBAT_ADC value < 1v , no valid battery attached , keep charge disabled.
                     *
                     */
                    vbat_a_lsb =  i2c_smbus_read_byte_data(bq->client, BQ2562X_ADC_VBAT_LSB );
                    vbat_a_msb =  i2c_smbus_read_byte_data(bq->client, BQ2562X_ADC_VBAT_MSB );
                    vbat_adc_value = ((vbat_a_msb << 8) | vbat_a_lsb) >> BQ2562X_ADC_VBAT_MOVE_STEP;
                    vbat_adc_value = vbat_adc_value & 0x0fff;
                    vbat_adc_value = vbat_adc_value * BQ2562X_ADC_VBAT_STEP_uV;
                    pr_info("monika: part2 : vbat_adc_value value: %ld\n", vbat_adc_value);
                    pr_info("monika: part2 : battery undervoltage threshold: %ld\n", undervoltage_threshold);
    
                    if (vbat_adc_value > undervoltage_threshold) {
                            pr_info("monika: part2: valid battery attached and charge can be enabled.\n");
                            pr_info("monika: part2 : if block : battery undervoltage threshold: %ld\n", undervoltage_threshold);
                    }
                    else if (vbat_adc_value < 1000000 ) {
                            pr_info("monika: part2 : no valid battery attached , keep charge disabled \n");
                            pr_info("monika: part2 : if else block : battery undervoltage threshold: %ld\n", undervoltage_threshold);
                    }
    
            }
    
            return 0;
    }
    

    Actually , previously VBAT_ADC was defined with "u16" , so showed wrong values.

    So , now we changed it to "long int ",  then VBAT_ADC showed correctly.

    Case 1 :With only External Power Supply

    When we connected our device with only external power supply , then Battery algorithm showed "no valid battery connected, keep charge disabled."

    Observations : 

    • bat_adc_value value: 134000  uVolts => on reboot , the value changes to 136000 and the next reboot observed as 134000 . if not reboots then VBAT_ADC value is constant
    • Battery voltage : cat /sys/class/power_supply/bq2562x-battery/voltage_now    => 134000 uVolts

    • status : cat /sys/class/power_supply/bq2562x-charger/status  => FULL

    Please find attached logs

    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# dmesg | grep monika
    
    [    2.010480] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.018349] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.026801] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.050658] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.059470] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    
    [    2.069312] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.079088] monika: vbat_adc_value value: 136000
    
    [    2.083708] monika: battery undervoltage threshold value: 2200000
    
    [    2.089804] monika: in else block :battery undervoltage threshold value: 2200000
    
    [    2.112463] monika: part2 : before EN_CHG register value: 0xa8
    
    [    2.226459] monika: part2 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.234289] monika: part2 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.242665] monika: part2 : after setting 6th: BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.266644] monika: part2 : after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.275482] monika: part2 : before setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    
    [    2.285276] monika: part2 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.301439] monika: part2 : vbat_adc_value value: 134000
    
    [    2.306752] monika: part2 : battery undervoltage threshold: 2200000
    
    [    2.313028] monika: part2 : no valid battery attached , keep charge disabled
    
    [    2.320158] monika: part2 : if else block : battery undervoltage threshold: 2200000
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
     
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# dmesg | grep monika
    
    [    2.010480] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.018349] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.026801] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.050658] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.059470] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    
    [    2.069312] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.079088] monika: vbat_adc_value value: 136000
    
    [    2.083708] monika: battery undervoltage threshold value: 2200000
    
    [    2.089804] monika: in else block :battery undervoltage threshold value: 2200000
    
    [    2.112463] monika: part2 : before EN_CHG register value: 0xa8
    
    [    2.226459] monika: part2 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.234289] monika: part2 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.242665] monika: part2 : after setting 6th: BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.266644] monika: part2 : after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.275482] monika: part2 : before setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    
    [    2.285276] monika: part2 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.301439] monika: part2 : vbat_adc_value value: 134000
    
    [    2.306752] monika: part2 : battery undervoltage threshold: 2200000
    
    [    2.313028] monika: part2 : no valid battery attached , keep charge disabled
    
    [    2.320158] monika: part2 : if else block : battery undervoltage threshold: 2200000
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# [   43.099382] kauditd_printk_skb: 3 callbacks suppressed
    
    [   43.099401] audit: type=1334 audit(1727955105.624:15): prog-id=10 op=UNLOAD
    
    [   43.114962] audit: type=1334 audit(1727955105.640:16): prog-id=9 op=UNLOAD
    
    136000
    
    -sh: 136000: command not found
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# dmesg | grep monika
    
    [    2.010480] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.018349] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.026801] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.050658] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.059470] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    
    [    2.069312] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.079088] monika: vbat_adc_value value: 136000
    
    [    2.083708] monika: battery undervoltage threshold value: 2200000
    
    [    2.089804] monika: in else block :battery undervoltage threshold value: 2200000
    
    [    2.112463] monika: part2 : before EN_CHG register value: 0xa8
    
    [    2.226459] monika: part2 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.234289] monika: part2 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.242665] monika: part2 : after setting 6th: BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.266644] monika: part2 : after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.275482] monika: part2 : before setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    
    [    2.285276] monika: part2 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.301439] monika: part2 : vbat_adc_value value: 134000
    
    [    2.306752] monika: part2 : battery undervoltage threshold: 2200000
    
    [    2.313028] monika: part2 : no valid battery attached , keep charge disabled
    
    [    2.320158] monika: part2 : if else block : battery undervoltage threshold: 2200000
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# dmesg | grep monika
    
    [    2.010480] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.018349] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.026801] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.050658] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.059470] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    
    [    2.069312] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.079088] monika: vbat_adc_value value: 136000
    
    [    2.083708] monika: battery undervoltage threshold value: 2200000
    
    [    2.089804] monika: in else block :battery undervoltage threshold value: 2200000
    
    [    2.112463] monika: part2 : before EN_CHG register value: 0xa8
    
    [    2.226459] monika: part2 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.234289] monika: part2 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.242665] monika: part2 : after setting 6th: BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.266644] monika: part2 : after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.275482] monika: part2 : before setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    
    [    2.285276] monika: part2 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.301439] monika: part2 : vbat_adc_value value: 134000
    
    [    2.306752] monika: part2 : battery undervoltage threshold: 2200000
    
    [    2.313028] monika: part2 : no valid battery attached , keep charge disabled
    
    [    2.320158] monika: part2 : if else block : battery undervoltage threshold: 2200000
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
     
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# dmesg | grep monika
    
    [    2.006458] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.014324] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.022778] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.046565] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.055374] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    
    [    2.065215] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.074991] monika: vbat_adc_value value: 134000
    
    [    2.079611] monika: battery undervoltage threshold value: 2200000
    
    [    2.085706] monika: in else block :battery undervoltage threshold value: 2200000
    
    [    2.108363] monika: part2 : before EN_CHG register value: 0xa8
    
    [    2.222314] monika: part2 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.230151] monika: part2 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.238525] monika: part2 : after setting 6th: BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.262548] monika: part2 : after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.271387] monika: part2 : before setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    
    [    2.281181] monika: part2 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.297856] monika: part2 : vbat_adc_value value: 134000
    
    [    2.303215] monika: part2 : battery undervoltage threshold: 2200000
    
    [    2.309562] monika: part2 : no valid battery attached , keep charge disabled
    
    [    2.316732] monika: part2 : if else block : battery undervoltage threshold: 2200000
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
     
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# dmesg | grep monika
    
    [    2.006458] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.014324] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.022778] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.046565] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.055374] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    
    [    2.065215] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.074991] monika: vbat_adc_value value: 134000
    
    [    2.079611] monika: battery undervoltage threshold value: 2200000
    
    [    2.085706] monika: in else block :battery undervoltage threshold value: 2200000
    
    [    2.108363] monika: part2 : before EN_CHG register value: 0xa8
    
    [    2.222314] monika: part2 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.230151] monika: part2 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.238525] monika: part2 : after setting 6th: BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.262548] monika: part2 : after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.271387] monika: part2 : before setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    
    [    2.281181] monika: part2 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.297856] monika: part2 : vbat_adc_value value: 134000
    
    [    2.303215] monika: part2 : battery undervoltage threshold: 2200000
    
    [    2.309562] monika: part2 : no valid battery attached , keep charge disabled
    
    [    2.316732] monika: part2 : if else block : battery undervoltage threshold: 2200000
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# dmesg | grep monika
    
    [    2.006458] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.014324] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.022778] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.046565] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.055374] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    
    [    2.065215] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.074991] monika: vbat_adc_value value: 134000
    
    [    2.079611] monika: battery undervoltage threshold value: 2200000
    
    [    2.085706] monika: in else block :battery undervoltage threshold value: 2200000
    
    [    2.108363] monika: part2 : before EN_CHG register value: 0xa8
    
    [    2.222314] monika: part2 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.230151] monika: part2 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.238525] monika: part2 : after setting 6th: BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.262548] monika: part2 : after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.271387] monika: part2 : before setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    
    [    2.281181] monika: part2 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.297856] monika: part2 : vbat_adc_value value: 134000
    
    [    2.303215] monika: part2 : battery undervoltage threshold: 2200000
    
    [    2.309562] monika: part2 : no valid battery attached , keep charge disabled
    
    [    2.316732] monika: part2 : if else block : battery undervoltage threshold: 2200000
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# dmesg | grep monika
    
    [    2.006458] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.014324] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.022778] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.046565] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.055374] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    
    [    2.065215] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.074991] monika: vbat_adc_value value: 134000
    
    [    2.079611] monika: battery undervoltage threshold value: 2200000
    
    [    2.085706] monika: in else block :battery undervoltage threshold value: 2200000
    
    [    2.108363] monika: part2 : before EN_CHG register value: 0xa8
    
    [    2.222314] monika: part2 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.230151] monika: part2 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.238525] monika: part2 : after setting 6th: BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.262548] monika: part2 : after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.271387] monika: part2 : before setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    
    [    2.281181] monika: part2 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.297856] monika: part2 : vbat_adc_value value: 134000
    
    [    2.303215] monika: part2 : battery undervoltage threshold: 2200000
    
    [    2.309562] monika: part2 : no valid battery attached , keep charge disabled
    
    [    2.316732] monika: part2 : if else block : battery undervoltage threshold: 2200000
    
    root@am62xx-evm:~#
     
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    134000
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    134000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-charger/status
    
    Full
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-charger/health
    
    Good
    
    root@am62xx-evm:~#
     
    

    Case 2 : With Battery + External Power supply

    When we connected our device with Battery + external power supply , then Battery algorithm showed "valid battery attached and charge can be enabled"

    Observations:

    • Battery ADC valueintitially VBAT_ADC showing 0 volts , on reboot  its showed 3302000  uVolts (Its constant even on next system reboot also)
    • Battery voltage : cat /sys/class/power_supply/bq2562x-battery/voltage_now => 3294000 uVolts
    • status : cat /sys/class/power_supply/bq2562x-charger/status  => Full

    Please find the attached logs.

    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    1.994880] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    2.002761] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    2.011225] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.034460] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    2.043271] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x30
    [    2.053114] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    2.062890] monika: vbat_adc_value value: 0
    [    2.067072] monika: battery undervoltage threshold value: 2200000
    [    2.073167] monika: in else block :battery undervoltage threshold value: 2200000
    [    2.095349] monika: part2 : before EN_CHG register value: 0xa8
    [    2.210032] monika: part2 : After clearing 5th bit EN_CHG register value: 0x88
    [    2.217703] monika: part2 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.226140] monika: part2 : after setting 6th: BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.250364] monika: part2 : after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    2.259161] monika: part2 : before setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    2.268898] monika: part2 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    2.285420] monika: part2 : vbat_adc_value value: 3302000
    [    2.290866] monika: part2 : battery undervoltage threshold: 2200000
    [    2.297220] monika: part2: valid battery attached and charge can be enabled.
    [    2.304316] monika: part2 : if block : battery undervoltage threshold: 2200000
    root@am62xx-evm:~#
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-charger/health
    Warm
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-charger/status
    Full
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    3302000
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    ====================================================================================================================
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    1.998257] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    2.006120] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.014575] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.038485] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    2.047296] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    [    2.057137] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    2.066913] monika: vbat_adc_value value: 3302000
    [    2.071613] monika: battery undervoltage threshold value: 2200000
    [    2.077708] monika: in if block :battery undervoltage threshold value: 2200000
    [    2.084956] monika: Valid battery is attached. Charging can be enabled.
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# [   43.563441] kauditd_printk_skb: 3 callbacks suppressed
    [   43.563460] audit: type=1334 audit(1727955465.100:15): prog-id=10 op=UNLOAD
    [   43.578116] audit: type=1334 audit(1727955465.116:16): prog-id=9 op=UNLOAD
    
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    1.998257] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    2.006120] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.014575] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.038485] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    2.047296] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    [    2.057137] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    2.066913] monika: vbat_adc_value value: 3302000
    [    2.071613] monika: battery undervoltage threshold value: 2200000
    [    2.077708] monika: in if block :battery undervoltage threshold value: 2200000
    [    2.084956] monika: Valid battery is attached. Charging can be enabled.
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    1.998257] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    2.006120] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.014575] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.038485] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    2.047296] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    [    2.057137] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    2.066913] monika: vbat_adc_value value: 3302000
    [    2.071613] monika: battery undervoltage threshold value: 2200000
    [    2.077708] monika: in if block :battery undervoltage threshold value: 2200000
    [    2.084956] monika: Valid battery is attached. Charging can be enabled.
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-charger/health
    Warm
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-charger/status
    Full
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    3294000
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    ==================================================================================================================
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    1.998247] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    2.006121] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.014576] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.038475] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    2.047284] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    2.057123] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    2.066898] monika: vbat_adc_value value: 3302000
    [    2.071599] monika: battery undervoltage threshold value: 2200000
    [    2.077727] monika: in if block :battery undervoltage threshold value: 2200000
    [    2.084976] monika: Valid battery is attached. Charging can be enabled.
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-charger/health
    Warm
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# [   43.134956] kauditd_printk_skb: 3 callbacks suppressed
    [   43.134976] audit: type=1334 audit(1727955596.672:15): prog-id=10 op=UNLOAD
    [   43.150088] audit: type=1334 audit(1727955596.688:16): prog-id=9 op=UNLOAD
    cat /sys/class/power_supply/bq2562x-charger/status
    Full
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    3294000
    root@am62xx-evm:~#

    Case 3 : With Battery

    When we connected our device with only Battery , then Battery algorithm gave "valid battery attached and charge can be enabled"

    Observations:

    • Battery ADC value :  intitially VBAT_ADC showing 0 volts ,  then 3598000  uVolts  and its reducing as time passes.
    • Battery voltage : cat /sys/class/power_supply/bq2562x-battery/voltage_now => 3524000 uVolts  (its value reducing as time passes)
    • status : /sys/class/power_supply/bq2562x-charger/status  => Discharging
    • Battery Current : cat /sys/class/power_supply/bq2562x-battery/current_now  => 65136000 , its showing in 2's complemented form and its keep on varying.

    Please find the attached logs.

    //only battery
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# dmesg | grep monika
    
    [    1.999091] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    
    [    2.006946] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    
    [    2.015398] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.038682] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.047491] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x30
    
    [    2.057330] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.067106] monika: vbat_adc_value value: 0
    
    [    2.071290] monika: battery undervoltage threshold value: 2200000
    
    [    2.077386] monika: in else block :battery undervoltage threshold value: 2200000
    
    [    2.099059] monika: part2 : before EN_CHG register value: 0xa8
    
    [    2.210128] monika: part2 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.217817] monika: part2 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.226272] monika: part2 : after setting 6th: BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.250683] monika: part2 : after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.259550] monika: part2 : before setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    
    [    2.269307] monika: part2 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.279072] monika: part2 : vbat_adc_value value: 3598000
    
    [    2.284497] monika: part2 : battery undervoltage threshold: 2200000
    
    [    2.290798] monika: part2: valid battery attached and charge can be enabled.
    
    [    2.297882] monika: part2 : if block : battery undervoltage threshold: 2200000
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# dmesg | grep monika
    
    [    1.998284] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.006147] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.014600] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.038514] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.047325] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    
    [    2.057165] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.066940] monika: vbat_adc_value value: 3598000
    
    [    2.071640] monika: battery undervoltage threshold value: 2200000
    
    [    2.077736] monika: in if block :battery undervoltage threshold value: 2200000
    
    [    2.084949] monika: Valid battery is attached. Charging can be enabled.
    
    root@am62xx-evm:~#cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3584000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-charger/status
    
    Discharging
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-charger/health
    
    Good
    
    
    root@am62xx-evm:~# dmesg | grep monika
    
    [    2.006358] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.014219] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.022673] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.046464] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.055274] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    
    [    2.065116] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.082317] monika: vbat_adc_value value: 3576000
    
    [    2.087052] monika: battery undervoltage threshold value: 2200000
    
    [    2.093197] monika: in if block :battery undervoltage threshold value: 2200000
    
    [    2.100433] monika: Valid battery is attached. Charging can be enabled.
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# dmesg | grep monika
    
    [    2.006358] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.014219] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.022673] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.046464] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.055274] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    
    [    2.065116] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.082317] monika: vbat_adc_value value: 3576000
    
    [    2.087052] monika: battery undervoltage threshold value: 2200000
    
    [    2.093197] monika: in if block :battery undervoltage threshold value: 2200000
    
    [    2.100433] monika: Valid battery is attached. Charging can be enabled.
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3576000
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# [   43.238592] kauditd_printk_skb: 3 callbacks suppressed
    
    [   43.238611] audit: type=1334 audit(1727956150.768:15): prog-id=10 op=UNLOAD
    
    [   43.252906] audit: type=1334 audit(1727956150.780:16): prog-id=9 op=UNLOAD
    
    cat /sys/class/power_supply/bq2562x-charger/status
    
    Discharging
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-charger/health
    
    Good
    
    root@am62xx-evm:~#
     
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# dmesg | grep monika
    
    [    1.998455] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.006314] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.014767] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.038685] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.047495] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    
    [    2.057336] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.067112] monika: vbat_adc_value value: 3572000
    
    [    2.071849] monika: battery undervoltage threshold value: 2200000
    
    [    2.077978] monika: in if block :battery undervoltage threshold value: 2200000
    
    [    2.085213] monika: Valid battery is attached. Charging can be enabled.
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3570000
    
    root@am62xx-evm:~# [   43.209586] kauditd_printk_skb: 3 callbacks suppressed
    
    [   43.209605] audit: type=1334 audit(1727956226.744:15): prog-id=10 op=UNLOAD
    
    [   43.224160] audit: type=1334 audit(1727956226.760:16): prog-id=9 op=UNLOAD
    
    cat /sys/class/power_supply/bq2562x-charger/health
    
    Good
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-charger/status
    
    Discharging
    
    root@am62xx-evm:~#
     
    3rd iteration                                         root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# dmesg | [   43.080696] kauditd_printk_skb: 3 callbacks suppressed
    
    [   43.080715] audit: type=1334 audit(1727956354.620:15): prog-id=10 op=UNLOAD
    
    [   43.096479] audit: type=1334 audit(1727956354.636:16): prog-id=9 op=UNLOAD
    
    grep monika
    
    [    1.994202] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.002087] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.010543] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.034439] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.043250] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    
    [    2.053093] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.062868] monika: vbat_adc_value value: 3496000
    
    [    2.067610] monika: battery undervoltage threshold value: 2200000
    
    [    2.073739] monika: in if block :battery undervoltage threshold value: 2200000
    
    [    2.080974] monika: Valid battery is attached. Charging can be enabled.
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# dmesg | grep monika
    
    [    1.994202] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    
    [    2.002087] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.010543] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    
    [    2.034439] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    
    [    2.043250] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    
    [    2.053093] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    
    [    2.062868] monika: vbat_adc_value value: 3496000
    
    [    2.067610] monika: battery undervoltage threshold value: 2200000
    
    [    2.073739] monika: in if block :battery undervoltage threshold value: 2200000
    
    [    2.080974] monika: Valid battery is attached. Charging can be enabled.
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3524000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-charger/health
    
    Good
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-charger/status
    
    Discharging
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
     
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3486000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3456000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3496000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3496000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3496000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3496000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3496000
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3472000
    
    root@am62xx-evm:~#
    
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3496000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3496000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3496000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3496000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3496000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3496000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3496000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3496000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    
    3496000
    
    root@am62xx-evm:~#
     
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/current_now
    
    65164000
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/current_now
    
    65128000
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~#
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/current_now
    
    65136000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/current_now
    
    65132000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/current_now
    
    65084000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/current_now
    
    65084000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/current_now
    
    65120000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/current_now
    
    65152000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/current_now
    
    65116000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/current_now
    
    65152000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/current_now
    
    65164000
    
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/current_now
    
    65164000
    
    root@am62xx-evm:~#
     
    
    
    r
    

    With above results , may i know what is the conclussion ?

    Please provide your valuable suggestions / inputs .

    Note : Above Battery algorithm Tests were done without inserting SIM in the sim slot . 

    Thanks,

    Naresh

  • Hi Naresh, 

    The results you shared indicate the algorithm is working correctly. I have a couple additional recommendations below. 

    1) You don't need to run the algorithm for case 3 where only battery is attached. It is only necessary to run the algorithm after input adapter is connected. If you wish to simplify your implementation you can skip the battery detection algorithm whenever BQ25622 device indicates no adapter is present in VBUS_STAT register (REG0x1E[2:0] = 000b). 

    2) I also recommend testing with a dead battery where your battery protector is engaged so you can verify whether the algorithm works to properly detect a dead battery.

    Best Regards,

    Garrett 

  • Hi Garret ,

    Thank you for your response.

    i will check provided comments and get back to you on this .

    Thanks, Naresh

  • Hi Garret ,

    we Validated the battery charger test with dead battery + external power connected together as below,

    power supply + dead battery (of 38000 u volts Battery voltage) :

    We have tested with dead battery (of 38000 uVolts Battery voltage ) + external power supply ,then battery algorithm  initially Vbat_adc value showing  as 0 volts in part 1 and then based on condition (if (vbat_Adc < 1v ) it went to part2 then gives results as "no valid battery attached , keep charge disabled" 

    please find the attached logs 

    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    1.998814] monika: part1 : After clearing 5th bit EN_CHG register value: 0x80
    [    2.006681] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x80
    [    2.015132] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.038410] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    2.047221] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x30
    [    2.057062] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    2.066837] monika: vbat_adc_value value: 0
    [    2.071017] monika: battery undervoltage threshold value: 2200000
    [    2.077112] monika: in else block :battery undervoltage threshold value: 2200000
    [    2.099293] monika: part2 : before EN_CHG register value: 0xa8
    [    2.213918] monika: part2 : After clearing 5th bit EN_CHG register value: 0x88
    [    2.221764] monika: part2 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.230176] monika: part2 : after setting 6th: BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.254317] monika: part2 : after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    2.263115] monika: part2 : before setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    2.272851] monika: part2 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    2.289350] monika: part2 : vbat_adc_value value: 38000
    [    2.294592] monika: part2 : battery undervoltage threshold: 2200000
    [    2.300898] monika: part2 : no valid battery attached , keep charge disabled
    [    2.308046] monika: part2 : if else block : battery undervoltage threshold: 2200000
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    38000
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/current_now
    0
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    ================================================================================================
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    2.006641] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    2.014506] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.022962] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.046774] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    2.055585] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    [    2.065427] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    2.075202] monika: vbat_adc_value value: 38000
    [    2.079734] monika: battery undervoltage threshold value: 2200000
    [    2.085829] monika: in else block :battery undervoltage threshold value: 2200000
    [    2.108492] monika: part2 : before EN_CHG register value: 0xa8
    [    2.222575] monika: part2 : After clearing 5th bit EN_CHG register value: 0x88
    [    2.230413] monika: part2 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.238784] monika: part2 : after setting 6th: BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.262723] monika: part2 : after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    2.271561] monika: part2 : before setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    2.281356] monika: part2 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    2.298038] monika: part2 : vbat_adc_value value: 40000
    [    2.303311] monika: part2 : battery undervoltage threshold: 2200000
    [    2.309658] monika: part2 : no valid battery attached , keep charge disabled
    [    2.316828] monika: part2 : if else block : battery undervoltage threshold: 2200000
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# [   43.100632] kauditd_printk_skb: 3 callbacks suppressed
    [   43.100652] audit: type=1334 audit(1727958619.628:15): prog-id=10 op=UNLOAD
    [   43.115337] audit: type=1334 audit(1727958619.644:16): prog-id=9 op=UNLOAD
    cat /sys/class/power_supply/bq2562x-battery/voltage_now
    40000
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/current_now
    0
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    40000
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    40000
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    40000
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    40000
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    40000
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    40000
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    40000
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    40000
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    40000
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    40000
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    40000
    root@am62xx-evm:~#
    =============================================================================================
    
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# dmesg | grep monika
    [    1.994290] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
    [    2.002177] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.010633] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.034504] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    2.043313] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
    [    2.053155] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    2.062930] monika: vbat_adc_value value: 40000
    [    2.067463] monika: battery undervoltage threshold value: 2200000
    [    2.073559] monika: in else block :battery undervoltage threshold value: 2200000
    [    2.096200] monika: part2 : before EN_CHG register value: 0xa8
    [    2.210013] monika: part2 : After clearing 5th bit EN_CHG register value: 0x88
    [    2.217695] monika: part2 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.226146] monika: part2 : after setting 6th: BQ2562X_FORCE_IBATDIS_REG register value: 0x88
    [    2.250500] monika: part2 : after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
    [    2.259364] monika: part2 : before setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
    [    2.269120] monika: part2 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
    [    2.285121] monika: part2 : vbat_adc_value value: 38000
    [    2.290366] monika: part2 : battery undervoltage threshold: 2200000
    [    2.296626] monika: part2 : no valid battery attached , keep charge disabled
    [    2.303761] monika: part2 : if else block : battery undervoltage threshold: 2200000
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    38000
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/current_now[   43.247837] kauditd_printk_skb: 3 callbacks suppressed
    [   43.247857] audit: type=1334 audit(1727958725.788:15): prog-id=10 op=UNLOAD
    [   43.263383] audit: type=1334 audit(1727958725.804:16): prog-id=9 op=UNLOAD
    
    0
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/current_now
    0
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    38000
    root@am62xx-evm:~#
    root@am62xx-evm:~#
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    38000
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    38000
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    38000
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    38000
    root@am62xx-evm:~# cat /sys/class/power_supply/bq2562x-battery/voltage_now
    38000
    root@am62xx-evm:~#

    Queries : 

    1. As dead battery having  battery voltage 38000 uvolts and Vbat_Adc showing in part1 battery algoritm as 0 volts and then based on condition it went to part2 showing 38000u volts  and it met battery_adc < 1v condition then giving results as => "no valid battery attached , keep charge disabled" . My query is here battery is connected even why getting results as " no valid battery is connected " ? or do we need to test with dead battery having voltage is grater than 1v and lessthen 2.2v ?
    2. in previous thread case2 and case3 , in battery algorithm it went to part1 where it read vbat_adc value as 0 volts and in part2 vbat_Adc gives non-zero voltage but after reboot then it doesnt not sowing 0 volts . my question is why its showing 0 volts on first read ?
    3. when i set and clear this bit (0x16[6] ) , eventhough i was seeing same register value as 0x88 in both cases.

                          [ 2.014575] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
                          [ 2.038485] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88

    Kindly help me with my Queries ?

    Note: till here , whatever we performed all testcases without inserting SIM and provided results accordingly.

    ===============================================================================================================

    But now , we validated the below 3 cases by inserting the SIM In the sim slot , and provided results accordingly

    1. with only battery => system is not rebooting
    2. with battery + power supply => system is not rebooting
    3. with only power supply => system is rebooting , please find attached logs  
      Welcome to Arago 2023.04!
      
      [    2.669584] systemd[1]: Hostname set to <am62xx-evm>.
      [    2.894325] systemd-sysv-generator[137]: SysV service '/etc/init.d/telnetd' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe §
      U-Boot SPL 2023.04-g24098ea90d (Jul 06 2023 - 12:59:40 +0000)
      SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.5--v09.00.05 (Kool Koala)')
      SPL initial stack usage: 13376 bytes
      Trying to boot from MMC1
      Authentication passed
      Authentication passed
      Authentication passed
      Authentication passed
      Authentication passed
      Starting ATF on ARM64 core...
      
      NOTICE:  BL31: v2.8(release):v2.8-226-g2fcd408bb3-dirty
      NOTICE:  BL31: Built : 00:42:57, Jan 13 2023
      
      U-Boot SPL 2023.04-g24098ea90d (Jul 06 2023 - 12:59:40 +0000)
      SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.5--v09.00.05 (Kool Koala)')
      SPL initial stack usage: 1856 bytes
      MMC: no card present
      ** Bad device specification mmc 1 **
      Couldn't find partition mmc 1:1
      Error: could not access storage.
      Trying to boot from MMC1
      Authentication passed
      Authentication passed
      
      
      U-Boot 2023.04-g24098ea90d (Jul 06 2023 - 12:59:40 +0000)
      
      SoC:   AM62X SR1.0 HS-FS
      Model: Texas Instruments AM625 SK
      EEPROM not available at 80, trying to read at 81
      Reading on-board EEPROM at 0x51 failed -121
      DRAM:  1 GiB
      Core:  71 devices, 31 uclasses, devicetree: separate
      MMC:   mmc@fa10000: 0, mmc@fa00000: 1
      Loading Environment from nowhere... OK
      In:    serial
      Out:   serial
      Err:   serial
      EEPROM not available at 80, trying to read at 81
      Reading on-board EEPROM at 0x51 failed -121
      Net:   eth0: ethernet@8000000port@1
      Hit any key to stop autoboot:  1
      U-Boot SPL 2023.04-g24098ea90d (Jul 06 2023 - 12:59:40 +0000)
      SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.5--v09.00.05 (Kool Koala)')
      SPL initial stack usage: 13376 bytes
      Trying to boot from MMC1
      Authentication passed
      Authentication passed
      Authentication passed
      Authentication passed
      Authentication passed
      Starting ATF on ARM64 core...
      
      NOTICE:  BL31: v2.8(release):v2.8-226-g2fcd408bb3-dirty
      NOTICE:  BL31: Built : 00:42:57, Jan 13 2023
      
      U-Boot SPL 2023.04-g24098ea90d (Jul 06 2023 - 12:59:40 +0000)
      SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.5--v09.00.05 (Kool Koala)')
      SPL initial stack usage: 1856 bytes
      MMC: no card present
      ** Bad device specification mmc 1 **
      Couldn't find partition mmc 1:1
      Error: could not access storage.
      Trying to boot from MMC1
      Authentication passed
      Authentication passed
      
      
      U-Boot 2023.04-g24098ea90d (Jul 06 2023 - 12:59:40 +0000)
      
      SoC:   AM62X SR1.0 HS-FS
      Model: Texas Instruments AM625 SK
      EEPROM not available at 80, trying to read at 81
      Reading on-board EEPROM at 0x51 failed -121
      DRAM:  1 GiB
      Core:  71 devices, 31 uclasses, devicetree: separate
      MMC:   mmc@fa10000: 0, mmc@fa00000: 1
      Loading Environment from nowhere... OK
      In:    serial
      Out:   serial
      Err:   serial
      EEPROM not available at 80, trying to read at 81
      Reading on-board EEPROM at 0x51 failed -121
      Net:   eth0: ethernet@8000000port@1
      Hit any key to stop autoboot:  1
      U-Boot SPL 2023.04-g24098ea90d (Jul 06 2023 - 12:59:40 +0000)
      SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.5--v09.00.05 (Kool Koala)')
      SPL initial stack usage: 13376 bytes
      Trying to boot from MMC1
      Authentication passed
      Authentication passed
      Authentication passed
      Authentication passed
      Authentication passed
      Starting ATF on ARM64 core...
      
      NOTICE:  BL31: v2.8(release):v2.8-226-g2fcd408bb3-dirty
      NOTICE:  BL31: Built : 00:42:57, Jan 13 2023
      
      U-Boot SPL 2023.04-g24098ea90d (Jul 06 2023 - 12:59:40 +0000)
      SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.5--v09.00.05 (Kool Koala)')
      SPL initial stack usage: 1856 bytes
      MMC: no card present
      ** Bad device specification mmc 1 **
      Couldn't find partition mmc 1:1
      Error: could not access storage.
      Trying to boot from MMC1
      Authentication passed
      Authentication passed
      
      
      U-Boot 2023.04-g24098ea90d (Jul 06 2023 - 12:59:40 +0000)
      
      SoC:   AM62X SR1.0 HS-FS
      Model: Texas Instruments AM625 SK
      EEPROM not available at 80, trying to read at 81
      Reading on-board EEPROM at 0x51 failed -121
      DRAM:  1 GiB
      Core:  71 devices, 31 uclasses, devicetree: separate
      MMC:   mmc@fa10000: 0, mmc@fa00000: 1
      Loading Environment from nowhere... OK
      In:    serial
      Out:   serial
      Err:   serial
      EEPROM not available at 80, trying to read at 81
      Reading on-board EEPROM at 0x51 failed -121
      Net:   eth0: ethernet@8000000port@1
      Hit any key to stop autoboot:  1
      U-Boot SPL 2023.04-g24098ea90d (Jul 06 2023 - 12:59:40 +0000)
      SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.5--v09.00.05 (Kool Koala)')
      SPL initial stack usage: 13376 bytes
      Trying to boot from MMC1
      Authentication passed
      Authentication passed
      Authentication passed
      Authentication passed
      Authentication passed
      Starting ATF on ARM64 core...
      
      NOTICE:  BL31: v2.8(release):v2.8-226-g2fcd408bb3-dirty
      NOTICE:  BL31: Built : 00:42:57, Jan 13 2023
      
      U-Boot SPL 2023.04-g24098ea90d (Jul 06 2023 - 12:59:40 +0000)
      SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.5--v09.00.05 (Kool Koala)')
      SPL initial stack usage: 1856 bytes
      MMC: no card present
      ** Bad device specification mmc 1 **
      Couldn't find partition mmc 1:1
      Error: could not access storage.
      Trying to boot from MMC1
      Authentication passed
      Authentication passed
      
      
      U-Boot 2023.04-g24098ea90d (Jul 06 2023 - 12:59:40 +0000)
      
      SoC:   AM62X SR1.0 HS-FS
      Model: Texas Instruments AM625 SK
      EEPROM not available at 80, trying to read at 81
      Reading on-board EEPROM at 0x51 failed -121
      DRAM:  1 GiB
      Core:  71 devices, 31 uclasses, devicetree: separate
      MMC:   mmc@fa10000: 0, mmc@fa00000: 1
      Loading Environment from nowhere... OK
      In:    serial
      Out:   serial
      Err:   serial
      EEPROM not available at 80, trying to read at 81
      Reading on-board EEPROM at 0x51 failed -121
      Net:   eth0: ethernet@8000000port@1
      Hit any key to stop autoboot:  1
      U-Boot SPL 2023.04-g24098ea90d (Jul 06 2023 - 12:59:40 +0000)
      SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.5--v09.00.05 (Kool Koala)')
      SPL initial stack usage: 13376 bytes
      Trying to boot from MMC1
      Authentication passed
      Authentication passed
      Authentication passed
      Authentication passed
      Authentication passed
      Starting ATF on ARM64 core...
      
      NOTICE:  BL31: v2.8(release):v2.8-226-g2fcd408bb3-dirty
      NOTICE:  BL31: Built : 00:42:57, Jan 13 2023
      
      U-Boot SPL 2023.04-g24098ea90d (Jul 06 2023 - 12:59:40 +0000)
      SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.5--v09.00.05 (Kool Koala)')
      SPL initial stack usage: 1856 bytes
      MMC: no card present
      ** Bad device specification mmc 1 **
      Couldn't find partition mmc 1:1
      Error: could not access storage.
      Trying to boot from MMC1
      Authentication passed
      Authentication passed
      
      
      U-Boot 2023.04-g24098ea90d (Jul 06 2023 - 12:59:40 +0000)
      
      SoC:   AM62X SR1.0 HS-FS
      Model: Texas Instruments AM625 SK
      EEPROM not available at 80, trying to read at 81
      Reading on-board EEPROM at 0x51 failed -121
      DRAM:  1 GiB
      Core:  71 devices, 31 uclasses, devicetree: separate
      MMC:   mmc@fa10000: 0, mmc@fa00000: 1
      Loading Environment from nowhere... OK
      In:    serial
      Out:   serial
      Err:   serial
      EEPROM not available at 80, trying to read at 81
      Reading on-board EEPROM at 0x51 failed -121
      Net:   eth0: ethernet@8000000port@1
      Hit any key to stop autoboot:  0
      switch to partitions #0, OK
      mmc0(part 0) is current device
      SD/MMC found on device 0
      Failed to load 'boot.scr'
      Can't set block device
      ## Error: "main_cpsw0_qsgmii_phyinit" not defined
      20515328 bytes read in 168 ms (116.5 MiB/s)
      40342 bytes read in 16 ms (2.4 MiB/s)
      Working FDT set to 88000000
      ## Flattened Device Tree blob at 88000000
         Booting using the fdt blob at 0x88000000
      Working FDT set to 88000000
         Loading Device Tree to 000000008fef3000, end 000000008fffffff ... OK
      Working FDT set to 8fef3000
      
      Starting kernel ...
      
      [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
      [    0.000000] Linux version 6.1.33 (test@test-ThinkCentre-neo-50t-Gen-3) (aarch64-none-linux-gnu-gcc (Arm GNU Toolchain 11.3.Rel1) 11.3.1 20220712, GNU ld (Arm GNU Toolchain 11.3.Rel1) 2.38.20220708) #82 SMP PREEMPT Thu Oct  3 16:06:19 IST 2024
      [    0.000000] Machine model: Texas Instruments AM625 SK TESSS
      [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
      [    0.000000] printk: bootconsole [ns16550a0] enabled
      [    0.000000] efi: UEFI not found.
      [    0.000000] Reserved memory: created CMA memory pool at 0x00000000b8000000, size 128 MiB
      [    0.000000] OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool
      [    0.000000] Reserved memory: created DMA memory pool at 0x000000009c800000, size 3 MiB
      [    0.000000] OF: reserved mem: initialized node ipc-memories@9c800000, compatible id shared-dma-pool
      [    0.000000] Reserved memory: created DMA memory pool at 0x000000009cb00000, size 1 MiB
      [    0.000000] OF: reserved mem: initialized node m4f-dma-memory@9cb00000, compatible id shared-dma-pool
      [    0.000000] Reserved memory: created DMA memory pool at 0x000000009cc00000, size 14 MiB
      [    0.000000] OF: reserved mem: initialized node m4f-memory@9cc00000, compatible id shared-dma-pool
      [    0.000000] Reserved memory: created DMA memory pool at 0x000000009da00000, size 1 MiB
      [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@9da00000, compatible id shared-dma-pool
      [    0.000000] Reserved memory: created DMA memory pool at 0x000000009db00000, size 12 MiB
      [    0.000000] OF: reserved mem: initialized node r5f-memory@9db00000, compatible id shared-dma-pool
      [    0.000000] Zone ranges:
      [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000bfffffff]
      [    0.000000]   DMA32    empty
      [    0.000000]   Normal   empty
      [    0.000000] Movable zone start for each node
      [    0.000000] Early memory node ranges
      [    0.000000]   node   0: [mem 0x0000000080000000-0x000000009c7fffff]
      [    0.000000]   node   0: [mem 0x000000009c800000-0x000000009e6fffff]
      [    0.000000]   node   0: [mem 0x000000009e700000-0x000000009e77ffff]
      [    0.000000]   node   0: [mem 0x000000009e780000-0x000000009fffffff]
      [    0.000000]   node   0: [mem 0x00000000a0000000-0x00000000bfffffff]
      [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000bfffffff]
      [    0.000000] psci: probing for conduit method from DT.
      [    0.000000] psci: PSCIv1.1 detected in firmware.
      [    0.000000] psci: Using standard PSCI v0.2 function IDs
      [    0.000000] psci: Trusted OS migration not required
      [    0.000000] psci: SMC Calling Convention v1.2
      [    0.000000] percpu: Embedded 19 pages/cpu s38376 r8192 d31256 u77824
      [    0.000000] Detected VIPT I-cache on CPU0
      [    0.000000] CPU features: detected: GIC system register CPU interface
      [    0.000000] CPU features: detected: ARM erratum 845719
      [    0.000000] alternatives: applying boot alternatives
      [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 258048
      [    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 mtdparts=spi-nand0:512k(ospi.tiboot3),2m(ospi.tispl),4m(ospi.u-boot),256k(ospi.env),256k(ospi.env.backup),98048k@32m(ospi.rootfs),256k@130816k(ospi.phypattern);omap2-nand.0:2m(NAND.tiboot3),2m(NAND.tispl),2m(NAND.tiboot3.backup),4m(NAND.u-boot),256k(NAND.u-boot-env),256k(NAND.u-boot-env.backup),-(NAND.file-system) root=PARTUUID=04db475c-d9c4-ea4e-af68-de138a1eb707 rw rootfstype=ext4 rootwait
      [    0.000000] Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
      [    0.000000] Inode-cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
      [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
      [    0.000000] Memory: 818836K/1048576K available (12864K kernel code, 1218K rwdata, 3748K rodata, 2048K init, 505K bss, 98668K reserved, 131072K cma-reserved)
      [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
      [    0.000000] rcu: Preemptible hierarchical RCU implementation.
      [    0.000000] rcu:     RCU event tracing is enabled.
      [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=1.
      [    0.000000]  Trampoline variant of Tasks RCU enabled.
      [    0.000000]  Tracing variant of Tasks RCU enabled.
      [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
      [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
      [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
      [    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
      [    0.000000] GICv3: 256 SPIs implemented
      [    0.000000] GICv3: 0 Extended SPIs implemented
      [    0.000000] Root IRQ handler: gic_handle_irq
      [    0.000000] GICv3: GICv3 features: 16 PPIs
      [    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001880000
      [    0.000000] ITS [mem 0x01820000-0x0182ffff]
      [    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
      [    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
      [    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
      [    0.000000] ITS: using cache flushing for cmd queue
      [    0.000000] GICv3: using LPI property table @0x0000000080030000
      [    0.000000] GIC: using cache flushing for LPI property table
      [    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080040000
      [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
      [    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
      [    0.000000] clocksource: arch_sys_counter: mask: 0x3ffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
      [    0.000001] sched_clock: 58 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
      [    0.008505] Console: colour dummy device 80x25
      [    0.013093] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
      [    0.023775] pid_max: default: 32768 minimum: 301
      [    0.028547] LSM: Security Framework initializing
      [    0.033397] Mount-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
      [    0.040975] Mountpoint-cache hash table entries: 2048 (order: 2, 16384 bytes, linear)
      [    0.050673] cblist_init_generic: Setting adjustable number of callback queues.
      [    0.058126] cblist_init_generic: Setting shift to 0 and lim to 1.
      [    0.064420] cblist_init_generic: Setting shift to 0 and lim to 1.
      [    0.070835] rcu: Hierarchical SRCU implementation.
      [    0.075741] rcu:     Max phase no-delay instances is 1000.
      [    0.081338] Platform MSI: msi-controller@1820000 domain created
      [    0.087598] PCI/MSI: /bus@f0000/interrupt-controller@1800000/msi-controller@1820000 domain created
      [    0.097309] EFI services will not be available.
      [    0.102063] smp: Bringing up secondary CPUs ...
      [    0.106703] smp: Brought up 1 node, 1 CPU
      [    0.110802] SMP: Total of 1 processors activated.
      [    0.115616] CPU features: detected: 32-bit EL0 Support
      [    0.120874] CPU features: detected: CRC32 instructions
      [    0.126193] CPU: All CPU(s) started at EL2
      [    0.130380] alternatives: applying system-wide alternatives
      [    0.137517] devtmpfs: initialized
      [    0.147379] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
      [    0.157420] futex hash table entries: 256 (order: 2, 16384 bytes, linear)
      [    0.168887] pinctrl core: initialized pinctrl subsystem
      [    0.174897] DMI not present or invalid.
      [    0.179465] NET: Registered PF_NETLINK/PF_ROUTE protocol family
      [    0.186546] DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations
      [    0.193876] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
      [    0.201876] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
      [    0.210059] audit: initializing netlink subsys (disabled)
      [    0.216150] thermal_sys: Registered thermal governor 'step_wise'
      [    0.216158] thermal_sys: Registered thermal governor 'power_allocator'
      [    0.222320] audit: type=2000 audit(0.136:1): state=initialized audit_enabled=0 res=1
      [    0.236951] cpuidle: using governor menu
      [    0.241151] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
      [    0.248137] ASID allocator initialised with 65536 entries
      [    0.265846] KASLR disabled due to lack of seed
      [    0.277918] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
      [    0.284942] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page
      [    0.291454] HugeTLB: registered 32.0 MiB page size, pre-allocated 0 pages
      [    0.298398] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page
      [    0.304807] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
      [    0.311747] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
      [    0.318155] HugeTLB: registered 64.0 KiB page size, pre-allocated 0 pages
      [    0.325094] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page
      [    0.333264] k3-chipinfo 43000014.chipid: Family:AM62X rev:SR1.0 JTAGID[0x0bb7e02f] Detected
      [    0.343310] iommu: Default domain type: Translated
      [    0.348344] iommu: DMA domain TLB invalidation policy: strict mode
      [    0.355006] SCSI subsystem initialized
      [    0.359166] usbcore: registered new interface driver usbfs
      [    0.364821] usbcore: registered new interface driver hub
      [    0.370274] usbcore: registered new device driver usb
      [    0.375936] mc: Linux media interface: v0.10
      [    0.380347] pps_core: LinuxPPS API ver. 1 registered
      [    0.385424] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
      [    0.394777] PTP clock support registered
      [    0.398904] EDAC MC: Ver: 3.0.0
      [    0.403006] omap-mailbox 29000000.mailbox: omap mailbox rev 0x66fc9100
      [    0.410111] FPGA manager framework
      [    0.413676] Advanced Linux Sound Architecture Driver Initialized.
      [    0.420484] Bluetooth: Core ver 2.22
      [    0.424190] NET: Registered PF_BLUETOOTH protocol family
      [    0.429621] Bluetooth: HCI device and connection manager initialized
      [    0.436123] Bluetooth: HCI socket layer initialized
      [    0.441112] Bluetooth: L2CAP socket layer initialized
      [    0.446285] Bluetooth: SCO socket layer initialized
      [    0.451935] clocksource: Switched to clocksource arch_sys_counter
      [    0.458458] VFS: Disk quotas dquot_6.6.0
      [    0.462512] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
      [    0.474888] NET: Registered PF_INET protocol family
      [    0.480286] IP idents hash table entries: 16384 (order: 5, 131072 bytes, linear)
      [    0.489035] tcp_listen_portaddr_hash hash table entries: 512 (order: 1, 8192 bytes, linear)
      [    0.497656] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
      [    0.505589] TCP established hash table entries: 8192 (order: 4, 65536 bytes, linear)
      [    0.513564] TCP bind hash table entries: 8192 (order: 6, 262144 bytes, linear)
      [    0.521206] TCP: Hash tables configured (established 8192 bind 8192)
      [    0.527875] UDP hash table entries: 512 (order: 2, 16384 bytes, linear)
      [    0.534679] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes, linear)
      [    0.542079] NET: Registered PF_UNIX/PF_LOCAL protocol family
      [    0.548310] RPC: Registered named UNIX socket transport module.
      [    0.554407] RPC: Registered udp transport module.
      [    0.559217] RPC: Registered tcp transport module.
      [    0.564025] RPC: Registered tcp NFSv4.1 backchannel transport module.
      [    0.571368] NET: Registered PF_XDP protocol family
      [    0.576311] PCI: CLS 0 bytes, default 64
      [    0.581014] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
      [    0.590879] Initialise system trusted keyrings
      [    0.595714] workingset: timestamp_bits=46 max_order=18 bucket_order=0
      [    0.607907] squashfs: version 4.0 (2009/01/31) Phillip Lougher
      [    0.614588] NFS: Registering the id_resolver key type
      [    0.619816] Key type id_resolver registered
      [    0.624094] Key type id_legacy registered
      [    0.628262] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
      [    0.635117] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
      [    0.642915] 9p: Installing v9fs 9p2000 file system support
      [    0.682928] Key type asymmetric registered
      [    0.687120] Asymmetric key parser 'x509' registered
      [    0.692159] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 244)
      [    0.699903] io scheduler mq-deadline registered
      [    0.704571] io scheduler kyber registered
      [    0.711430] pinctrl-single 4084000.pinctrl: 34 pins, size 136
      [    0.718292] pinctrl-single f4000.pinctrl: 171 pins, size 684
      [    0.725140] pinctrl-single a40000.pinctrl: 512 pins, size 2048
      [    0.737733] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
      [    0.751075] loop: module loaded
      [    0.755148] megasas: 07.719.03.00-rc1
      [    0.762389] tun: Universal TUN/TAP device driver, 1.6
      [    0.767869] CAN device driver interface
      [    0.772181] PPP generic driver version 2.4.2
      [    0.776682] PPP BSD Compression module registered
      [    0.781495] PPP Deflate Compression module registered
      [    0.786943] PPP MPPE Compression module registered
      [    0.791884] NET: Registered PF_PPPOX protocol family
      [    0.798589] VFIO - User Level meta-driver version: 0.3
      [    0.804761] usbcore: registered new interface driver usb-storage
      [    0.811228] i2c_dev: i2c /dev entries driver
      [    0.816360] Bluetooth: HCI UART driver ver 2.3
      [    0.820922] Bluetooth: HCI UART protocol H4 registered
      [    0.826195] Bluetooth: HCI UART protocol LL registered
      [    0.831500] Bluetooth: HCI UART protocol Broadcom registered
      [    0.837302] Bluetooth: HCI UART protocol QCA registered
      [    0.842662] Bluetooth: HCI UART protocol Marvell registered
      [    0.849544] sdhci: Secure Digital Host Controller Interface driver
      [    0.855905] sdhci: Copyright(c) Pierre Ossman
      [    0.860816] Synopsys Designware Multimedia Card Interface Driver
      [    0.867385] sdhci-pltfm: SDHCI platform and OF driver helper
      [    0.874084] ledtrig-cpu: registered to indicate activity on CPUs
      [    0.880401] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
      [    0.887321] usbcore: registered new interface driver usbhid
      [    0.893025] usbhid: USB HID core driver
      [    0.897958] optee: probing for conduit method.
      [    0.902552] optee: revision 3.20 (8e74d476)
      [    0.902851] optee: dynamic shared memory is enabled
      [    0.912390] optee: initialized driver
      [    0.916506] gnss: GNSS driver registered with major 237
      [    0.921922] usbcore: registered new interface driver gnss-usb
      [    0.929035] Initializing XFRM netlink socket
      [    0.933518] NET: Registered PF_PACKET protocol family
      [    0.938703] can: controller area network core
      [    0.943252] NET: Registered PF_CAN protocol family
      [    0.948155] can: raw protocol
      [    0.951186] can: broadcast manager protocol
      [    0.955469] can: netlink gateway - max_hops=1
      [    0.960019] can: SAE J1939
      [    0.962782] can: isotp protocol
      [    0.966174] Bluetooth: RFCOMM socket layer initialized
      [    0.971497] Bluetooth: RFCOMM ver 1.11
      [    0.975336] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
      [    0.980773] Bluetooth: BNEP socket layer initialized
      [    0.985849] Bluetooth: HIDP (Human Interface Emulation) ver 1.2
      [    0.991905] Bluetooth: HIDP socket layer initialized
      [    0.997154] 9pnet: Installing 9P2000 support
      [    1.001596] Key type dns_resolver registered
      [    1.006420] registered taskstats version 1
      [    1.010653] Loading compiled-in X.509 certificates
      [    1.024083] ti-sci 44043000.system-controller: ABI: 3.1 (firmware rev 0x0009 '9.0.5--v09.00.05 (Kool Koala)')
      [    1.082145] omap_i2c 4900000.i2c: bus 0 rev0.12 at 400 kHz
      [    1.088846] omap_i2c 2b200000.i2c: bus 1 rev0.12 at 400 kHz
      [    1.095700] omap_i2c 20000000.i2c: bus 2 rev0.12 at 400 kHz
      [    1.102776] omap_i2c 20010000.i2c: bus 3 rev0.12 at 100 kHz
      [    1.109519] omap_i2c 20020000.i2c: bus 4 rev0.12 at 400 kHz
      [    1.115530] ti-sci-intr 4210000.interrupt-controller: Interrupt Router 5 domain created
      [    1.123869] ti-sci-intr bus@f0000:interrupt-controller@a00000: Interrupt Router 3 domain created
      [    1.133095] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
      [    1.142986] ti-udma 485c0100.dma-controller: Number of rings: 82
      [    1.151144] ti-udma 485c0100.dma-controller: Channels: 48 (bchan: 18, tchan: 12, rchan: 18)
      [    1.162237] ti-udma 485c0000.dma-controller: Number of rings: 150
      [    1.172271] ti-udma 485c0000.dma-controller: Channels: 35 (tchan: 20, rchan: 15)
      [    1.182460] 4a00000.serial: ttyS0 at MMIO 0x4a00000 (irq = 241, base_baud = 3000000) is a 8250
      [    1.192552] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 242, base_baud = 3000000) is a 8250
      [    1.201486] printk: console [ttyS2] enabled
      [    1.201486] printk: console [ttyS2] enabled
      [    1.209960] printk: bootconsole [ns16550a0] disabled
      [    1.209960] printk: bootconsole [ns16550a0] disabled
      [    1.221048] 2810000.serial: ttyS3 at MMIO 0x2810000 (irq = 244, base_baud = 3000000) is a 8250
      [    1.230459] omap8250 2820000.serial: PM domain pd:153 will not be powered off
      [    1.237869] 2820000.serial: ttyS1 at MMIO 0x2820000 (irq = 245, base_baud = 3000000) is a 8250
      [    1.248125] m_can_platform 20701000.can: m_can device registered (irq=246, version=32)
      [    1.257516] cpufreq: cpufreq_online: CPU0: Running at unlisted initial frequency: 1250000 KHz, changing to: 1000000 KHz
      [    1.270578] mmc0: CQHCI version 5.10
      [    1.277786] mmc2: CQHCI version 5.10
      [    1.282314] gpio-460 (GPS RESET): hogged as output/low
      [    1.287683] gpio-450 (GPS EXT): hogged as output/low
      [    1.292936] gpio-455 (MCAN1_STB): hogged as output/low
      [    1.300648] omap8250 2820000.serial: Failed to create device link (0x180) with 600000.gpio
      [    1.309820] gpio-355 (TIME PULSE): hogged as output/low
      [    1.317063] st_lsm6dsx_i2c 0-006b: supply vdd not found, using dummy regulator
      [    1.324404] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
      [    1.332062] st_lsm6dsx_i2c 0-006b: supply vddio not found, using dummy regulator
      [    1.339565] mmc2: SDHCI controller on fa20000.mmc [fa20000.mmc] using ADMA 64-bit
      [    1.392700] mmc2: new ultra high speed DDR50 SDIO card at address 0001
      [    1.410206] mmc0: new HS200 MMC card at address 0001
      [    1.416028] mmcblk0: mmc0:0001 MMC04G 3.57 GiB
      [    1.424205]  mmcblk0: p1
      [    1.427566] mmcblk0boot0: mmc0:0001 MMC04G 8.00 MiB
      [    1.434520] mmcblk0boot1: mmc0:0001 MMC04G 8.00 MiB
      [    1.440777] mmcblk0rpmb: mmc0:0001 MMC04G 128 KiB, chardev (238:0)
      [    1.929195] Version ID1 matched for RTC device
      [    1.935117] Default values Set for RTC device
      [    1.940366] rtc-ab1805 2-0069: registered as rtc0
      [    1.945675] rtc-ab1805 2-0069: setting system clock to 2024-10-04T07:15:39 UTC (1728026139)
      [    1.985043] monika: part1 : After clearing 5th bit EN_CHG register value: 0x88
      [    1.992902] monika: part1 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
      [    2.001335] monika: part1 : setting 6th bit of BQ2562X_FORCE_IBATDIS_REG register value: 0x88
      [    2.025194] monika: part1 :after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
      [    2.033912] monika: part1 : before enabling 6th and 7th bit of BQ2562X_ADC_REG register value: 0x70
      [    2.043756] monika: part1 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
      [    2.053614] monika: vbat_adc_value value: 120000
      [    2.058230] monika: battery undervoltage threshold value: 2200000
      [    2.064336] monika: in else block :battery undervoltage threshold value: 2200000
      [    2.087066] monika: part2 : before EN_CHG register value: 0xa8
      [    2.200837] monika: part2 : After clearing 5th bit EN_CHG register value: 0x88
      [    2.208919] monika: part2 : reading BQ2562X_FORCE_IBATDIS_REG register value: 0x88
      [    2.217329] monika: part2 : after setting 6th: BQ2562X_FORCE_IBATDIS_REG register value: 0x88
      [    2.241211] monika: part2 : after clearing 6th bit of BQ2562X_FORCE_IBATDIS_REG value: 0x88
      [    2.250026] monika: part2 : before setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xb0
      [    2.259779] monika: part2 : after setting 6th and 7th bit of BQ2562X_ADC_REG register value: 0xf0
      [    2.276290] monika: part2 : vbat_adc_value value: 108000
      [    2.281619] monika: part2 : battery undervoltage threshold: 2200000
      [    2.287919] monika: part2 : no valid battery attached , keep charge disabled
      [    2.295073] monika: part2 : if else block : battery undervoltage threshold: 2200000
      [    2.304531] debugfs: Directory 'pd:182' with parent 'pm_genpd' already present!
      [    2.315015] cfg80211: Loading compiled-in X.509 certificates for regulatory database
      [    2.325637] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
      [    2.332447] platform regulatory.0: Direct firmware load for regulatory.db failed with error -2
      [    2.341512] cfg80211: failed to load regulatory.db
      [    2.357785] ALSA device list:
      [    2.360796]   No soundcards found.
      [    2.455169] EXT4-fs (mmcblk0p1): recovery complete
      [    2.460078] EXT4-fs (mmcblk0p1): mounted filesystem with ordered data mode. Quota mode: none.
      [    2.468722] VFS: Mounted root (ext4 filesystem) on device 179:1.
      [    2.478743] devtmpfs: mounted
      [    2.483344] Freeing unused kernel memory: 2048K
      [    2.488081] Run /sbin/init as init process
      [    2.665934] systemd[1]: systemd 250.5+ running in system mode (+PAM -AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid)
      [    2.698104] systemd[1]: Detected architecture arm64.
      
      Welcome to Arago 2023.04!
      
      [    2.753241] systemd[1]: Hostname set to <am62xx-evm>.
      
      U-Boot SPL 2023.04-g24098ea90d (Jul 06 2023 - 12:59:40 +0000)
      SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.5--v09.00.05 (Kool Koala)')
      SPL initial stack usage: 13376 bytes
      Trying to boot from MMC1
      Authentication passed
      Authentication passed
      Authentication passed
      Authentication passed
      Authentication passed
      Starting ATF on ARM64 core...
      
      NOTICE:  BL31: v2.8(release):v2.8-226-g2fcd408bb3-dirty
      NOTICE:  BL31: Built : 00:42:57, Jan 13 2023
      
      U-Boot SPL 2023.04-g24098ea90d (Jul 06 2023 - 12:59:40 +0000)
      SYSFW ABI: 3.1 (firmware rev 0x0009 '9.0.5--v09.00.05 (Kool Koala)')
      SPL initial stack usage: 1856 bytes
      MMC: no card present
      ** Bad device specification mmc 1 **
      Couldn't find partition mmc 1:1
      Error: could not access storage.
      Trying to boot from MMC1
      Authentication passed
      Authentication passed
      

    Kindly correct me if i am wrong and provide your valuable inputs.

    Thanks, Naresh

  • Hi Naresh, 

    Please see my comments below. 

    Firstly, for the last portion of your response regarding test results with SIM card inserted can we please move that to a new thread so we can keep details for 2 issues sperate? Based on the 3 cases shared this appears to be a power issue which needs further debug, but does not relate to the implementation of the battery detection algorithm. 

    When you post the new thread can you please help to provide waveforms showing VBAT, VSYS, VBUS (for case with power supply connected), and if possible system current draw as well. Thank you. 

    Below are my comments regarding implementation of battery detection algorithm in your system. 

    My query is here battery is connected even why getting results as " no valid battery is connected " ? or do we need to test with dead battery having voltage is grater than 1v and lessthen 2.2v ?

    This relates to the point I made previously regarding the actual undervoltage threshold for your battery. Typically Li-Ion batteries are considered dead/deeply discharged around approx. 2.5V and they are not discharged further. The general expectation is that when voltage measured at BAT pin is < 1V that indicates no battery is connected or the battery protection IC is open (meaning battery is disconnected from the BAT pin of BQ25622).

     You will need to set the conditions (1V & 2.2V) for the algorithm based on expected minimum voltage for your specific battery. What is the minimum allowable battery voltage in your system? Expectation is when protection circuit is closed in part 2 of the algorithm VBAT >= minimum allowable battery voltage. 

    in previous thread case2 and case3 , in battery algorithm it went to part1 where it read vbat_adc value as 0 volts and in part2 vbat_Adc gives non-zero voltage but after reboot then it doesnt not sowing 0 volts . my question is why its showing 0 volts on first read ?

    Your report of VBAT_ADC = 0 indicates you are reading from the register too early. Please ensure enough time delay between ADC enable and ADC read. The ADC_DONE_STAT bit (REG0x1D[6]) can be used to indicate when ADC conversion is complete. Alternatively a wait time of ~50ms after ADC_EN should be sufficient to allow ADC to complete with some margin. 

    when i set and clear this bit (0x16[6] ) , eventhough i was seeing same register value as 0x88 in both cases.

    This is not expected and I cannot replicate testing in lab. It appears to be due to your software implementation. Are you able to run a test where you only modify this register and see if it behaves as you desire? A value of 0x88 indicates you are able to charge from default values, but nothing in the charger IC should be preventing FORCE_IBATDIS bit from being set. 

    Best Regards,

    Garrett