Files
asus-fan-control-ec/src/healthy.c
T

46 lines
887 B
C

#define _GNU_SOURCE
#include "healthy.h"
#include "common.h"
#include "util.h"
int hy_version(hy_t *h, uint8_t *out)
{
uint8_t payload[1] = { 0x50 };
return ec_xact(h->ec, CMD_VERSION, payload, 1, true, out);
}
int hy_read(hy_t *h, uint8_t reg, uint8_t *out)
{
uint8_t payload[3] = { TBL_READ, reg, 0x00 };
return ec_xact(h->ec, CMD_TABLE, payload, 3, true, out);
}
int hy_write(hy_t *h, uint8_t reg, uint8_t value)
{
uint8_t payload[3] = { TBL_WRITE, reg, value };
if (ec_xact(h->ec, CMD_TABLE, payload, 3, false, NULL))
return -1;
nsleep(h->gap);
return 0;
}
int hy_select(hy_t *h, int index)
{
return hy_write(h, REG_FAN_INDEX, (uint8_t)index);
}
int hy_rpm(hy_t *h, int *out)
{
uint8_t hi, lo;
if (hy_read(h, REG_RPM_HI, &hi) || hy_read(h, REG_RPM_LO, &lo))
return -1;
*out = (hi << 8) | lo;
return 0;
}