Rev 5128 | Rev 6104 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5128 | Rev 5271 | ||
---|---|---|---|
Line 194... | Line 194... | ||
194 | ((u8 *)gpio + sizeof(ATOM_GPIO_I2C_ASSIGMENT)); |
194 | ((u8 *)gpio + sizeof(ATOM_GPIO_I2C_ASSIGMENT)); |
195 | } |
195 | } |
196 | } |
196 | } |
197 | } |
197 | } |
Line 198... | Line 198... | ||
198 | 198 | ||
199 | static struct radeon_gpio_rec radeon_lookup_gpio(struct radeon_device *rdev, |
199 | struct radeon_gpio_rec radeon_atombios_lookup_gpio(struct radeon_device *rdev, |
200 | u8 id) |
200 | u8 id) |
201 | { |
201 | { |
202 | struct atom_context *ctx = rdev->mode_info.atom_context; |
202 | struct atom_context *ctx = rdev->mode_info.atom_context; |
203 | struct radeon_gpio_rec gpio; |
203 | struct radeon_gpio_rec gpio; |
Line 219... | Line 219... | ||
219 | pin = gpio_info->asGPIO_Pin; |
219 | pin = gpio_info->asGPIO_Pin; |
220 | for (i = 0; i < num_indices; i++) { |
220 | for (i = 0; i < num_indices; i++) { |
221 | if (id == pin->ucGPIO_ID) { |
221 | if (id == pin->ucGPIO_ID) { |
222 | gpio.id = pin->ucGPIO_ID; |
222 | gpio.id = pin->ucGPIO_ID; |
223 | gpio.reg = le16_to_cpu(pin->usGpioPin_AIndex) * 4; |
223 | gpio.reg = le16_to_cpu(pin->usGpioPin_AIndex) * 4; |
- | 224 | gpio.shift = pin->ucGpioPinBitShift; |
|
224 | gpio.mask = (1 << pin->ucGpioPinBitShift); |
225 | gpio.mask = (1 << pin->ucGpioPinBitShift); |
225 | gpio.valid = true; |
226 | gpio.valid = true; |
226 | break; |
227 | break; |
227 | } |
228 | } |
228 | pin = (ATOM_GPIO_PIN_ASSIGNMENT *) |
229 | pin = (ATOM_GPIO_PIN_ASSIGNMENT *) |
Line 456... | Line 457... | ||
456 | } |
457 | } |
Line 457... | Line 458... | ||
457 | 458 | ||
458 | return true; |
459 | return true; |
Line 459... | Line 460... | ||
459 | } |
460 | } |
460 | 461 | ||
461 | const int supported_devices_connector_convert[] = { |
462 | static const int supported_devices_connector_convert[] = { |
462 | DRM_MODE_CONNECTOR_Unknown, |
463 | DRM_MODE_CONNECTOR_Unknown, |
463 | DRM_MODE_CONNECTOR_VGA, |
464 | DRM_MODE_CONNECTOR_VGA, |
464 | DRM_MODE_CONNECTOR_DVII, |
465 | DRM_MODE_CONNECTOR_DVII, |
Line 475... | Line 476... | ||
475 | DRM_MODE_CONNECTOR_Unknown, |
476 | DRM_MODE_CONNECTOR_Unknown, |
476 | DRM_MODE_CONNECTOR_9PinDIN, |
477 | DRM_MODE_CONNECTOR_9PinDIN, |
477 | DRM_MODE_CONNECTOR_DisplayPort |
478 | DRM_MODE_CONNECTOR_DisplayPort |
478 | }; |
479 | }; |
Line 479... | Line 480... | ||
479 | 480 | ||
480 | const uint16_t supported_devices_connector_object_id_convert[] = { |
481 | static const uint16_t supported_devices_connector_object_id_convert[] = { |
481 | CONNECTOR_OBJECT_ID_NONE, |
482 | CONNECTOR_OBJECT_ID_NONE, |
482 | CONNECTOR_OBJECT_ID_VGA, |
483 | CONNECTOR_OBJECT_ID_VGA, |
483 | CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I, /* not all boards support DL */ |
484 | CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_I, /* not all boards support DL */ |
484 | CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D, /* not all boards support DL */ |
485 | CONNECTOR_OBJECT_ID_DUAL_LINK_DVI_D, /* not all boards support DL */ |
Line 492... | Line 493... | ||
492 | CONNECTOR_OBJECT_ID_HDMI_TYPE_A, |
493 | CONNECTOR_OBJECT_ID_HDMI_TYPE_A, |
493 | CONNECTOR_OBJECT_ID_HDMI_TYPE_B, |
494 | CONNECTOR_OBJECT_ID_HDMI_TYPE_B, |
494 | CONNECTOR_OBJECT_ID_SVIDEO |
495 | CONNECTOR_OBJECT_ID_SVIDEO |
495 | }; |
496 | }; |
Line 496... | Line 497... | ||
496 | 497 | ||
497 | const int object_connector_convert[] = { |
498 | static const int object_connector_convert[] = { |
498 | DRM_MODE_CONNECTOR_Unknown, |
499 | DRM_MODE_CONNECTOR_Unknown, |
499 | DRM_MODE_CONNECTOR_DVII, |
500 | DRM_MODE_CONNECTOR_DVII, |
500 | DRM_MODE_CONNECTOR_DVII, |
501 | DRM_MODE_CONNECTOR_DVII, |
501 | DRM_MODE_CONNECTOR_DVID, |
502 | DRM_MODE_CONNECTOR_DVID, |
Line 799... | Line 800... | ||
799 | break; |
800 | break; |
800 | case ATOM_HPD_INT_RECORD_TYPE: |
801 | case ATOM_HPD_INT_RECORD_TYPE: |
801 | hpd_record = |
802 | hpd_record = |
802 | (ATOM_HPD_INT_RECORD *) |
803 | (ATOM_HPD_INT_RECORD *) |
803 | record; |
804 | record; |
804 | gpio = radeon_lookup_gpio(rdev, |
805 | gpio = radeon_atombios_lookup_gpio(rdev, |
805 | hpd_record->ucHPDIntGPIOID); |
806 | hpd_record->ucHPDIntGPIOID); |
806 | hpd = radeon_atom_get_hpd_info_from_gpio(rdev, &gpio); |
807 | hpd = radeon_atom_get_hpd_info_from_gpio(rdev, &gpio); |
807 | hpd.plugged_state = hpd_record->ucPlugged_PinState; |
808 | hpd.plugged_state = hpd_record->ucPlugged_PinState; |
808 | break; |
809 | break; |
809 | } |
810 | } |
Line 2126... | Line 2127... | ||
2126 | if ((misc & ATOM_PM_MISCINFO_VOLTAGE_DROP_SUPPORT) || |
2127 | if ((misc & ATOM_PM_MISCINFO_VOLTAGE_DROP_SUPPORT) || |
2127 | (misc & ATOM_PM_MISCINFO_VOLTAGE_DROP_ACTIVE_HIGH)) { |
2128 | (misc & ATOM_PM_MISCINFO_VOLTAGE_DROP_ACTIVE_HIGH)) { |
2128 | rdev->pm.power_state[state_index].clock_info[0].voltage.type = |
2129 | rdev->pm.power_state[state_index].clock_info[0].voltage.type = |
2129 | VOLTAGE_GPIO; |
2130 | VOLTAGE_GPIO; |
2130 | rdev->pm.power_state[state_index].clock_info[0].voltage.gpio = |
2131 | rdev->pm.power_state[state_index].clock_info[0].voltage.gpio = |
2131 | radeon_lookup_gpio(rdev, |
2132 | radeon_atombios_lookup_gpio(rdev, |
2132 | power_info->info.asPowerPlayInfo[i].ucVoltageDropIndex); |
2133 | power_info->info.asPowerPlayInfo[i].ucVoltageDropIndex); |
2133 | if (misc & ATOM_PM_MISCINFO_VOLTAGE_DROP_ACTIVE_HIGH) |
2134 | if (misc & ATOM_PM_MISCINFO_VOLTAGE_DROP_ACTIVE_HIGH) |
2134 | rdev->pm.power_state[state_index].clock_info[0].voltage.active_high = |
2135 | rdev->pm.power_state[state_index].clock_info[0].voltage.active_high = |
2135 | true; |
2136 | true; |
2136 | else |
2137 | else |
Line 2162... | Line 2163... | ||
2162 | if ((misc & ATOM_PM_MISCINFO_VOLTAGE_DROP_SUPPORT) || |
2163 | if ((misc & ATOM_PM_MISCINFO_VOLTAGE_DROP_SUPPORT) || |
2163 | (misc & ATOM_PM_MISCINFO_VOLTAGE_DROP_ACTIVE_HIGH)) { |
2164 | (misc & ATOM_PM_MISCINFO_VOLTAGE_DROP_ACTIVE_HIGH)) { |
2164 | rdev->pm.power_state[state_index].clock_info[0].voltage.type = |
2165 | rdev->pm.power_state[state_index].clock_info[0].voltage.type = |
2165 | VOLTAGE_GPIO; |
2166 | VOLTAGE_GPIO; |
2166 | rdev->pm.power_state[state_index].clock_info[0].voltage.gpio = |
2167 | rdev->pm.power_state[state_index].clock_info[0].voltage.gpio = |
2167 | radeon_lookup_gpio(rdev, |
2168 | radeon_atombios_lookup_gpio(rdev, |
2168 | power_info->info_2.asPowerPlayInfo[i].ucVoltageDropIndex); |
2169 | power_info->info_2.asPowerPlayInfo[i].ucVoltageDropIndex); |
2169 | if (misc & ATOM_PM_MISCINFO_VOLTAGE_DROP_ACTIVE_HIGH) |
2170 | if (misc & ATOM_PM_MISCINFO_VOLTAGE_DROP_ACTIVE_HIGH) |
2170 | rdev->pm.power_state[state_index].clock_info[0].voltage.active_high = |
2171 | rdev->pm.power_state[state_index].clock_info[0].voltage.active_high = |
2171 | true; |
2172 | true; |
2172 | else |
2173 | else |
Line 2198... | Line 2199... | ||
2198 | if ((misc & ATOM_PM_MISCINFO_VOLTAGE_DROP_SUPPORT) || |
2199 | if ((misc & ATOM_PM_MISCINFO_VOLTAGE_DROP_SUPPORT) || |
2199 | (misc & ATOM_PM_MISCINFO_VOLTAGE_DROP_ACTIVE_HIGH)) { |
2200 | (misc & ATOM_PM_MISCINFO_VOLTAGE_DROP_ACTIVE_HIGH)) { |
2200 | rdev->pm.power_state[state_index].clock_info[0].voltage.type = |
2201 | rdev->pm.power_state[state_index].clock_info[0].voltage.type = |
2201 | VOLTAGE_GPIO; |
2202 | VOLTAGE_GPIO; |
2202 | rdev->pm.power_state[state_index].clock_info[0].voltage.gpio = |
2203 | rdev->pm.power_state[state_index].clock_info[0].voltage.gpio = |
2203 | radeon_lookup_gpio(rdev, |
2204 | radeon_atombios_lookup_gpio(rdev, |
2204 | power_info->info_3.asPowerPlayInfo[i].ucVoltageDropIndex); |
2205 | power_info->info_3.asPowerPlayInfo[i].ucVoltageDropIndex); |
2205 | if (misc & ATOM_PM_MISCINFO_VOLTAGE_DROP_ACTIVE_HIGH) |
2206 | if (misc & ATOM_PM_MISCINFO_VOLTAGE_DROP_ACTIVE_HIGH) |
2206 | rdev->pm.power_state[state_index].clock_info[0].voltage.active_high = |
2207 | rdev->pm.power_state[state_index].clock_info[0].voltage.active_high = |
2207 | true; |
2208 | true; |
2208 | else |
2209 | else |
Line 2246... | Line 2247... | ||
2246 | { |
2247 | { |
2247 | struct radeon_i2c_bus_rec i2c_bus; |
2248 | struct radeon_i2c_bus_rec i2c_bus; |
Line 2248... | Line 2249... | ||
2248 | 2249 | ||
2249 | /* add the i2c bus for thermal/fan chip */ |
2250 | /* add the i2c bus for thermal/fan chip */ |
- | 2251 | if (controller->ucType > 0) { |
|
- | 2252 | if (controller->ucFanParameters & ATOM_PP_FANPARAMETERS_NOFAN) |
|
- | 2253 | rdev->pm.no_fan = true; |
|
- | 2254 | rdev->pm.fan_pulses_per_revolution = |
|
- | 2255 | controller->ucFanParameters & ATOM_PP_FANPARAMETERS_TACHOMETER_PULSES_PER_REVOLUTION_MASK; |
|
- | 2256 | if (rdev->pm.fan_pulses_per_revolution) { |
|
- | 2257 | rdev->pm.fan_min_rpm = controller->ucFanMinRPM; |
|
- | 2258 | rdev->pm.fan_max_rpm = controller->ucFanMaxRPM; |
|
2250 | if (controller->ucType > 0) { |
2259 | } |
2251 | if (controller->ucType == ATOM_PP_THERMALCONTROLLER_RV6xx) { |
2260 | if (controller->ucType == ATOM_PP_THERMALCONTROLLER_RV6xx) { |
2252 | DRM_INFO("Internal thermal controller %s fan control\n", |
2261 | DRM_INFO("Internal thermal controller %s fan control\n", |
2253 | (controller->ucFanParameters & |
2262 | (controller->ucFanParameters & |
2254 | ATOM_PP_FANPARAMETERS_NOFAN) ? "without" : "with"); |
2263 | ATOM_PP_FANPARAMETERS_NOFAN) ? "without" : "with"); |