1.1 --- a/pkg/devices/lib/msc/include/msc-common.h Fri Feb 16 23:11:25 2024 +0100
1.2 +++ b/pkg/devices/lib/msc/include/msc-common.h Sat Feb 17 23:04:12 2024 +0100
1.3 @@ -21,8 +21,10 @@
1.4
1.5 #pragma once
1.6
1.7 +#include <l4/devices/clocks.h>
1.8 +#include <l4/devices/cpm.h>
1.9 +#include <l4/devices/dma.h>
1.10 #include <l4/devices/msc.h>
1.11 -#include <l4/re/c/dma_space.h>
1.12 #include <l4/sys/types.h>
1.13 #include <stdint.h>
1.14
1.15 @@ -42,6 +44,8 @@
1.16 l4_addr_t _msc_start;
1.17 Hw::Register_block<32> _regs;
1.18 l4_cap_idx_t _irq;
1.19 + Cpm_chip *_cpm;
1.20 + enum Clock_identifiers _clock;
1.21
1.22 // Support eight cards.
1.23
1.24 @@ -58,7 +62,10 @@
1.25
1.26 void ack_irq(uint32_t flags);
1.27 void unmask_irq(uint32_t flags);
1.28 - void reset();
1.29 +
1.30 + virtual void reset();
1.31 +
1.32 + bool set_clock_frequency(uint64_t frequency);
1.33 void start_clock();
1.34 void stop_clock();
1.35
1.36 @@ -99,15 +106,16 @@
1.37
1.38 // Transfer operations.
1.39
1.40 - uint32_t recv_data(l4re_dma_space_dma_addr_t paddr, uint32_t count);
1.41 - uint32_t send_data(l4re_dma_space_dma_addr_t paddr, uint32_t count);
1.42 + uint32_t recv_data(struct dma_region *region, uint32_t count);
1.43 + uint32_t send_data(struct dma_region *region, uint32_t count);
1.44
1.45 virtual uint32_t transfer(l4re_dma_space_dma_addr_t from_paddr,
1.46 l4re_dma_space_dma_addr_t to_paddr,
1.47 bool recv, uint32_t count) = 0;
1.48
1.49 public:
1.50 - explicit Msc_channel(l4_addr_t msc_start, l4_addr_t start, l4_cap_idx_t irq);
1.51 + explicit Msc_channel(l4_addr_t msc_start, l4_addr_t start, l4_cap_idx_t irq,
1.52 + Cpm_chip *cpm, enum Clock_identifiers clock);
1.53
1.54 virtual ~Msc_channel();
1.55
1.56 @@ -117,7 +125,7 @@
1.57
1.58 uint8_t num_cards();
1.59
1.60 - uint32_t read_blocks(uint8_t card, l4re_dma_space_dma_addr_t paddr,
1.61 + uint32_t read_blocks(uint8_t card, struct dma_region *region,
1.62 uint32_t block_address, uint32_t block_count);
1.63 };
1.64
1.65 @@ -129,11 +137,13 @@
1.66 {
1.67 protected:
1.68 l4_addr_t _msc_start, _start, _end;
1.69 + Cpm_chip *_cpm;
1.70
1.71 virtual unsigned int num_channels() = 0;
1.72
1.73 public:
1.74 - explicit Msc_chip(l4_addr_t msc_start, l4_addr_t start, l4_addr_t end);
1.75 + explicit Msc_chip(l4_addr_t msc_start, l4_addr_t start, l4_addr_t end,
1.76 + Cpm_chip *cpm);
1.77 };
1.78
1.79 #endif /* __cplusplus */