
wmadm Version 1.0
--------------------------------------------------------------
Authors...: Cedric Pradalier (cedric.pradalier@free.fr)
		

Description
--------------------------------------------------------------
 This package contains the compiled adm103x kernel modules for 2.6.7-powerpc

 If you have compiled your own kernel, you will most likely need to build
 your own adm103x-modules. 

 This driver provides some thermostat monitoring for ibook2, equipped
 with a adm1030 or adm1031 fan control chip. It also provides a sysfs
 access to the adm103x fan control parameters. For instance
 * #cat /sys/device/temperature/info? 
 * T:51C S:56C R:10C  <-- sensor 0
 * T:48C S:76C R:10C  <-- sensor 1
 * #echo "56 10" > /sys/device/temperature/info0 
 make the fan starts at 56 degrees and accelerate progressively till max
 at 66 degrees (56 + 10), on the sensor 0.

 Reading /sys/device/temperatures/minpwm0 shows the minimum speed of the fan.
 Writing an integer value between 0 and 100 set this value. Low speed make
 lower noise, but high speed lower temperature faster... Default is 33%.
 * #echo "45" > /sys/device/temperature/minpwm0

 You can also access the driver with ioctl commands. You need to include 
 /usr/include/linux/therm_adm103x.h in sources. Then, nearly all commands
 expect a struct IOC_Adm103x argument. 
 
 typedef struct _IOC_Adm103x_ {
	 unsigned char id;        /* sensor or fan id        */
	 unsigned char mintemp;   /* fan starting temp  (deg)*/
	 unsigned char rangetemp; /* fan speeding range (deg)*/
	 unsigned char minpwm;    /* min fan speed  (percent)*/
	 signed long int millitemp; /* current temp  (millideg)*/
	 unsigned char hysteresis;/* current histeresis (deg)*/
	 unsigned char reg;       /* accessed register       */
	 unsigned char value;     /* value get/set into reg  */
 } IOC_Adm103x;
 
 Nine commands are available :

 ADM103X_IOC_GETTEMP                
 Argument : struct IOC_Adm103x * arg.
 Action   : put temperature in milli-degrees in arg->millitemp
 
 ADM103X_IOC_GETLIMITS              
 Argument : struct IOC_Adm103x * arg.
 Action   : read fan starting temperature and fan speeding range and 
            write them in arg->mintemp and arg->rangetemp.
			arg->id is used to select which sensor is concerned.

 ADM103X_IOC_SETLIMITS              
 Argument : struct IOC_Adm103x * arg.
 Action   : set fan starting temperature and fan speeding range 
            from arg->mintemp and arg->rangetemp.
			arg->id is used to select which sensor is concerned.

 ADM103X_IOC_GETMINPWM              
 Argument : struct IOC_Adm103x * arg.
 Action   : read fan minimal speed and write it in arg->minpwm
			arg->id is used to select which fan is concerned.

 ADM103X_IOC_SETMINPWM              
 Argument : struct IOC_Adm103x * arg.
 Action   : set fan minimal speed and from arg->minpwm
			arg->id is used to select which fan is concerned.

 ADM103X_IOC_CHECK_IF_FAN_IS_NEEDED 
 Argument : None
 Action   : Compare current temperature to current limits minus hysteresis 
            and switch the fan off is needed. 

 ADM103X_IOC_SETHYSTERESIS          
 Argument : struct IOC_Adm103x * arg.
 Action   : Set hysteresis for the ADM103X_IOC_CHECK_IF_FAN_IS_NEEDED
            command. Default value is 2 degrees.

 ADM103X_IOC_GETHYSTERESIS          
 Argument : struct IOC_Adm103x * arg.
 Action   : Get hysteresis for the ADM103X_IOC_CHECK_IF_FAN_IS_NEEDED
            command. Value is written in arg->hysteresis. arg->id is used 
			to select which sensor is concerned.

 ADM103X_IOC_GETREGISTER             
 Argument : struct IOC_Adm103x * arg.
 Action   : Read a chip register. Register is selected with arg->reg and 
            written in arg->value.

Copyright
--------------------------------------------------------------
From my point of view this is freeware - I don't know what
others think but...
Read the COPYING file for the complete GNU license.


