1.1 --- a/pkg/devices/lib/cpm/include/cpm-common.h Mon Sep 18 16:40:15 2023 +0200
1.2 +++ b/pkg/devices/lib/cpm/include/cpm-common.h Wed Sep 20 00:37:57 2023 +0200
1.3 @@ -149,6 +149,8 @@
1.4
1.5 uint8_t get_source(Cpm_regs ®s);
1.6 void set_source(Cpm_regs ®s, uint8_t source);
1.7 + enum Clock_identifiers get_source_clock(Cpm_regs ®s);
1.8 + void set_source_clock(Cpm_regs ®s, enum Clock_identifiers clock);
1.9
1.10 // Clock source frequency.
1.11
1.12 @@ -252,7 +254,7 @@
1.13
1.14 virtual int get_parameters(Cpm_regs ®s, uint32_t parameters[]) = 0;
1.15
1.16 - virtual void set_parameters(Cpm_regs ®s, uint32_t parameters[]) = 0;
1.17 + virtual int set_parameters(Cpm_regs ®s, int num_parameters, uint32_t parameters[]) = 0;
1.18 };
1.19
1.20
1.21 @@ -286,7 +288,7 @@
1.22 // Other operations.
1.23
1.24 int get_parameters(Cpm_regs ®s, uint32_t parameters[]);
1.25 - void set_parameters(Cpm_regs ®s, uint32_t parameters[]);
1.26 + int set_parameters(Cpm_regs ®s, int num_parameters, uint32_t parameters[]);
1.27 };
1.28
1.29
1.30 @@ -321,7 +323,7 @@
1.31 // Other operations.
1.32
1.33 int get_parameters(Cpm_regs ®s, uint32_t parameters[]);
1.34 - void set_parameters(Cpm_regs ®s, uint32_t parameters[]);
1.35 + int set_parameters(Cpm_regs ®s, int num_parameters, uint32_t parameters[]);
1.36 };
1.37
1.38
1.39 @@ -330,7 +332,7 @@
1.40
1.41 class Divider_i2s : public Divider_base
1.42 {
1.43 - Field _multiplier, _divider_N, _divider_D;
1.44 + Field _multiplier, _divider_N, _divider_D, _auto_N, _auto_D;
1.45
1.46 // General frequency modifiers.
1.47
1.48 @@ -339,10 +341,10 @@
1.49 uint32_t get_divider_D(Cpm_regs ®s);
1.50
1.51 public:
1.52 - explicit Divider_i2s(Field multiplier, Field divider_N,
1.53 - Field divider_D)
1.54 - : _multiplier(multiplier), _divider_N(divider_N),
1.55 - _divider_D(divider_D)
1.56 + explicit Divider_i2s(Field multiplier, Field divider_N, Field divider_D,
1.57 + Field auto_N, Field auto_D)
1.58 + : _multiplier(multiplier), _divider_N(divider_N), _divider_D(divider_D),
1.59 + _auto_N(auto_N), _auto_D(auto_D)
1.60 {
1.61 }
1.62
1.63 @@ -354,7 +356,7 @@
1.64
1.65 int get_parameters(Cpm_regs ®s, uint32_t parameters[]);
1.66
1.67 - void set_parameters(Cpm_regs ®s, uint32_t parameters[]);
1.68 + int set_parameters(Cpm_regs ®s, int num_parameters, uint32_t parameters[]);
1.69 };
1.70
1.71
1.72 @@ -456,6 +458,8 @@
1.73
1.74 virtual uint8_t get_source(Cpm_regs ®s);
1.75 virtual void set_source(Cpm_regs ®s, uint8_t source);
1.76 + enum Clock_identifiers get_source_clock(Cpm_regs ®s);
1.77 + void set_source_clock(Cpm_regs ®s, enum Clock_identifiers clock);
1.78
1.79 // Clock source frequency.
1.80
1.81 @@ -484,7 +488,7 @@
1.82 virtual ~Clock_divided_base();
1.83
1.84 virtual int get_parameters(Cpm_regs ®s, uint32_t parameters[]);
1.85 - virtual void set_parameters(Cpm_regs ®s, uint32_t parameters[]);
1.86 + virtual int set_parameters(Cpm_regs ®s, int num_parameters, uint32_t parameters[]);
1.87
1.88 // Output frequency.
1.89