some alternatives to think about and try later if your current line of effort stalls:

Documentation is sparse or non existent for these "suggestions" so most of this falls under "try it and see"

The idle driver has "knobs" to adjust in the dts file, i.e.:

entry-latency-us = <150>;
exit-latency-us = <200>;
min-residency-us = <2000>;

There is a (undocumented?) different cpu "bring up" mechanism specified in the qcom-ipq8064.dtsi

cpu0: cpu@0 {
			compatible = "qcom,krait";
			enable-method = "qcom,kpss-acc-v1";

I tried enable-method = "qcom,kpss-acc-v2";early on but I did not observe a change

Lastly, perhaps the "SPM register data for 8064" hard coded into spm.c needs adjusting for 8065...

/* SPM register data for 8064 */                                                
static const struct spm_reg_data spm_reg_8064_cpu = {                           
        .reg_offset = spm_reg_offset_v1_1,                                      
        .spm_cfg = 0x1F,                                                        
        .pmic_dly = 0x02020004,                                                 
        .pmic_data[0] = 0x0084009C,                                             
        .pmic_data[1] = 0x00A4001C,                                             
        .seq = { 0x03, 0x0F, 0x00, 0x24, 0x54, 0x10, 0x09, 0x03, 0x01,          
                0x10, 0x54, 0x30, 0x0C, 0x24, 0x30, 0x0F },                     
        .start_index[PM_SLEEP_MODE_STBY] = 0,                                   
        .start_index[PM_SLEEP_MODE_SPC] = 2,                                    
};                                                                              

If I can understand why its this way for 8064 and how 8065 is different this might be possible. I think this is a long shot tho.

HTH

1 Like