mirror of
https://github.com/wessel-novacustom/clevo-keyboard.git
synced 2024-11-15 03:34:01 +01:00
uniwill_wmi: Add missing BFLG impl. according to original wmi methods
This commit is contained in:
parent
34117c7c68
commit
2a3c59b06f
|
@ -127,10 +127,21 @@ static u32 uw_ec_read_addr_direct(u8 addr_low, u8 addr_high, union uw_ec_read_re
|
||||||
|
|
||||||
mutex_lock(&uniwill_ec_lock);
|
mutex_lock(&uniwill_ec_lock);
|
||||||
|
|
||||||
|
ec_read(UNIWILL_EC_REG_FLAGS, &flags);
|
||||||
|
if ((flags & (1 << UNIWILL_EC_BIT_BFLG)) > 0) {
|
||||||
|
output->dword = 0xfefefefe;
|
||||||
|
mutex_unlock(&uniwill_ec_lock);
|
||||||
|
return -EBUSY;
|
||||||
|
}
|
||||||
|
|
||||||
|
flags |= (1 << UNIWILL_EC_BIT_BFLG);
|
||||||
|
ec_write(UNIWILL_EC_REG_FLAGS, flags);
|
||||||
|
|
||||||
ec_write(UNIWILL_EC_REG_LDAT, addr_low);
|
ec_write(UNIWILL_EC_REG_LDAT, addr_low);
|
||||||
ec_write(UNIWILL_EC_REG_HDAT, addr_high);
|
ec_write(UNIWILL_EC_REG_HDAT, addr_high);
|
||||||
|
|
||||||
flags = (0 << UNIWILL_EC_BIT_DRDY) | (1 << UNIWILL_EC_BIT_RFLG);
|
flags &= ~(1 << UNIWILL_EC_BIT_DRDY);
|
||||||
|
flags |= (1 << UNIWILL_EC_BIT_RFLG);
|
||||||
ec_write(UNIWILL_EC_REG_FLAGS, flags);
|
ec_write(UNIWILL_EC_REG_FLAGS, flags);
|
||||||
|
|
||||||
// Wait for ready flag
|
// Wait for ready flag
|
||||||
|
@ -170,12 +181,23 @@ static u32 uw_ec_write_addr_direct(u8 addr_low, u8 addr_high, u8 data_low, u8 da
|
||||||
|
|
||||||
mutex_lock(&uniwill_ec_lock);
|
mutex_lock(&uniwill_ec_lock);
|
||||||
|
|
||||||
|
ec_read(UNIWILL_EC_REG_FLAGS, &flags);
|
||||||
|
if ((flags & (1 << UNIWILL_EC_BIT_BFLG)) > 0) {
|
||||||
|
output->dword = 0xfefefefe;
|
||||||
|
mutex_unlock(&uniwill_ec_lock);
|
||||||
|
return -EBUSY;
|
||||||
|
}
|
||||||
|
|
||||||
|
flags |= (1 << UNIWILL_EC_BIT_BFLG);
|
||||||
|
ec_write(UNIWILL_EC_REG_FLAGS, flags);
|
||||||
|
|
||||||
ec_write(UNIWILL_EC_REG_LDAT, addr_low);
|
ec_write(UNIWILL_EC_REG_LDAT, addr_low);
|
||||||
ec_write(UNIWILL_EC_REG_HDAT, addr_high);
|
ec_write(UNIWILL_EC_REG_HDAT, addr_high);
|
||||||
ec_write(UNIWILL_EC_REG_CMDL, data_low);
|
ec_write(UNIWILL_EC_REG_CMDL, data_low);
|
||||||
ec_write(UNIWILL_EC_REG_CMDH, data_high);
|
ec_write(UNIWILL_EC_REG_CMDH, data_high);
|
||||||
|
|
||||||
flags = (0 << UNIWILL_EC_BIT_DRDY) | (1 << UNIWILL_EC_BIT_WFLG);
|
flags &= ~(1 << UNIWILL_EC_BIT_DRDY);
|
||||||
|
flags |= (1 << UNIWILL_EC_BIT_WFLG);
|
||||||
ec_write(UNIWILL_EC_REG_FLAGS, flags);
|
ec_write(UNIWILL_EC_REG_FLAGS, flags);
|
||||||
|
|
||||||
// Wait for ready flag
|
// Wait for ready flag
|
||||||
|
|
Loading…
Reference in a new issue