Hi Simon, arno@xxxxxxxxxxxx (Arnaud Ebalard) writes: > Regarding your problem, I first started by booting current version of my > driver on the Duo v2 w/o touching chip registers (only clock reference > value). This way, I inherit the values installed by (NETGEAR's) u-boot: > > $ for k in fan* pwm* ; do echo -n "$k:" ; echo `cat $k `; done > fan1_alarm:0 > fan1_div:2 > fan1_fault:0 > fan1_input:1807 > fan1_target:1807 > pwm1:221 > pwm1_enable:2 /* closed-loop, i.e. config is done via set_cnt */ > pwm1_mode:1 /* PWM mode */ > > If G762 datasheet is correct, NETGEAR's u-boot alters fan divisor ('01' > i.e. 2 instead of '00' i.e. 1). It also changes the default mode from > linear to pwm and sets set_cnt to 34 (255-221). > > Then, I grabbed the GPL sources (5.3.7) of NETGEAR's u-boot and found > the following in a boot function: > > /* Turn G76x(FAN controller, i2c address 0x3e) on. > * The FAN_SET_CNT register's offset is 0x0. > * Set [1300(rpm) == 65% == 5a(FAN_SET_CNT)] as default. > */ > unsigned char byte=0x5a; > if(i2c_write(0, 0x3e, 0x0, 1, &byte, 1) != 0) > puts ("Error writing the i2c chip : G76x(Fan controller).\n"); > > AFAICT, this is the only location in the whole source tarball where 0x3e > reg is modified in an i2c function. > > > Then, I grabbed the u-boot source code from NETGEAR for ReadyNAS 102 > (Armada-370 based NAS, also using a G762) and it has the following: > > /* Turn G76x(FAN controller, i2c address 0x3e) on. > * The FAN_SET_CNT register's offset is 0x0. > * Set [1300(rpm) == 65% == 5a(FAN_SET_CNT)] as default. > */ > MV_U8 byte=0x5a; > if(i2c_write(0x3e, 0x0, 1, &byte, 1) != 0) > puts ("Error writing the i2c chip : G76x(Fan controller).\n"); > /* Tune the FAN_STARTV */ > if (i2c_read(0x3e, 0x5, 1, &byte, 1) != 0) > puts ("Error reading the i2c chip : G76x(Fan controller).\n"); > byte |= 0x3; > if(i2c_write(0x3e, 0x5, 1, &byte, 1) != 0) > puts ("Error writing the i2c chip : G76x(Fan controller).\n"); > > In the end, it does not seem NETGEAR's u-boot does some specific things > except setting a non-zero value to SET_CNT register for the fan to start > rotating. > > BTW, if you wonder why some attributes reported at the beginning have > different values than the ones in the datasheet (0x5a set in u-boot, > reading 0x22) although NETGEAR's u-boot code does not seem to tamper > those, I don't have the answer. I was not happy with previous result and did some additional tests. Between each tests, I did a full power off (halt and removal of power cable) of the device instead of a simple reboot. With a power off, I get the following: fan1_alarm:0 fan1_div:1 fan1_fault:0 fan1_input:1365 fan1_target:1365 pwm1:0 pwm1_enable:2 pwm1_mode:0 Note that fan1_target reflects the fact that set_cnt is 165 (i.e. 255 - 0x5a), which is exactly what NETGEAR's u-boot sets for this reg. Now, if I do a simple restart, there is some hysteresis which explains the weird difference in my first test. Another message follows w/ additional answers to your problem. Cheers, a+ -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html