Set PIT frequency divider
(divider: u16, channel: u8)
| 143 | |
| 144 | // Set PIT frequency divider |
| 145 | pub fn set_pitfreq_div(divider: u16, channel: u8) |
| 146 | { |
| 147 | interrupts::without_interrupts(|| |
| 148 | { |
| 149 | let bytes = divider.to_le_bytes(); |
| 150 | let mut cmd: Port<u8> = Port::new(0x43); |
| 151 | let mut data: Port<u8> = Port::new(0x40 + channel as u16); |
| 152 | let opmode = 6; |
| 153 | let accmode = 3; |
| 154 | unsafe |
| 155 | { |
| 156 | cmd.write((channel << 6) | (accmode << 4) | opmode); |
| 157 | data.write(bytes[0]); |
| 158 | data.write(bytes[1]); |
| 159 | } |
| 160 | }); |
| 161 | } |
| 162 | |
| 163 | |
| 164 | // PIT interrupt handler |