Changeset f451dae in mainline for uspace/drv/audio/sb16/dma_controller.c
- Timestamp:
- 2011-10-03T17:58:31Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- dea75c04
- Parents:
- 84dec070
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/drv/audio/sb16/dma_controller.c
r84dec070 rf451dae 37 37 #include "dma_controller.h" 38 38 39 #define DMA_CONTROLLER_FIRST_BASE 0x0 40 typedef struct dma_controller_regs_first { 41 uint8_t channel_start0; 42 uint8_t channel_count0; 43 uint8_t channel_start1; 44 uint8_t channel_count1; 45 uint8_t channel_start2; 46 uint8_t channel_count2; 47 uint8_t channel_start3; 48 uint8_t channel_count3; 49 50 uint8_t command_status; 51 uint8_t request; 52 uint8_t single_mask; 53 uint8_t mode; 54 uint8_t flip_flop; 55 uint8_t master_reset_intermediate; 56 uint8_t multi_mask; 57 } dma_controller_regs_first_t; 58 59 #define DMA_CONTROLLER_SECOND_BASE 0xc0 60 typedef struct dma_controller_regs_second { 61 uint8_t channel_start4; 62 uint8_t reserved0; 63 uint8_t channel_count4; 64 uint8_t reserved1; 65 uint8_t channel_start5; 66 uint8_t reserved2; 67 uint8_t channel_count5; 68 uint8_t reserved3; 69 uint8_t channel_start6; 70 uint8_t reserved4; 71 uint8_t channel_count6; 72 uint8_t reserved5; 73 uint8_t channel_start7; 74 uint8_t reserved6; 75 uint8_t channel_count7; 76 77 uint8_t command_status; 78 uint8_t reserved8; 79 uint8_t request; 80 uint8_t reserved9; 81 uint8_t single_mask; 82 uint8_t reserveda; 83 uint8_t mode; 84 uint8_t reservedb; 85 uint8_t flip_flop; 86 uint8_t reservedc; 87 uint8_t master_reset_intermediate; 88 uint8_t reservedd; 89 uint8_t multi_mask; 90 } dma_controller_regs_second_t; 91 92 #define DMA_CONTROLLER_PAGE_BASE 0x81 93 typedef struct dma_page_regs { 94 uint8_t channel2; 95 uint8_t channel3; 96 uint8_t channel1; 97 uint8_t reserved0; 98 uint8_t reserved1; 99 uint8_t reserved2; 100 uint8_t channel0; 101 uint8_t reserved3; 102 uint8_t channel6; 103 uint8_t channel7; 104 uint8_t channel5; 105 uint8_t reserved4; 106 uint8_t reserved5; 107 uint8_t reserved6; 108 uint8_t channel4; 109 } dma_page_regs_t; 110 111 typedef struct dma_channel { 112 uint8_t offset_reg_address; 113 uint8_t size_reg_address; 114 uint8_t page_reg_address; 115 } dma_channel_t; 116 117 typedef struct dma_controller { 118 dma_channel_t channel[8]; 119 dma_page_regs_t *page_table; 120 dma_controller_regs_first_t *first; 121 dma_controller_regs_second_t *second; 122 } dma_controller_t; 123 124 dma_controller_t controller_8237 = { 125 .channel = { 126 { 0x00, 0x01, 0x87 }, { 0x02, 0x03, 0x83 }, 127 { 0x04, 0x05, 0x81 }, { 0x06, 0x07, 0x82 }, 128 { 0xc0, 0xc2, 0x8f }, { 0xc4, 0xc6, 0x8b }, 129 { 0xc8, 0xca, 0x89 }, { 0xcc, 0xce, 0x8a } }, 130 .page_table = NULL, 131 .first = NULL, 132 .second = NULL, 133 }; 134 135 static inline dma_controller_t *dma_controller_init() 136 { 137 return NULL; 138 } 139 /*----------------------------------------------------------------------------*/ 39 140 int dma_setup_channel(unsigned channel, uintptr_t pa, size_t size) 40 141 { 142 static dma_controller_t *controller = NULL; 143 if (!controller) 144 return EIO; 41 145 return ENOTSUP; 42 146 } 43 44 147 /** 45 148 * @}
Note:
See TracChangeset
for help on using the changeset viewer.