Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 44965
b: refs/heads/master
c: c52f0aa
h: refs/heads/master
i:
  44963: c1edd2e
v: v3
  • Loading branch information
Henrique de Moraes Holschuh authored and Len Brown committed Dec 7, 2006
1 parent b9780c1 commit c32953b
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3ef8a6096ca98d45a54999a97c7c8e14977d2e3e
refs/heads/master: c52f0aa574246f133a0bc2041e9468a06d34da7b
78 changes: 66 additions & 12 deletions trunk/drivers/acpi/ibm_acpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -1738,36 +1738,90 @@ static int fan_init(void)
return 0;
}

static int fan_read(char *p)
static int fan_get_status(u8 *status)
{
int len = 0;
u8 lo, hi, status;
u8 s;

switch (fan_status_access_mode) {
case IBMACPI_FAN_RD_ACPI_GFAN:
/* 570, 600e/x, 770e, 770x */
if (unlikely(!acpi_evalf(gfan_handle, &status, NULL, "d")))

if (unlikely(!acpi_evalf(gfan_handle, &s, NULL, "d")))
return -EIO;

len += sprintf(p + len, "level:\t\t%d\n", status);
if (likely(status))
*status = s & 0x07;

break;

case IBMACPI_FAN_RD_TPEC:
/* all except 570, 600e/x, 770e, 770x */
if (unlikely(!acpi_ec_read(fan_status_offset, &status)))
if (unlikely(!acpi_ec_read(fan_status_offset, &s)))
return -EIO;
else
len += sprintf(p + len, "status:\t\t%s\n",
enabled(status, 7));

if (likely(status))
*status = s;

break;

default:
return -ENXIO;
}

return 0;
}

static int fan_get_speed(unsigned int *speed)
{
u8 hi, lo;

switch (fan_status_access_mode) {
case IBMACPI_FAN_RD_TPEC:
/* all except 570, 600e/x, 770e, 770x */
if (unlikely(!acpi_ec_read(fan_rpm_offset, &lo) ||
!acpi_ec_read(fan_rpm_offset + 1, &hi)))
return -EIO;
else
len += sprintf(p + len, "speed:\t\t%d\n",
(hi << 8) + lo);

if (likely(speed))
*speed = (hi << 8) | lo;

break;

default:
return -ENXIO;
}

return 0;
}

static int fan_read(char *p)
{
int len = 0;
int rc;
u8 status;
unsigned int speed = 0;

switch (fan_status_access_mode) {
case IBMACPI_FAN_RD_ACPI_GFAN:
/* 570, 600e/x, 770e, 770x */
if ((rc = fan_get_status(&status)) < 0)
return rc;

len += sprintf(p + len, "level:\t\t%d\n", status);

break;

case IBMACPI_FAN_RD_TPEC:
/* all except 570, 600e/x, 770e, 770x */
if ((rc = fan_get_status(&status)) < 0)
return rc;

len += sprintf(p + len, "status:\t\t%s\n", enabled(status, 7));

if ((rc = fan_get_speed(&speed)) < 0)
return rc;

len += sprintf(p + len, "speed:\t\t%d\n", speed);
break;

case IBMACPI_FAN_NONE:
Expand Down

0 comments on commit c32953b

Please sign in to comment.