Kernel: Specify I/O size for BMIDEChannel

This commit is contained in:
Gunnar Beutner 2021-06-27 21:59:48 +02:00 committed by Andreas Kling
parent 32840dfa17
commit a0c1af4327
Notes: sideshowbarker 2024-07-18 11:25:15 +09:00
2 changed files with 3 additions and 1 deletions

View file

@ -82,6 +82,7 @@ public:
template<typename T>
ALWAYS_INLINE T in()
{
static_assert(sizeof(T) <= 4);
if constexpr (sizeof(T) == 4)
return IO::in32(get());
if constexpr (sizeof(T) == 2)
@ -94,6 +95,7 @@ public:
template<typename T>
ALWAYS_INLINE void out(T value)
{
static_assert(sizeof(T) <= 4);
if constexpr (sizeof(T) == 4) {
IO::out32(get(), value);
return;

View file

@ -212,7 +212,7 @@ void BMIDEChannel::ata_read_sectors(bool slave_request, u16 capabilities)
m_io_group.bus_master_base().value().out<u8>(0);
// Write the PRDT location
m_io_group.bus_master_base().value().offset(4).out(m_prdt_page->paddr().get());
m_io_group.bus_master_base().value().offset(4).out<u32>(m_prdt_page->paddr().get());
// Set transfer direction
m_io_group.bus_master_base().value().out<u8>(0x8);