Windfarm plateform module for PowerMac12,1
Subsystems (2)
PATCH 1/1 Windfarm plateform module for PowerMac12,1
Hi everyone,
Finally, i had time, skills and help from Benjamin Herrenschmidt to implement the Windfarm plateform module for PowerMac12,1 named windfarm-pm121. This plateform is used in iMac G5 iSight models (17" and 20").
I review the patch a couple of time, especially the hex values which are copied from Darwin code. The patch passes thru checkpatch.pl with one error :) :
Missing Signed-off-by: line(s)
Here is the patch :
arch/powerpc/configs/g5_defconfig +1 -0
@@ -656,6 +656,7 @@ CONFIG_WINDFARM=y CONFIG_WINDFARM_PM81=y CONFIG_WINDFARM_PM91=y CONFIG_WINDFARM_PM112=y +CONFIG_WINDFARM_PM121=y # CONFIG_PMAC_RACKMETER is not set CONFIG_NETDEVICES=y # CONFIG_NETDEVICES_MULTIQUEUE is not set
drivers/macintosh/Kconfig +8 -0
@@ -234,6 +234,14 @@ config WINDFARM_PM112 which are the recent dual and quad G5 machines using the 970MP dual-core processor. +config WINDFARM_PM121 + tristate "Support for thermal management on PowerMac12,1" + depends on WINDFARM && I2C && PMAC_SMU + select I2C_POWERMAC + help + This driver provides thermal control for the PowerMac12,1 + which is the iMac G5 (iSight) 970MP + config ANSLCD tristate "Support for ANS LCD display" depends on ADB_CUDA && PPC_PMAC
drivers/macintosh/Makefile +5 -0
@@ -42,4 +42,9 @@ obj-$(CONFIG_WINDFARM_PM112) += windfarm_pm112.o windfarm_smu_sat.o \ windfarm_smu_sensors.o \ windfarm_max6690_sensor.o \ windfarm_lm75_sensor.o windfarm_pid.o +obj-$(CONFIG_WINDFARM_PM121) += windfarm_pm121.o windfarm_smu_sat.o \ + windfarm_smu_controls.o \ + windfarm_smu_sensors.o \ + windfarm_max6690_sensor.o \ + windfarm_lm75_sensor.o windfarm_pid.o obj-$(CONFIG_PMAC_RACKMETER) += rack-meter.o
drivers/macintosh/windfarm_lm75_sensor.c +6 -0
@@ -127,6 +127,12 @@ static struct wf_lm75_sensor *wf_lm75_create(struct i2c_adapter *adapter,*/ if (!strcmp (loc,"Hard drive" ) || !strcmp (loc,"DRIVE BAY" )) lm->sens.name ="hd-temp" ; +else if (!strcmp (loc,"Incoming Air Temp" )) + lm->sens.name ="incoming-air-temp" ; +else if (!strcmp (loc,"ODD Temp" )) + lm->sens.name ="optical-drive-temp" ; +else if (!strcmp (loc,"HD Temp" )) + lm->sens.name ="hard-drive-temp" ;else goto fail;
drivers/macintosh/windfarm_max6690_sensor.c +13 -5
@@ -77,10 +77,11 @@ static struct wf_sensor_ops wf_max6690_ops = { .owner = THIS_MODULE, }; -static void wf_max6690_create (struct i2c_adapter *adapter,u8 addr) +static void wf_max6690_create (struct i2c_adapter *adapter,u8 addr, +const char *loc) {struct wf_6690_sensor *max; -char *name ="backside-temp" ; +char *name =NULL ; max =kzalloc (sizeof (struct wf_6690_sensor ),GFP_KERNEL );if (max ==NULL ) {
@@ -89,6 +90,15 @@ static void wf_max6690_create(struct i2c_adapter *adapter, u8 addr)return ; } +if (!strcmp (loc,"BACKSIDE" )) + name ="backside-temp" ; +else if (!strcmp (loc,"NB Ambient" )) + name ="north-bridge-temp" ; +else if (!strcmp (loc,"GPU Ambient" )) + name ="gpu-temp" ; +else + goto fail; + max->sens.ops = &wf_max6690_ops; max->sens.name = name; max->i2c.addr = addr >>1 ;
@@ -138,9 +148,7 @@ static int wf_max6690_attach(struct i2c_adapter *adapter)if (loc ==NULL || addr ==0 )continue ;printk ("found max6690, loc=%s addr=0x%02x\n" , loc, addr); -if (strcmp (loc,"BACKSIDE" )) -continue ; -wf_max6690_create (adapter, addr); +wf_max6690_create (adapter, addr, loc); }return 0 ;
drivers/macintosh/windfarm_pm121.c new file +1052 -0
1,052 lines not on this page · raw message
drivers/macintosh/windfarm_smu_controls.c +4 -0
@@ -218,6 +218,10 @@ static struct smu_fan_control *smu_fan_create(struct device_node *node, fct->ctrl.name ="cpu-fan" ; else if (!strcmp(l, "Hard Drive") || !strcmp(l, "Hard drive")) fct->ctrl.name ="drive-bay-fan" ; + else if (!strcmp(l, "HDD Fan")) /* seen on iMac G5 iSight */ + fct->ctrl.name ="hard-drive-fan" ; + else if (!strcmp(l, "ODD Fan")) /* same */ + fct->ctrl.name ="optical-drive-fan" ;/* Unrecognized fan, bail out */ if (fct->ctrl.name ==NULL )
Thank you,
Étienne.
Signature · 1 line
E Ultreïa !
Sorry for my noobness, i though i wasn't allowed to sign my own patches /o\
So …
Signed-off-by Étienne Bersac <[email protected]>
If you want a re-submission, please tell me so.
Regards,
Étienne.
Signature · 1 line
E Ultreïa !