add more registers

This commit is contained in:
Laila van Reenen 2025-07-01 16:19:16 +02:00
parent 03d37ac9b4
commit 34ca4a0706
Signed by: LailaTheElf
GPG Key ID: 8A3EF0226518C12D

View File

@ -508,63 +508,207 @@ mod regs {
} }
register_rw!(IFACE6, 0, 33); register_rw!(IFACE6, 0, 33);
impl IFACE6 { impl IFACE6 {
bit_rw!(bclk_output_ctrl, 7); bitmask_enum_rw!(bclk_output_ctrl, 0b1000_0000, 7, IfaceBLCKOutCrtl);
bit_rw!(secd_bclk_output_ctrl, 6); bitmask_enum_rw!(secd_bclk_output_ctrl, 0b0100_0000, 6, IfaceSecdBCLKCtrl);
bitmask_rw!(wclk_output_ctrl, 0b0011_0000, 4); bitmask_enum_rw!(wclk_output_ctrl, 0b0011_0000, 4, IfaceWCLKCtrl);
bitmask_rw!(secd_wclk_output_ctrl, 0b0000_1100, 2); bitmask_enum_rw!(secd_wclk_output_ctrl, 0b0000_1100, 2, IfaceSecdWCLKCtrl);
bit_rw!(prim_data_output_ctrl, 1); bitmask_enum_rw!(prim_data_output_ctrl, 0b0000_0010, 1, IfacePrimDOutCtrl);
bitmask_enum_rw!(secd_data_output_ctrl, 0b0000_0001, 0, IfaceSecdDOutCtrl);
bit_rw!(secd_data_output_ctrl, 0); bit_rw!(secd_data_output_ctrl, 0);
} }
back_to_enum! {
pub enum IfaceBLCKOutCrtl {
GeneratedPrimaryBCLK: 0,
SecdBCLKInput: 0
}
}
back_to_enum! {
pub enum IfaceSecdBCLKCtrl {
BCLKInput: 0,
SecdBCLKInput: 0
}
}
back_to_enum! {
pub enum IfaceWCLKCtrl {
GeneratedDACFS: 0b00,
GeneratedADCFS: 0b01,
SecdWCLKInput: 0b10,
}
}
back_to_enum! {
pub enum IfaceSecdWCLKCtrl {
SecdWCLKInput: 0b00,
GeneratedDACFS: 0b01,
GeneratedADCFS: 0b10,
}
}
back_to_enum! {
pub enum IfacePrimDOutCtrl {
DOutFromSerialIface: 0,
SecdDInput: 1,
}
}
back_to_enum! {
pub enum IfaceSecdDOutCtrl {
DInput: 0,
DOutFromSerialIface: 1,
}
}
register_rw!(DIGIFMISC, 0, 34);
impl DIGIFMISC {
bit_rw!(i2c_genaral_call_addr_accept, 5);
}
register_rw!(ADCFLAGS, 0, 36);
impl ADCFLAGS {
bit_rw!(left_gain_ok, 7);
bit_rw!(left_power, 6);
bit_rw!(left_agc_gain_saturated, 5);
bit_rw!(right_gain_ok, 3);
bit_rw!(right_power, 2);
bit_rw!(right_agc_gain_saturated, 1);
}
register_rw!(DACFLAGS1, 0, 36);
impl DACFLAGS1 {
bit_rw!(left_power, 7);
bit_rw!(left_lineout_power, 6);
bit_rw!(left_headphone_power, 5);
bit_rw!(left_power, 3);
bit_rw!(left_lineout_power, 2);
bit_rw!(left_headphone_power, 1);
}
register_rw!(DACFLAGS2, 0, 36);
impl DACFLAGS2 {
bit_rw!(left_gain_ok, 4);
bit_rw!(right_gain_ok, 0);
}
register_rw!(STICKYFLAGS1, 0, 36);
impl STICKYFLAGS1 {
bit_rw!(left_dac_overflow, 7);
bit_rw!(right_dac_overflow, 6);
bit_rw!(dspd_barrel_shift_out_overflow, 5);
bit_rw!(left_adc_overflow, 3);
bit_rw!(right_adc_overflow, 2);
}
register_rw!(STICKYFLAGS2, 0, 36);
impl STICKYFLAGS2 {
bit_rw!(left_headphone_overcurrent, 7);
bit_rw!(right_headphone_overcurrent, 6);
bit_rw!(headset_button_press, 5);
bit_rw!(headset_deteced, 4);
bit_rw!(left_drc_threshold_exeded, 3);
bit_rw!(right_drc_threshold_exeded, 2);
bit_rw!(dspd_std_int_out, 1);
bit_rw!(dspd_aux_int_out, 1);
}
register_rw!(STICKYFLAGS3, 0, 37);
impl STICKYFLAGS3 {
bit_rw!(left_agc_noise_below_threshold, 6);
bit_rw!(right_agc_noise_below_threshold, 5);
bit_rw!(dspa_std_int_out, 4);
bit_rw!(dspa_aux_int_out, 3);
bit_rw!(left_adc_dc_measure_avalable, 2);
bit_rw!(right_adc_dc_measure_avalable, 1);
}
//TODO: register_rw!(INTFLAG2, 0, 46);
//TODO: register_rw!(INTFLAG3, 0, 47);
//TODO: register_rw!(INT1CTRL, 0, 48);
//TODO: register_rw!(INT2CTRL, 0, 49);
register_rw!(GPIOCTL, 0, 52); register_rw!(GPIOCTL, 0, 52);
impl GPIOCTL {
bitmask_enum_rw!(gpio_ctrl, 0b0011_1100, 0, GPIOCtrl);
bit_rw!(gpio_out_set, 0);
}
back_to_enum! {
pub enum GPIOCtrl {
Disabled: 0b0000,
Input: 0b0001,
GPIn: 0b0010,
GPOut: 0b0011,
ClkOut: 0b0100,
Int1: 0b0101,
Int2: 0b0110,
ADCWClk: 0b0111,
SecdBClk: 0b1000,
SecdWClk: 0b1001,
DigMic: 0b1010,
}
}
register_rw!(DOUTCTL, 0, 53); register_rw!(DOUTCTL, 0, 53);
//TODO
register_rw!(DINCTL, 0, 54); register_rw!(DINCTL, 0, 54);
//TODO
register_rw!(MISOCTL, 0, 55); register_rw!(MISOCTL, 0, 55);
//TODO
register_rw!(SCLKCTL, 0, 56); register_rw!(SCLKCTL, 0, 56);
//TODO
register_rw!(DACSPB, 0, 60); register_rw!(DACSPB, 0, 60);
//TODO
register_rw!(ADCSPB, 0, 61); register_rw!(ADCSPB, 0, 61);
//TODO
register_rw!(DACSETUP, 0, 63); register_rw!(DACSETUP, 0, 63);
impl DACSETUP { impl DACSETUP {
bitmask_rw!(dac_channel, 0b0011_1100, 2); bit_rw!(left_dac_enable, 7);
bit_rw!(ldac2r_enable, 5); bit_rw!(right_dac_enable, 6);
bit_rw!(ldac2l_enable, 4); bitmask_rw!(left_dac_channel, 0b0011_0000, 4); //TODO: make enum
bit_rw!(rdac2l_enable, 3); bitmask_rw!(right_dac_channel, 0b0000_1100, 2); //TODO: make enum
bit_rw!(rdac2r_enable, 2); bitmask_rw!(dac_ch_volume_softstep, 0b0000_0011, 0);
} }
register_rw!(DACMUTE, 0, 64); register_rw!(DACSETUP2, 0, 64);
impl DACMUTE { impl DACSETUP2 {
bitmask_rw!(mute, 0b0000_1100, 2); bit_rw!(diff_mono_modulator, 7);
bitmask_rw!(auto_mute, 0b0111_0000, 2); //TODO: make enum
bit_rw!(left_mute, 3);
bit_rw!(right_mute, 2);
bitmask_rw!(master_volume_ctrl, 0b0000_0011, 0); //TODO: make enum
} }
register_rw!(LDACVOL, 0, 65); register_rw!(LDACVOL, 0, 65);
register_rw!(RDACVOL, 0, 66); register_rw!(RDACVOL, 0, 66);
//TODO: register_rw!(HSDETECT, 0, 67);
//TODO: register_rw!(DRC_CTRL1, 0, 68);
//TODO: register_rw!(DRC_CTRL2, 0, 69);
//TODO: register_rw!(DRC_CTRL3, 0, 70);
//TODO: register_rw!(BEEBGEN1, 0, 71);
//TODO: register_rw!(BEEBGEN2, 0, 72);
//TODO: register_rw!(BEEBGEN3, 0, 73);
//TODO: register_rw!(BEEBGEN4, 0, 74);
//TODO: register_rw!(BEEBGEN5, 0, 75);
//TODO: register_rw!(BEEBGEN6, 0, 76);
//TODO: register_rw!(BEEBGEN7, 0, 77);
//TODO: register_rw!(BEEBGEN8, 0, 78);
//TODO: register_rw!(BEEBGEN9, 0, 79);
register_rw!(ADCSETUP, 0, 81); register_rw!(ADCSETUP, 0, 81);
impl ADCSETUP { impl ADCSETUP {
bitmask_rw!(dac_channel, 0b0110_0000, 6); bit_rw!(left_adc_enable, 7);
bit_rw!(ladc_enable, 7); bit_rw!(right_adc_enable, 6);
bit_rw!(radc_enable, 6); bitmask_rw!(dig_mic_in_conf, 0b0011_0000, 4);
bit_rw!(left_dig_mic_enable, 3);
bit_rw!(right_dig_mic_enable, 2);
bitmask_rw!(volume_softstep, 0b0000_0011, 0);
} }
register_rw!(ADCFGA, 0, 82); register_rw!(ADCFGA, 0, 82); //TODO
register_rw!(LADCVOL, 0, 83); register_rw!(LADCVOL, 0, 83); //TODO
register_rw!(RADCVOL, 0, 84); register_rw!(RADCVOL, 0, 84); //TODO
register_rw!(LAGC1, 0, 86); register_rw!(LAGC1, 0, 86); //TODO
register_rw!(LAGC2, 0, 87); register_rw!(LAGC2, 0, 87); //TODO
register_rw!(LAGC3, 0, 88); register_rw!(LAGC3, 0, 88); //TODO
register_rw!(LAGC4, 0, 89); register_rw!(LAGC4, 0, 89); //TODO
register_rw!(LAGC5, 0, 90); register_rw!(LAGC5, 0, 90); //TODO
register_rw!(LAGC6, 0, 91); register_rw!(LAGC6, 0, 91); //TODO
register_rw!(LAGC7, 0, 92); register_rw!(LAGC7, 0, 92); //TODO
register_rw!(RAGC1, 0, 94); register_rw!(RAGC1, 0, 94); //TODO
register_rw!(RAGC2, 0, 95); register_rw!(RAGC2, 0, 95); //TODO
register_rw!(RAGC3, 0, 96); register_rw!(RAGC3, 0, 96); //TODO
register_rw!(RAGC4, 0, 97); register_rw!(RAGC4, 0, 97); //TODO
register_rw!(RAGC5, 0, 98); register_rw!(RAGC5, 0, 98); //TODO
register_rw!(RAGC6, 0, 99); register_rw!(RAGC6, 0, 99); //TODO
register_rw!(RAGC7, 0, 100); register_rw!(RAGC7, 0, 100); //TODO
register_rw!(PWRCFG, 1, 1); register_rw!(PWRCFG, 1, 1);
impl PWRCFG { impl PWRCFG {
bit_rw!(avdd_weak_disable, 3); bit_rw!(avdd_weak_disable, 3);
} }
register_rw!(LDOCTL, 1, 2); register_rw!(LDOCTL, 1, 2);
impl LDOCTL { impl LDOCTL {
//TODO: add the other parameters
bit_rw!(enable, 0); bit_rw!(enable, 0);
} }
register_rw!(LPLAYBACK, 1, 3); register_rw!(LPLAYBACK, 1, 3);