@@ -70,15 +70,15 @@ int ADAU1860::begin() {
7070
7171 k_msleep (35 ); // CM rise time (see datasheet)
7272
73- uint8_t power_mode = 0x01 | 0x04 ; // Hibernate 1, Master enable
74- writeReg (registers::CHIP_PWR, &power_mode, sizeof (power_mode));
73+ // uint8_t power_mode = 0x01 | 0x04; // Hibernate 1, Master enable
74+ // writeReg(registers::CHIP_PWR, &power_mode, sizeof(power_mode));
7575
7676 // Non self-boot
7777 uint8_t startup_dlycnt_byp = 1 ;
7878 writeReg (registers::PMU_CTRL2, &startup_dlycnt_byp, sizeof (startup_dlycnt_byp));
7979
8080 // Power saving
81- uint8_t cm_startup_over = 1 << 4 | power_mode;
81+ uint8_t cm_startup_over = 1 << 4 ; // | power_mode;
8282 writeReg (registers::CHIP_PWR, &cm_startup_over, sizeof (cm_startup_over));
8383
8484 // uint8_t sai_clk_pwr = 0x01; // I2S_IN enable
@@ -88,6 +88,22 @@ int ADAU1860::begin() {
8888 uint8_t clk_ctrl13 = (1 << 7 ) | (1 << 4 ) | 0x01 ; // (0x01 = 49.152 MHz) // | 0x3;
8989 writeReg (registers::CLK_CTRL13, &clk_ctrl13, sizeof (clk_ctrl13));
9090
91+ uint8_t status2;
92+ readReg (registers::STATUS2, &status2, sizeof (status2));
93+ LOG_DBG (" STATUS2: 0x%x" , status2);
94+
95+ if (!(status2 & (1 << 7 ))) LOG_WRN (" No power up" );
96+
97+ while (!(status2 & (1 << 7 ))) {
98+ readReg (registers::STATUS2, &status2, sizeof (status2));
99+ LOG_DBG (" STATUS2: 0x%x" , status2);
100+
101+ // power up complete and PLL lock
102+ if (!(status2 & (1 << 7 ))) LOG_WRN (" No power up" );
103+
104+ k_usleep (10 );
105+ }
106+
91107 // uint8_t clk_ctrl13 = (0 << 7) | (1 << 4) | 0x01; // (0x01 = 49.152 MHz)
92108 // writeReg(registers::CLK_CTRL13, &clk_ctrl13, sizeof(clk_ctrl13));
93109
@@ -109,7 +125,7 @@ int ADAU1860::begin() {
109125 // k_msleep(1);
110126
111127 // verify power up complete
112- uint8_t status2;
128+ // uint8_t status2;
113129 readReg (registers::STATUS2, &status2, sizeof (status2));
114130 LOG_DBG (" STATUS2: 0x%x" , status2);
115131
@@ -127,10 +143,9 @@ int ADAU1860::begin() {
127143 k_usleep (10 );
128144 }
129145
130- // LOG_INF("DAC_CTRL: 0x%02X", status);
131146 // Power saving
132- // uint8_t cm_startup_over = 1 << 2 | 0x01 ; // Master block en | Hibernate 1 (SOC off, ADP on);
133- // writeReg(registers::CHIP_PWR, &cm_startup_over , sizeof(cm_startup_over ));
147+ uint8_t power_mode = 0x40 | 0x01 | 0x04 ; // CM_Startup_over | Hibernate 1, Master enable
148+ writeReg (registers::CHIP_PWR, &power_mode , sizeof (power_mode ));
134149
135150 // SPT0_CTRL1 - reset val (32 BCLKs?)
136151 uint8_t spt0_ctrl1 = 0x10 ; // 1 << 4 (16 BCLKs)
@@ -527,10 +542,6 @@ void ADAU1860::writeReg(uint32_t reg, uint8_t *buffer, uint16_t len) {
527542 _i2c->release ();
528543}
529544
530- void ADAU1860::writeReg_u8 (uint32_t reg, uint8_t &buffer) {
531- writeReg (reg, &buffer, sizeof (buffer));
532- }
533-
534545#ifdef NOISE_GATE_ACTIVE
535546int cmd_dsp_noise_gate (const struct shell *shell, size_t argc, char **argv) {
536547 if (argc != 6 ) {
0 commit comments