1.1 --- a/pkg/devices/lib/cpm/include/cpm-common.h Sun Sep 17 21:36:19 2023 +0200
1.2 +++ b/pkg/devices/lib/cpm/include/cpm-common.h Sun Sep 17 23:27:45 2023 +0200
1.3 @@ -294,7 +294,6 @@
1.4 // Other operations.
1.5
1.6 int get_parameters(Cpm_regs ®s, uint32_t parameters[]);
1.7 -
1.8 void set_parameters(Cpm_regs ®s, uint32_t parameters[]);
1.9
1.10 // Undefined divider.
1.11 @@ -334,7 +333,6 @@
1.12 // Other operations.
1.13
1.14 int get_parameters(Cpm_regs ®s, uint32_t parameters[]);
1.15 -
1.16 void set_parameters(Cpm_regs ®s, uint32_t parameters[]);
1.17 };
1.18
1.19 @@ -435,34 +433,37 @@
1.20
1.21
1.22
1.23 +class Clock_controlled : public Clock_base
1.24 +{
1.25 +protected:
1.26 + virtual Control_base &_get_control() = 0;
1.27 +
1.28 +public:
1.29 +
1.30 + // Clock control.
1.31 +
1.32 + virtual int have_clock(Cpm_regs ®s);
1.33 + virtual void start_clock(Cpm_regs ®s);
1.34 + virtual void stop_clock(Cpm_regs ®s);
1.35 +};
1.36 +
1.37 +
1.38 +
1.39 // An actively managed clock with source.
1.40
1.41 -class Clock_active : public Clock_base
1.42 +class Clock_active : public Clock_controlled
1.43 {
1.44 protected:
1.45 Source _source;
1.46
1.47 - virtual Control_base &_get_control() = 0;
1.48 -
1.49 public:
1.50 explicit Clock_active(Source source)
1.51 : _source(source)
1.52 {
1.53 }
1.54
1.55 - explicit Clock_active()
1.56 - : _source(Source::undefined)
1.57 - {
1.58 - }
1.59 -
1.60 virtual ~Clock_active();
1.61
1.62 - // Clock control.
1.63 -
1.64 - virtual int have_clock(Cpm_regs ®s);
1.65 - virtual void start_clock(Cpm_regs ®s);
1.66 - virtual void stop_clock(Cpm_regs ®s);
1.67 -
1.68 // Clock source.
1.69
1.70 virtual uint8_t get_source(Cpm_regs ®s);
1.71 @@ -495,7 +496,6 @@
1.72 virtual ~Clock_divided();
1.73
1.74 virtual int get_parameters(Cpm_regs ®s, uint32_t parameters[]);
1.75 -
1.76 virtual void set_parameters(Cpm_regs ®s, uint32_t parameters[]);
1.77
1.78 // Output frequency.
1.79 @@ -556,8 +556,7 @@
1.80 virtual Divider_base &_get_divider() { return _divider; }
1.81
1.82 public:
1.83 - explicit Clock(Source source,
1.84 - Control control = Control::undefined,
1.85 + explicit Clock(Source source, Control control = Control::undefined,
1.86 Divider divider = Divider::undefined)
1.87 : Clock_divided(source), _control(control), _divider(divider)
1.88 {