diff --git a/Cargo.lock b/Cargo.lock index 147a51493d..d7cd2c0362 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -984,16 +984,6 @@ dependencies = [ "toml 0.5.11", ] -[[package]] -name = "pcspkrd" -version = "0.1.0" -dependencies = [ - "common", - "libredox", - "redox-daemon", - "redox_syscall", -] - [[package]] name = "pico-args" version = "0.5.0" diff --git a/Cargo.toml b/Cargo.toml index 62d4865e02..14dd17de9d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,6 @@ members = [ "audio/ac97d", "audio/ihdad", - "audio/pcspkrd", "audio/sb16d", "graphics/bgad", diff --git a/README.md b/README.md index 41a8b5fff7..682cd06b74 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,6 @@ This document covers the driver details. - ixgbed - Intel 10 Gigabit ethernet - nvmed - NVMe interface - pcid - PCI interface with extensions for PCI Express -- pcspkrd - PC speaker - ps2d - PS/2 interface - rtl8139d - Realtek ethernet - rtl8168d - Realtek ethernet diff --git a/audio/pcspkrd/Cargo.toml b/audio/pcspkrd/Cargo.toml deleted file mode 100644 index 555c25f566..0000000000 --- a/audio/pcspkrd/Cargo.toml +++ /dev/null @@ -1,11 +0,0 @@ -[package] -name = "pcspkrd" -version = "0.1.0" -authors = ["Tibor Nagy "] -edition = "2018" - -[dependencies] -common = { path = "../../common" } -redox_syscall = "0.5" -redox-daemon = "0.1" -libredox = "0.1.3" diff --git a/audio/pcspkrd/src/main.rs b/audio/pcspkrd/src/main.rs deleted file mode 100644 index d021257710..0000000000 --- a/audio/pcspkrd/src/main.rs +++ /dev/null @@ -1,46 +0,0 @@ -mod pcspkr; -mod scheme; - -use std::fs::File; -use std::io::{Read, Write}; - -use syscall::call::iopl; -use syscall::data::Packet; -use syscall::scheme::SchemeMut; - -use redox_daemon::Daemon; - -use self::pcspkr::Pcspkr; -use self::scheme::PcspkrScheme; - -fn main() { - Daemon::new(move |daemon| { - unsafe { iopl(3).unwrap() }; - - let mut socket = File::create(":pcspkr").expect("pcspkrd: failed to create pcspkr scheme"); - daemon.ready().expect("failed to notify parent"); - - let pcspkr = Pcspkr::new(); - println!(" + pcspkr"); - - let mut scheme = PcspkrScheme { - pcspkr, - handle: None, - next_id: 0, - }; - - libredox::call::setrens(0, 0).expect("pcspkrd: failed to enter null namespace"); - - loop { - let mut packet = Packet::default(); - socket - .read(&mut packet) - .expect("pcspkrd: failed to read events from pcspkr scheme"); - scheme.handle(&mut packet); - socket - .write(&packet) - .expect("pcspkrd: failed to write responses to pcspkr scheme"); - } - }) - .expect("pcspkrd: failed to daemonize"); -} diff --git a/audio/pcspkrd/src/pcspkr.rs b/audio/pcspkrd/src/pcspkr.rs deleted file mode 100644 index 945421c2eb..0000000000 --- a/audio/pcspkrd/src/pcspkr.rs +++ /dev/null @@ -1,35 +0,0 @@ -use common::io::{Io, Pio}; - -pub struct Pcspkr { - command: Pio, - channel: Pio, - gate: Pio, -} - -const PIT_FREQUENCY: usize = 0x1234DC; - -impl Pcspkr { - pub fn new() -> Pcspkr { - Pcspkr { - command: Pio::new(0x43), - channel: Pio::new(0x42), - gate: Pio::new(0x61), - } - } - - pub fn set_frequency(&mut self, frequency: usize) { - let div = PIT_FREQUENCY.checked_div(frequency).unwrap_or(0); - self.command.write(0xB6); - self.channel.write((div & 0xFF) as u8); - self.channel.write(((div >> 8) & 0xFF) as u8); - } - - pub fn set_gate(&mut self, state: bool) { - let gate_value = self.gate.read(); - if state { - self.gate.write(gate_value | 0x03); - } else { - self.gate.write(gate_value & 0xFC); - } - } -} diff --git a/audio/pcspkrd/src/scheme.rs b/audio/pcspkrd/src/scheme.rs deleted file mode 100644 index 2cb21fc51a..0000000000 --- a/audio/pcspkrd/src/scheme.rs +++ /dev/null @@ -1,87 +0,0 @@ -use syscall::data::Stat; -use syscall::{ - Error, Result, SchemeMut, EBUSY, EINVAL, EPERM, MODE_CHR, O_ACCMODE, O_STAT, O_WRONLY, -}; - -use crate::pcspkr::Pcspkr; - -pub struct PcspkrScheme { - pub pcspkr: Pcspkr, - pub handle: Option, - pub next_id: usize, -} - -impl SchemeMut for PcspkrScheme { - fn open(&mut self, _path: &str, flags: usize, _uid: u32, _gid: u32) -> Result { - if (flags & O_ACCMODE == 0) && (flags & O_STAT == O_STAT) { - Ok(0) - } else if flags & O_ACCMODE == O_WRONLY { - if self.handle.is_none() { - self.next_id += 1; - self.handle = Some(self.next_id); - Ok(self.next_id) - } else { - Err(Error::new(EBUSY)) - } - } else { - Err(Error::new(EINVAL)) - } - } - - fn read(&mut self, _id: usize, _buf: &mut [u8]) -> Result { - Err(Error::new(EPERM)) - } - - fn write(&mut self, id: usize, buf: &[u8]) -> Result { - if self.handle != Some(id) { - return Err(Error::new(EINVAL)); - } - - if buf.len() != 2 { - return Err(Error::new(EINVAL)); - } - - let frequency = buf[0] as usize + ((buf[1] as usize) << 8); - - if frequency == 0 { - self.pcspkr.set_gate(false); - } else { - self.pcspkr.set_frequency(frequency); - self.pcspkr.set_gate(true); - } - - Ok(buf.len()) - } - - fn fpath(&mut self, _id: usize, buf: &mut [u8]) -> Result { - let mut i = 0; - let scheme_path = b"pcspkr"; - while i < buf.len() && i < scheme_path.len() { - buf[i] = scheme_path[i]; - i += 1; - } - Ok(i) - } - - fn fstat(&mut self, _id: usize, stat: &mut Stat) -> Result { - *stat = Stat { - st_mode: MODE_CHR | 0o222, - ..Default::default() - }; - - Ok(0) - } - - fn fcntl(&mut self, _id: usize, _cmd: usize, _arg: usize) -> Result { - Ok(0) - } - - fn close(&mut self, id: usize) -> Result { - if self.handle == Some(id) { - self.pcspkr.set_gate(false); - self.handle = None; - } - - Ok(0) - } -}