On Thu, Feb 09, 2006 at 01:34:42PM -0800, Charles Spirakis wrote: > All -- > > Below is a patch to add w83791d support into the 2.6 kernel. This > patch was created off of the 2.6.15.3 base, but it should apply > cleanly on many earlier kernels (been tried on 2.6.14.3 and 2.6.15.1). > > I've tried this on the system I have available here and it appears to work. > > Thanks! > > -- charles > > > diff -urpN linux-2.6.15.3/Documentation/hwmon/w83791d > linux-2.6.15.3-w83791d/Documentation/hwmon/w83791d > --- linux-2.6.15.3/Documentation/hwmon/w83791d 1969-12-31 > 16:00:00.000000000 -0800 It looks like your email client wrapped the lines of the patch, and ate all of the tabs for breakfast and spit them back out as spaces :( Care to fix up your mailer problems and try again? > +static inline u8 DIV_TO_REG(long val) > +{ > + int i; > + val = SENSORS_LIMIT(val, 1, 128) >> 1; > + for (i = 0; i < 6; i++) { > + if (val == 0) > + break; > + val >>= 1; > + } > + return ((u8) i); return is not a function, and doesn't need the (). > +} > + > +struct w83791d_data { > + struct i2c_client client; > + struct class_device *class_dev; > + struct semaphore lock; Perhaps a mutex instead? > +static ssize_t > +store_fan_cruise(struct device *dev, struct device_attribute *attr, > + const char *buf, size_t count) > +{ > + struct sensor_device_attribute *sensor_attr = to_sensor_dev_attr(attr); > + int nr = sensor_attr->index - 1; > + struct i2c_client *client = to_i2c_client(dev); > + struct w83791d_data *data = i2c_get_clientdata(client); > + u32 val; > + u8 target_mask; > + > + val = simple_strtoul(buf, NULL, 10); > + down(&data->update_lock); > + if (W83791D_FAN_SPEED_CRUISE == data->pwmenable[nr]) { > + data->fan_cruise[nr] = SENSORS_LIMIT(val, 0, 255); > + w83791d_write_value(client, W83791D_REG_TTARG[nr], > + data->fan_cruise[nr]); > + } > + else { Put the else on the same line as the }, so it would look like: } else { thanks, greg k-h