| | 1030 | /* Disable specific features based on DMI strings */ |
| | 1031 | board_vendor = dmi_get_system_info(DMI_BOARD_VENDOR); |
| | 1032 | board_name = dmi_get_system_info(DMI_BOARD_NAME); |
| | 1033 | if (board_vendor && board_name) { |
| | 1034 | if (strcmp(board_vendor, "nVIDIA") == 0 |
| | 1035 | && strcmp(board_name, "FN68PT") == 0) { |
| | 1036 | /* On the Shuttle SN68PT, FAN_CTL2 is apparently not |
| | 1037 | connected to a fan, but to something else. One user |
| | 1038 | has reported instant system power-off when changing |
| | 1039 | the PWM2 duty cycle, so we disable it. |
| | 1040 | I use the board name string as the trigger in case |
| | 1041 | the same board is ever used in other systems. */ |
| | 1042 | pr_info("it87: Disabling pwm2 due to " |
| | 1043 | "hardware constraints\n"); |
| | 1044 | sio_data->skip_pwm = (1 << 1); |
| | 1045 | } |
| | 1046 | } |
| | 1047 | |
| 1171 | | if ((err = device_create_file(dev, |
| 1172 | | &sensor_dev_attr_pwm1_enable.dev_attr)) |
| 1173 | | || (err = device_create_file(dev, |
| 1174 | | &sensor_dev_attr_pwm2_enable.dev_attr)) |
| 1175 | | || (err = device_create_file(dev, |
| 1176 | | &sensor_dev_attr_pwm3_enable.dev_attr)) |
| 1177 | | || (err = device_create_file(dev, |
| 1178 | | &sensor_dev_attr_pwm1.dev_attr)) |
| 1179 | | || (err = device_create_file(dev, |
| 1180 | | &sensor_dev_attr_pwm2.dev_attr)) |
| 1181 | | || (err = device_create_file(dev, |
| 1182 | | &sensor_dev_attr_pwm3.dev_attr)) |
| 1183 | | || (err = device_create_file(dev, |
| 1184 | | &dev_attr_pwm1_freq)) |
| 1185 | | || (err = device_create_file(dev, |
| 1186 | | &dev_attr_pwm2_freq)) |
| 1187 | | || (err = device_create_file(dev, |
| 1188 | | &dev_attr_pwm3_freq))) |
| 1189 | | goto ERROR4; |
| | 1194 | if (!(sio_data->skip_pwm & (1 << 0))) { |
| | 1195 | if ((err = device_create_file(dev, |
| | 1196 | &sensor_dev_attr_pwm1_enable.dev_attr)) |
| | 1197 | || (err = device_create_file(dev, |
| | 1198 | &sensor_dev_attr_pwm1.dev_attr)) |
| | 1199 | || (err = device_create_file(dev, |
| | 1200 | &dev_attr_pwm1_freq))) |
| | 1201 | goto ERROR4; |
| | 1202 | } |
| | 1203 | if (!(sio_data->skip_pwm & (1 << 1))) { |
| | 1204 | if ((err = device_create_file(dev, |
| | 1205 | &sensor_dev_attr_pwm2_enable.dev_attr)) |
| | 1206 | || (err = device_create_file(dev, |
| | 1207 | &sensor_dev_attr_pwm2.dev_attr)) |
| | 1208 | || (err = device_create_file(dev, |
| | 1209 | &dev_attr_pwm2_freq))) |
| | 1210 | goto ERROR4; |
| | 1211 | } |
| | 1212 | if (!(sio_data->skip_pwm & (1 << 2))) { |
| | 1213 | if ((err = device_create_file(dev, |
| | 1214 | &sensor_dev_attr_pwm3_enable.dev_attr)) |
| | 1215 | || (err = device_create_file(dev, |
| | 1216 | &sensor_dev_attr_pwm3.dev_attr)) |
| | 1217 | || (err = device_create_file(dev, |
| | 1218 | &dev_attr_pwm3_freq))) |
| | 1219 | goto ERROR4; |
| | 1220 | } |