From 04f60cf7beb5997815a9387cb970034b23cc53b3 Mon Sep 17 00:00:00 2001 From: 4lDO2 <4lDO2@protonmail.com> Date: Sat, 16 Dec 2023 13:12:17 +0100 Subject: [PATCH] Fix ihdad. --- ihdad/src/hda/cmdbuff.rs | 18 +++++++----------- ihdad/src/main.rs | 2 +- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/ihdad/src/hda/cmdbuff.rs b/ihdad/src/hda/cmdbuff.rs index a4af7820d7..c06c448d65 100644 --- a/ihdad/src/hda/cmdbuff.rs +++ b/ihdad/src/hda/cmdbuff.rs @@ -73,12 +73,12 @@ struct Corb { } impl Corb { - pub fn new(regs_addr: usize, corb_buff_phys: usize, corb_buff_virt: usize) -> Corb { + pub fn new(regs_addr: usize, corb_buff_phys: usize, corb_buff_virt: *mut u32) -> Corb { println!("regs addr {:x}", regs_addr); unsafe { Corb { regs: &mut *(regs_addr as *mut CorbRegs), - corb_base: (corb_buff_virt) as *mut u32, + corb_base: corb_buff_virt, corb_base_phys: corb_buff_phys, corb_count: 0, } @@ -209,11 +209,11 @@ struct Rirb { } impl Rirb { - pub fn new(regs_addr: usize, rirb_buff_phys: usize, rirb_buff_virt: usize) -> Rirb { + pub fn new(regs_addr: usize, rirb_buff_phys: usize, rirb_buff_virt: *mut u64) -> Rirb { unsafe { Rirb { regs: &mut *(regs_addr as *mut RirbRegs), - rirb_base: (rirb_buff_virt) as *mut u64, + rirb_base: rirb_buff_virt, rirb_rp: 0, rirb_base_phys: rirb_buff_phys, rirb_count: 0, @@ -343,8 +343,6 @@ pub struct CommandBuffer { rirb: Rirb, icmd: ImmediateCommand, - corb_rirb_base_phys: usize, - use_immediate_cmd: bool, mem: Dma<[u8; 0x1000]>, } @@ -352,13 +350,13 @@ pub struct CommandBuffer { impl CommandBuffer { pub fn new( regs_addr: usize, - cmd_buff: Dma<[u8; 0x1000]>, + mut cmd_buff: Dma<[u8; 0x1000]>, ) -> CommandBuffer { - let corb = Corb::new(regs_addr + CORB_OFFSET, cmd_buff.physical(), cmd_buff.as_ptr() as usize); + let corb = Corb::new(regs_addr + CORB_OFFSET, cmd_buff.physical(), cmd_buff.as_mut_ptr().cast()); let rirb = Rirb::new( regs_addr + RIRB_OFFSET, - cmd_buff.as_ptr() as usize + CORB_BUFF_MAX_SIZE, cmd_buff.physical() + CORB_BUFF_MAX_SIZE, + cmd_buff.as_mut_ptr().cast::().wrapping_add(CORB_BUFF_MAX_SIZE).cast(), ); let icmd = ImmediateCommand::new(regs_addr + ICMD_OFFSET); @@ -368,8 +366,6 @@ impl CommandBuffer { rirb, icmd, - corb_rirb_base_phys: cmd_buff.physical(), - use_immediate_cmd: false, mem: cmd_buff, diff --git a/ihdad/src/main.rs b/ihdad/src/main.rs index 6362fcb4e7..789b0be20e 100755 --- a/ihdad/src/main.rs +++ b/ihdad/src/main.rs @@ -33,7 +33,7 @@ fn setup_logging() -> Option<&'static RedoxLogger> { let mut logger = RedoxLogger::new() .with_output( OutputBuilder::stderr() - .with_filter(log::LevelFilter::Info) // limit global output to important info + .with_filter(log::LevelFilter::Debug) // limit global output to important info .with_ansi_escape_codes() .flush_on_newline(true) .build()