Subversion Repositories Kolibri OS

Rev

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");