Skip to content

Commit

Permalink
drm/nouveau/therm: reduce stack usage of nouveau_therm_ic_ctor
Browse files Browse the repository at this point in the history
Before: 1496 bytes
After:   152 bytes

Signed-off-by: Marcin Slusarz <[email protected]>
Signed-off-by: Ben Skeggs <[email protected]>
  • Loading branch information
mslusarz authored and Ben Skeggs committed Feb 20, 2013
1 parent 07df304 commit ec49b5c
Showing 1 changed file with 27 additions and 25 deletions.
52 changes: 27 additions & 25 deletions drivers/gpu/drm/nouveau/core/subdev/therm/ic.c
Original file line number Diff line number Diff line change
Expand Up @@ -53,36 +53,38 @@ probe_monitoring_device(struct nouveau_i2c_port *i2c,
return true;
}

static struct i2c_board_info
nv_board_infos[] = {
{ I2C_BOARD_INFO("w83l785ts", 0x2d) },
{ I2C_BOARD_INFO("w83781d", 0x2d) },
{ I2C_BOARD_INFO("adt7473", 0x2e) },
{ I2C_BOARD_INFO("adt7473", 0x2d) },
{ I2C_BOARD_INFO("adt7473", 0x2c) },
{ I2C_BOARD_INFO("f75375", 0x2e) },
{ I2C_BOARD_INFO("lm99", 0x4c) },
{ I2C_BOARD_INFO("lm90", 0x4c) },
{ I2C_BOARD_INFO("lm90", 0x4d) },
{ I2C_BOARD_INFO("adm1021", 0x18) },
{ I2C_BOARD_INFO("adm1021", 0x19) },
{ I2C_BOARD_INFO("adm1021", 0x1a) },
{ I2C_BOARD_INFO("adm1021", 0x29) },
{ I2C_BOARD_INFO("adm1021", 0x2a) },
{ I2C_BOARD_INFO("adm1021", 0x2b) },
{ I2C_BOARD_INFO("adm1021", 0x4c) },
{ I2C_BOARD_INFO("adm1021", 0x4d) },
{ I2C_BOARD_INFO("adm1021", 0x4e) },
{ I2C_BOARD_INFO("lm63", 0x18) },
{ I2C_BOARD_INFO("lm63", 0x4e) },
{ }
};

void
nouveau_therm_ic_ctor(struct nouveau_therm *therm)
{
struct nouveau_therm_priv *priv = (void *)therm;
struct nouveau_bios *bios = nouveau_bios(therm);
struct nouveau_i2c *i2c = nouveau_i2c(therm);
struct nvbios_extdev_func extdev_entry;
struct i2c_board_info info[] = {
{ I2C_BOARD_INFO("w83l785ts", 0x2d) },
{ I2C_BOARD_INFO("w83781d", 0x2d) },
{ I2C_BOARD_INFO("adt7473", 0x2e) },
{ I2C_BOARD_INFO("adt7473", 0x2d) },
{ I2C_BOARD_INFO("adt7473", 0x2c) },
{ I2C_BOARD_INFO("f75375", 0x2e) },
{ I2C_BOARD_INFO("lm99", 0x4c) },
{ I2C_BOARD_INFO("lm90", 0x4c) },
{ I2C_BOARD_INFO("lm90", 0x4d) },
{ I2C_BOARD_INFO("adm1021", 0x18) },
{ I2C_BOARD_INFO("adm1021", 0x19) },
{ I2C_BOARD_INFO("adm1021", 0x1a) },
{ I2C_BOARD_INFO("adm1021", 0x29) },
{ I2C_BOARD_INFO("adm1021", 0x2a) },
{ I2C_BOARD_INFO("adm1021", 0x2b) },
{ I2C_BOARD_INFO("adm1021", 0x4c) },
{ I2C_BOARD_INFO("adm1021", 0x4d) },
{ I2C_BOARD_INFO("adm1021", 0x4e) },
{ I2C_BOARD_INFO("lm63", 0x18) },
{ I2C_BOARD_INFO("lm63", 0x4e) },
{ }
};

if (!nvbios_extdev_find(bios, NVBIOS_EXTDEV_LM89, &extdev_entry)) {
struct i2c_board_info board[] = {
Expand Down Expand Up @@ -111,6 +113,6 @@ nouveau_therm_ic_ctor(struct nouveau_therm *therm)
/* The vbios doesn't provide the address of an exisiting monitoring
device. Let's try our static list.
*/
i2c->identify(i2c, NV_I2C_DEFAULT(0), "monitoring device", info,
probe_monitoring_device);
i2c->identify(i2c, NV_I2C_DEFAULT(0), "monitoring device",
nv_board_infos, probe_monitoring_device);
}

0 comments on commit ec49b5c

Please sign in to comment.