1.1 --- a/pkg/devices/lib/tcu/src/x1600.cc Thu Feb 01 22:40:19 2024 +0100
1.2 +++ b/pkg/devices/lib/tcu/src/x1600.cc Thu Feb 01 22:41:30 2024 +0100
1.3 @@ -62,18 +62,6 @@
1.4
1.5 // Field definitions.
1.6
1.7 -// Flag/mask register bits.
1.8 -
1.9 -enum Flag_bit_numbers : unsigned
1.10 -{
1.11 - Half_match_wdt = 24, // HFLAGW
1.12 -
1.13 - // Flag/mask group bit offsets.
1.14 -
1.15 - Half_match_shift = 16,
1.16 - Full_match_shift = 0,
1.17 -};
1.18 -
1.19 // Counter data constraints.
1.20
1.21 enum Data_masks : unsigned
1.22 @@ -157,8 +145,9 @@
1.23
1.24 // Channel abstraction.
1.25
1.26 -Tcu_x1600_channel::Tcu_x1600_channel(l4_addr_t addr, uint8_t channel)
1.27 -: Tcu_channel(addr, channel)
1.28 +Tcu_x1600_channel::Tcu_x1600_channel(l4_addr_t addr, uint8_t channel,
1.29 + l4_cap_idx_t irq)
1.30 +: Tcu_channel(addr, channel, irq)
1.31 {
1.32 }
1.33
1.34 @@ -199,9 +188,10 @@
1.35 {
1.36 }
1.37
1.38 -Tcu_channel *Tcu_x1600_chip::_get_channel(l4_addr_t addr, uint8_t channel)
1.39 +Tcu_channel *Tcu_x1600_chip::_get_channel(l4_addr_t addr, uint8_t channel,
1.40 + l4_cap_idx_t irq)
1.41 {
1.42 - return new Tcu_x1600_channel(addr, channel);
1.43 + return new Tcu_x1600_channel(addr, channel, irq);
1.44 }
1.45
1.46
1.47 @@ -213,9 +203,9 @@
1.48 return (void *) new Tcu_x1600_chip(tcu_base, tcu_base_end);
1.49 }
1.50
1.51 -void *x1600_tcu_get_channel(void *tcu, uint8_t channel)
1.52 +void *x1600_tcu_get_channel(void *tcu, uint8_t channel, l4_cap_idx_t irq)
1.53 {
1.54 - return static_cast<Tcu_x1600_chip *>(tcu)->get_channel(channel);
1.55 + return static_cast<Tcu_x1600_chip *>(tcu)->get_channel(channel, irq);
1.56 }
1.57
1.58 void x1600_tcu_disable(void *tcu_channel)
1.59 @@ -292,3 +282,33 @@
1.60 {
1.61 static_cast<Tcu_x1600_channel *>(tcu_channel)->set_full_data_value(value);
1.62 }
1.63 +
1.64 +int x1600_tcu_get_full_data_mask(void *tcu_channel)
1.65 +{
1.66 + return static_cast<Tcu_x1600_channel *>(tcu_channel)->get_full_data_mask();
1.67 +}
1.68 +
1.69 +void x1600_tcu_set_full_data_mask(void *tcu_channel, int masked)
1.70 +{
1.71 + static_cast<Tcu_x1600_channel *>(tcu_channel)->set_full_data_mask(masked);
1.72 +}
1.73 +
1.74 +int x1600_tcu_get_half_data_mask(void *tcu_channel)
1.75 +{
1.76 + return static_cast<Tcu_x1600_channel *>(tcu_channel)->get_half_data_mask();
1.77 +}
1.78 +
1.79 +void x1600_tcu_set_half_data_mask(void *tcu_channel, int masked)
1.80 +{
1.81 + static_cast<Tcu_x1600_channel *>(tcu_channel)->set_half_data_mask(masked);
1.82 +}
1.83 +
1.84 +int x1600_tcu_have_interrupt(void *tcu_channel)
1.85 +{
1.86 + return static_cast<Tcu_x1600_channel *>(tcu_channel)->have_interrupt();
1.87 +}
1.88 +
1.89 +int x1600_tcu_wait_for_irq(void *tcu_channel, unsigned int timeout)
1.90 +{
1.91 + return static_cast<Tcu_x1600_channel *>(tcu_channel)->wait_for_irq(timeout);
1.92 +}