Lines Matching +full:hdmi +full:- +full:ct +full:- +full:hpd

2  * Copyright 2007-8 Advanced Micro Devices, Inc.
36 #include "atom-bits.h"
52 if ((rdev->family == CHIP_R420) || in radeon_lookup_i2c_gpio_quirks()
53 (rdev->family == CHIP_R423) || in radeon_lookup_i2c_gpio_quirks()
54 (rdev->family == CHIP_RV410)) { in radeon_lookup_i2c_gpio_quirks()
55 if ((le16_to_cpu(gpio->usClkMaskRegisterIndex) == 0x0018) || in radeon_lookup_i2c_gpio_quirks()
56 (le16_to_cpu(gpio->usClkMaskRegisterIndex) == 0x0019) || in radeon_lookup_i2c_gpio_quirks()
57 (le16_to_cpu(gpio->usClkMaskRegisterIndex) == 0x001a)) { in radeon_lookup_i2c_gpio_quirks()
58 gpio->ucClkMaskShift = 0x19; in radeon_lookup_i2c_gpio_quirks()
59 gpio->ucDataMaskShift = 0x18; in radeon_lookup_i2c_gpio_quirks()
66 (le16_to_cpu(gpio->usClkMaskRegisterIndex) == 0x1936) && in radeon_lookup_i2c_gpio_quirks()
67 (gpio->sucI2cId.ucAccess == 0)) { in radeon_lookup_i2c_gpio_quirks()
68 gpio->sucI2cId.ucAccess = 0x97; in radeon_lookup_i2c_gpio_quirks()
69 gpio->ucDataMaskShift = 8; in radeon_lookup_i2c_gpio_quirks()
70 gpio->ucDataEnShift = 8; in radeon_lookup_i2c_gpio_quirks()
71 gpio->ucDataY_Shift = 8; in radeon_lookup_i2c_gpio_quirks()
72 gpio->ucDataA_Shift = 8; in radeon_lookup_i2c_gpio_quirks()
79 (le16_to_cpu(gpio->usClkMaskRegisterIndex) == 0x1fda) && in radeon_lookup_i2c_gpio_quirks()
80 (gpio->sucI2cId.ucAccess == 0x94)) in radeon_lookup_i2c_gpio_quirks()
81 gpio->sucI2cId.ucAccess = 0x14; in radeon_lookup_i2c_gpio_quirks()
91 i2c.mask_clk_reg = le16_to_cpu(gpio->usClkMaskRegisterIndex) * 4; in radeon_get_bus_rec_for_i2c_gpio()
92 i2c.mask_data_reg = le16_to_cpu(gpio->usDataMaskRegisterIndex) * 4; in radeon_get_bus_rec_for_i2c_gpio()
93 i2c.en_clk_reg = le16_to_cpu(gpio->usClkEnRegisterIndex) * 4; in radeon_get_bus_rec_for_i2c_gpio()
94 i2c.en_data_reg = le16_to_cpu(gpio->usDataEnRegisterIndex) * 4; in radeon_get_bus_rec_for_i2c_gpio()
95 i2c.y_clk_reg = le16_to_cpu(gpio->usClkY_RegisterIndex) * 4; in radeon_get_bus_rec_for_i2c_gpio()
96 i2c.y_data_reg = le16_to_cpu(gpio->usDataY_RegisterIndex) * 4; in radeon_get_bus_rec_for_i2c_gpio()
97 i2c.a_clk_reg = le16_to_cpu(gpio->usClkA_RegisterIndex) * 4; in radeon_get_bus_rec_for_i2c_gpio()
98 i2c.a_data_reg = le16_to_cpu(gpio->usDataA_RegisterIndex) * 4; in radeon_get_bus_rec_for_i2c_gpio()
99 i2c.mask_clk_mask = (1 << gpio->ucClkMaskShift); in radeon_get_bus_rec_for_i2c_gpio()
100 i2c.mask_data_mask = (1 << gpio->ucDataMaskShift); in radeon_get_bus_rec_for_i2c_gpio()
101 i2c.en_clk_mask = (1 << gpio->ucClkEnShift); in radeon_get_bus_rec_for_i2c_gpio()
102 i2c.en_data_mask = (1 << gpio->ucDataEnShift); in radeon_get_bus_rec_for_i2c_gpio()
103 i2c.y_clk_mask = (1 << gpio->ucClkY_Shift); in radeon_get_bus_rec_for_i2c_gpio()
104 i2c.y_data_mask = (1 << gpio->ucDataY_Shift); in radeon_get_bus_rec_for_i2c_gpio()
105 i2c.a_clk_mask = (1 << gpio->ucClkA_Shift); in radeon_get_bus_rec_for_i2c_gpio()
106 i2c.a_data_mask = (1 << gpio->ucDataA_Shift); in radeon_get_bus_rec_for_i2c_gpio()
108 if (gpio->sucI2cId.sbfAccess.bfHW_Capable) in radeon_get_bus_rec_for_i2c_gpio()
113 if (gpio->sucI2cId.ucAccess == 0xa0) in radeon_get_bus_rec_for_i2c_gpio()
118 i2c.i2c_id = gpio->sucI2cId.ucAccess; in radeon_get_bus_rec_for_i2c_gpio()
131 struct atom_context *ctx = rdev->mode_info.atom_context; in radeon_lookup_i2c_gpio()
143 i2c_info = (struct _ATOM_GPIO_I2C_INFO *)(ctx->bios + data_offset); in radeon_lookup_i2c_gpio()
145 num_indices = (size - sizeof(ATOM_COMMON_TABLE_HEADER)) / in radeon_lookup_i2c_gpio()
148 gpio = &i2c_info->asGPIO_Info[0]; in radeon_lookup_i2c_gpio()
153 if (gpio->sucI2cId.ucAccess == id) { in radeon_lookup_i2c_gpio()
167 struct atom_context *ctx = rdev->mode_info.atom_context; in radeon_atombios_i2c_init()
177 i2c_info = (struct _ATOM_GPIO_I2C_INFO *)(ctx->bios + data_offset); in radeon_atombios_i2c_init()
179 num_indices = (size - sizeof(ATOM_COMMON_TABLE_HEADER)) / in radeon_atombios_i2c_init()
182 gpio = &i2c_info->asGPIO_Info[0]; in radeon_atombios_i2c_init()
190 rdev->i2c_bus[i] = radeon_i2c_create(rdev->ddev, &i2c, stmp); in radeon_atombios_i2c_init()
201 struct atom_context *ctx = rdev->mode_info.atom_context; in radeon_atombios_lookup_gpio()
213 gpio_info = (struct _ATOM_GPIO_PIN_LUT *)(ctx->bios + data_offset); in radeon_atombios_lookup_gpio()
215 num_indices = (size - sizeof(ATOM_COMMON_TABLE_HEADER)) / in radeon_atombios_lookup_gpio()
218 pin = gpio_info->asGPIO_Pin; in radeon_atombios_lookup_gpio()
220 if (id == pin->ucGPIO_ID) { in radeon_atombios_lookup_gpio()
221 gpio.id = pin->ucGPIO_ID; in radeon_atombios_lookup_gpio()
222 gpio.reg = le16_to_cpu(pin->usGpioPin_AIndex) * 4; in radeon_atombios_lookup_gpio()
223 gpio.shift = pin->ucGpioPinBitShift; in radeon_atombios_lookup_gpio()
224 gpio.mask = (1 << pin->ucGpioPinBitShift); in radeon_atombios_lookup_gpio()
239 struct radeon_hpd hpd; in radeon_atom_get_hpd_info_from_gpio() local
242 memset(&hpd, 0, sizeof(struct radeon_hpd)); in radeon_atom_get_hpd_info_from_gpio()
251 hpd.gpio = *gpio; in radeon_atom_get_hpd_info_from_gpio()
252 if (gpio->reg == reg) { in radeon_atom_get_hpd_info_from_gpio()
253 switch(gpio->mask) { in radeon_atom_get_hpd_info_from_gpio()
255 hpd.hpd = RADEON_HPD_1; in radeon_atom_get_hpd_info_from_gpio()
258 hpd.hpd = RADEON_HPD_2; in radeon_atom_get_hpd_info_from_gpio()
261 hpd.hpd = RADEON_HPD_3; in radeon_atom_get_hpd_info_from_gpio()
264 hpd.hpd = RADEON_HPD_4; in radeon_atom_get_hpd_info_from_gpio()
267 hpd.hpd = RADEON_HPD_5; in radeon_atom_get_hpd_info_from_gpio()
270 hpd.hpd = RADEON_HPD_6; in radeon_atom_get_hpd_info_from_gpio()
273 hpd.hpd = RADEON_HPD_NONE; in radeon_atom_get_hpd_info_from_gpio()
277 hpd.hpd = RADEON_HPD_NONE; in radeon_atom_get_hpd_info_from_gpio()
278 return hpd; in radeon_atom_get_hpd_info_from_gpio()
286 struct radeon_hpd *hpd) in radeon_atom_apply_quirks() argument
288 struct pci_dev *pdev = to_pci_dev(dev->dev); in radeon_atom_apply_quirks()
290 /* Asus M2A-VM HDMI board lists the DVI port as HDMI */ in radeon_atom_apply_quirks()
291 if ((pdev->device == 0x791e) && in radeon_atom_apply_quirks()
292 (pdev->subsystem_vendor == 0x1043) && in radeon_atom_apply_quirks()
293 (pdev->subsystem_device == 0x826d)) { in radeon_atom_apply_quirks()
299 /* Asrock RS600 board lists the DVI port as HDMI */ in radeon_atom_apply_quirks()
300 if ((pdev->device == 0x7941) && in radeon_atom_apply_quirks()
301 (pdev->subsystem_vendor == 0x1849) && in radeon_atom_apply_quirks()
302 (pdev->subsystem_device == 0x7941)) { in radeon_atom_apply_quirks()
308 /* MSI K9A2GM V2/V3 board has no HDMI or DVI */ in radeon_atom_apply_quirks()
309 if ((pdev->device == 0x796e) && in radeon_atom_apply_quirks()
310 (pdev->subsystem_vendor == 0x1462) && in radeon_atom_apply_quirks()
311 (pdev->subsystem_device == 0x7302)) { in radeon_atom_apply_quirks()
317 /* a-bit f-i90hd - ciaranm on #radeonhd - this board has no DVI */ in radeon_atom_apply_quirks()
318 if ((pdev->device == 0x7941) && in radeon_atom_apply_quirks()
319 (pdev->subsystem_vendor == 0x147b) && in radeon_atom_apply_quirks()
320 (pdev->subsystem_device == 0x2412)) { in radeon_atom_apply_quirks()
326 if ((pdev->device == 0x5653) && in radeon_atom_apply_quirks()
327 (pdev->subsystem_vendor == 0x1462) && in radeon_atom_apply_quirks()
328 (pdev->subsystem_device == 0x0291)) { in radeon_atom_apply_quirks()
330 i2c_bus->valid = false; in radeon_atom_apply_quirks()
336 if ((pdev->device == 0x7146) && in radeon_atom_apply_quirks()
337 (pdev->subsystem_vendor == 0x17af) && in radeon_atom_apply_quirks()
338 (pdev->subsystem_device == 0x2058)) { in radeon_atom_apply_quirks()
344 if ((pdev->device == 0x7142) && in radeon_atom_apply_quirks()
345 (pdev->subsystem_vendor == 0x1458) && in radeon_atom_apply_quirks()
346 (pdev->subsystem_device == 0x2134)) { in radeon_atom_apply_quirks()
353 if ((pdev->device == 0x71C5) && in radeon_atom_apply_quirks()
354 (pdev->subsystem_vendor == 0x106b) && in radeon_atom_apply_quirks()
355 (pdev->subsystem_device == 0x0080)) { in radeon_atom_apply_quirks()
370 /* ASUS HD 3600 XT board lists the DVI port as HDMI */ in radeon_atom_apply_quirks()
371 if ((pdev->device == 0x9598) && in radeon_atom_apply_quirks()
372 (pdev->subsystem_vendor == 0x1043) && in radeon_atom_apply_quirks()
373 (pdev->subsystem_device == 0x01da)) { in radeon_atom_apply_quirks()
379 /* ASUS HD 3600 board lists the DVI port as HDMI */ in radeon_atom_apply_quirks()
380 if ((pdev->device == 0x9598) && in radeon_atom_apply_quirks()
381 (pdev->subsystem_vendor == 0x1043) && in radeon_atom_apply_quirks()
382 (pdev->subsystem_device == 0x01e4)) { in radeon_atom_apply_quirks()
388 /* ASUS HD 3450 board lists the DVI port as HDMI */ in radeon_atom_apply_quirks()
389 if ((pdev->device == 0x95C5) && in radeon_atom_apply_quirks()
390 (pdev->subsystem_vendor == 0x1043) && in radeon_atom_apply_quirks()
391 (pdev->subsystem_device == 0x01e2)) { in radeon_atom_apply_quirks()
397 /* some BIOSes seem to report DAC on HDMI - usually this is a board with in radeon_atom_apply_quirks()
398 * HDMI + VGA reporting as HDMI in radeon_atom_apply_quirks()
407 /* Acer laptop (Acer TravelMate 5730/5730G) has an HDMI port in radeon_atom_apply_quirks()
409 * both share the same encoder, hpd pin, and ddc line. in radeon_atom_apply_quirks()
416 if (((pdev->device == 0x95c4) || (pdev->device == 0x9591)) && in radeon_atom_apply_quirks()
417 (pdev->subsystem_vendor == 0x1025) && in radeon_atom_apply_quirks()
418 (pdev->subsystem_device == 0x013c)) { in radeon_atom_apply_quirks()
421 /* actually it's a DVI-D port not DVI-I */ in radeon_atom_apply_quirks()
430 if ((pdev->device == 0x9498) && in radeon_atom_apply_quirks()
431 (pdev->subsystem_vendor == 0x1682) && in radeon_atom_apply_quirks()
432 (pdev->subsystem_device == 0x2452) && in radeon_atom_apply_quirks()
433 (i2c_bus->valid == false) && in radeon_atom_apply_quirks()
435 struct radeon_device *rdev = dev->dev_private; in radeon_atom_apply_quirks()
439 /* Fujitsu D3003-S2 board lists DVI-I as DVI-D and VGA */ in radeon_atom_apply_quirks()
440 if (((pdev->device == 0x9802) || in radeon_atom_apply_quirks()
441 (pdev->device == 0x9805) || in radeon_atom_apply_quirks()
442 (pdev->device == 0x9806)) && in radeon_atom_apply_quirks()
443 (pdev->subsystem_vendor == 0x1734) && in radeon_atom_apply_quirks()
444 (pdev->subsystem_device == 0x11bd)) { in radeon_atom_apply_quirks()
480 CONNECTOR_OBJECT_ID_VGA, /* technically DVI-A */
519 struct radeon_device *rdev = dev->dev_private; in radeon_get_atom_connector_info_from_object_table()
520 struct radeon_mode_info *mode_info = &rdev->mode_info; in radeon_get_atom_connector_info_from_object_table()
521 struct atom_context *ctx = mode_info->atom_context; in radeon_get_atom_connector_info_from_object_table()
536 struct radeon_hpd hpd; in radeon_get_atom_connector_info_from_object_table() local
544 obj_header = (ATOM_OBJECT_HEADER *) (ctx->bios + data_offset); in radeon_get_atom_connector_info_from_object_table()
546 (ctx->bios + data_offset + in radeon_get_atom_connector_info_from_object_table()
547 le16_to_cpu(obj_header->usDisplayPathTableOffset)); in radeon_get_atom_connector_info_from_object_table()
549 (ctx->bios + data_offset + in radeon_get_atom_connector_info_from_object_table()
550 le16_to_cpu(obj_header->usConnectorObjectTableOffset)); in radeon_get_atom_connector_info_from_object_table()
552 (ctx->bios + data_offset + in radeon_get_atom_connector_info_from_object_table()
553 le16_to_cpu(obj_header->usEncoderObjectTableOffset)); in radeon_get_atom_connector_info_from_object_table()
555 (ctx->bios + data_offset + in radeon_get_atom_connector_info_from_object_table()
556 le16_to_cpu(obj_header->usRouterObjectTableOffset)); in radeon_get_atom_connector_info_from_object_table()
557 device_support = le16_to_cpu(obj_header->usDeviceSupport); in radeon_get_atom_connector_info_from_object_table()
560 for (i = 0; i < path_obj->ucNumOfDispPath; i++) { in radeon_get_atom_connector_info_from_object_table()
561 uint8_t *addr = (uint8_t *) path_obj->asDispPath; in radeon_get_atom_connector_info_from_object_table()
565 path_size += le16_to_cpu(path->usSize); in radeon_get_atom_connector_info_from_object_table()
567 if (device_support & le16_to_cpu(path->usDeviceTag)) { in radeon_get_atom_connector_info_from_object_table()
571 (le16_to_cpu(path->usConnObjectId) & OBJECT_ID_MASK) in radeon_get_atom_connector_info_from_object_table()
574 (le16_to_cpu(path->usConnObjectId) & ENUM_ID_MASK) in radeon_get_atom_connector_info_from_object_table()
578 if (le16_to_cpu(path->usDeviceTag) == in radeon_get_atom_connector_info_from_object_table()
583 if ((rdev->flags & RADEON_IS_IGP) && in radeon_get_atom_connector_info_from_object_table()
599 *) (ctx->bios + igp_offset); in radeon_get_atom_connector_info_from_object_table()
602 uint32_t slot_config, ct; in radeon_get_atom_connector_info_from_object_table() local
606 igp_obj-> in radeon_get_atom_connector_info_from_object_table()
610 igp_obj-> in radeon_get_atom_connector_info_from_object_table()
613 ct = (slot_config >> 16) & 0xff; in radeon_get_atom_connector_info_from_object_table()
616 [ct]; in radeon_get_atom_connector_info_from_object_table()
617 connector_object_id = ct; in radeon_get_atom_connector_info_from_object_table()
642 for (j = 0; j < ((le16_to_cpu(path->usSize) - 8) / 2); j++) { in radeon_get_atom_connector_info_from_object_table()
644 (le16_to_cpu(path->usGraphicObjIds[j]) & in radeon_get_atom_connector_info_from_object_table()
648 for (k = 0; k < enc_obj->ucNumberOfObjects; k++) { in radeon_get_atom_connector_info_from_object_table()
649 u16 encoder_obj = le16_to_cpu(enc_obj->asObjects[k].usObjectID); in radeon_get_atom_connector_info_from_object_table()
650 if (le16_to_cpu(path->usGraphicObjIds[j]) == encoder_obj) { in radeon_get_atom_connector_info_from_object_table()
652 (ctx->bios + data_offset + in radeon_get_atom_connector_info_from_object_table()
653 le16_to_cpu(enc_obj->asObjects[k].usRecordOffset)); in radeon_get_atom_connector_info_from_object_table()
657 while (record->ucRecordSize > 0 && in radeon_get_atom_connector_info_from_object_table()
658 record->ucRecordType > 0 && in radeon_get_atom_connector_info_from_object_table()
659 record->ucRecordType <= ATOM_MAX_OBJECT_RECORD_NUMBER) { in radeon_get_atom_connector_info_from_object_table()
660 switch (record->ucRecordType) { in radeon_get_atom_connector_info_from_object_table()
664 caps = le16_to_cpu(cap_record->usEncoderCap); in radeon_get_atom_connector_info_from_object_table()
668 ((char *)record + record->ucRecordSize); in radeon_get_atom_connector_info_from_object_table()
673 (path-> in radeon_get_atom_connector_info_from_object_table()
679 for (k = 0; k < router_obj->ucNumberOfObjects; k++) { in radeon_get_atom_connector_info_from_object_table()
680 u16 router_obj_id = le16_to_cpu(router_obj->asObjects[k].usObjectID); in radeon_get_atom_connector_info_from_object_table()
681 if (le16_to_cpu(path->usGraphicObjIds[j]) == router_obj_id) { in radeon_get_atom_connector_info_from_object_table()
683 (ctx->bios + data_offset + in radeon_get_atom_connector_info_from_object_table()
684 le16_to_cpu(router_obj->asObjects[k].usRecordOffset)); in radeon_get_atom_connector_info_from_object_table()
691 (ctx->bios + data_offset + in radeon_get_atom_connector_info_from_object_table()
692 le16_to_cpu(router_obj->asObjects[k].usSrcDstTableOffset)); in radeon_get_atom_connector_info_from_object_table()
695 (router_src_dst_table->ucNumberOfSrc * 2)); in radeon_get_atom_connector_info_from_object_table()
701 if (le16_to_cpu(path->usConnObjectId) == in radeon_get_atom_connector_info_from_object_table()
706 while (record->ucRecordSize > 0 && in radeon_get_atom_connector_info_from_object_table()
707 record->ucRecordType > 0 && in radeon_get_atom_connector_info_from_object_table()
708 record->ucRecordType <= ATOM_MAX_OBJECT_RECORD_NUMBER) { in radeon_get_atom_connector_info_from_object_table()
709 switch (record->ucRecordType) { in radeon_get_atom_connector_info_from_object_table()
716 &i2c_record->sucI2cId; in radeon_get_atom_connector_info_from_object_table()
719 i2c_config-> in radeon_get_atom_connector_info_from_object_table()
721 router.i2c_addr = i2c_record->ucI2CAddr >> 1; in radeon_get_atom_connector_info_from_object_table()
727 router.ddc_mux_type = ddc_path->ucMuxType; in radeon_get_atom_connector_info_from_object_table()
728 router.ddc_mux_control_pin = ddc_path->ucMuxControlPin; in radeon_get_atom_connector_info_from_object_table()
729 router.ddc_mux_state = ddc_path->ucMuxState[enum_id]; in radeon_get_atom_connector_info_from_object_table()
735 router.cd_mux_type = cd_path->ucMuxType; in radeon_get_atom_connector_info_from_object_table()
736 router.cd_mux_control_pin = cd_path->ucMuxControlPin; in radeon_get_atom_connector_info_from_object_table()
737 router.cd_mux_state = cd_path->ucMuxState[enum_id]; in radeon_get_atom_connector_info_from_object_table()
741 ((char *)record + record->ucRecordSize); in radeon_get_atom_connector_info_from_object_table()
748 /* look up gpio for ddc, hpd */ in radeon_get_atom_connector_info_from_object_table()
750 hpd.hpd = RADEON_HPD_NONE; in radeon_get_atom_connector_info_from_object_table()
751 if ((le16_to_cpu(path->usDeviceTag) & in radeon_get_atom_connector_info_from_object_table()
753 for (j = 0; j < con_obj->ucNumberOfObjects; j++) { in radeon_get_atom_connector_info_from_object_table()
754 if (le16_to_cpu(path->usConnObjectId) == in radeon_get_atom_connector_info_from_object_table()
755 le16_to_cpu(con_obj->asObjects[j]. in radeon_get_atom_connector_info_from_object_table()
761 (ctx->bios + data_offset + in radeon_get_atom_connector_info_from_object_table()
762 le16_to_cpu(con_obj-> in radeon_get_atom_connector_info_from_object_table()
769 while (record->ucRecordSize > 0 && in radeon_get_atom_connector_info_from_object_table()
770 record->ucRecordType > 0 && in radeon_get_atom_connector_info_from_object_table()
771 record->ucRecordType <= ATOM_MAX_OBJECT_RECORD_NUMBER) { in radeon_get_atom_connector_info_from_object_table()
772 switch (record->ucRecordType) { in radeon_get_atom_connector_info_from_object_table()
779 &i2c_record->sucI2cId; in radeon_get_atom_connector_info_from_object_table()
781 i2c_config-> in radeon_get_atom_connector_info_from_object_table()
789 hpd_record->ucHPDIntGPIOID); in radeon_get_atom_connector_info_from_object_table()
790 hpd = radeon_atom_get_hpd_info_from_gpio(rdev, &gpio); in radeon_get_atom_connector_info_from_object_table()
791 hpd.plugged_state = hpd_record->ucPlugged_PinState; in radeon_get_atom_connector_info_from_object_table()
798 record-> in radeon_get_atom_connector_info_from_object_table()
807 ddc_bus.hpd = hpd.hpd; in radeon_get_atom_connector_info_from_object_table()
809 conn_id = le16_to_cpu(path->usConnObjectId); in radeon_get_atom_connector_info_from_object_table()
812 (dev, le16_to_cpu(path->usDeviceTag), &connector_type, in radeon_get_atom_connector_info_from_object_table()
813 &ddc_bus, &conn_id, &hpd)) in radeon_get_atom_connector_info_from_object_table()
818 le16_to_cpu(path-> in radeon_get_atom_connector_info_from_object_table()
823 &hpd, in radeon_get_atom_connector_info_from_object_table()
837 struct radeon_device *rdev = dev->dev_private; in atombios_get_connector_object_id()
839 if (rdev->flags & RADEON_IS_IGP) { in atombios_get_connector_object_id()
845 struct radeon_mode_info *mode_info = &rdev->mode_info; in atombios_get_connector_object_id()
846 struct atom_context *ctx = mode_info->atom_context; in atombios_get_connector_object_id()
853 xtmds = (ATOM_XTMDS_INFO *)(ctx->bios + data_offset); in atombios_get_connector_object_id()
855 if (xtmds->ucSupportedLink & ATOM_XTMDS_SUPPORTED_DUALLINK) { in atombios_get_connector_object_id()
881 struct radeon_hpd hpd; member
888 struct radeon_device *rdev = dev->dev_private; in radeon_get_atom_connector_info_from_supported_devices_table()
889 struct radeon_mode_info *mode_info = &rdev->mode_info; in radeon_get_atom_connector_info_from_supported_devices_table()
890 struct atom_context *ctx = mode_info->atom_context; in radeon_get_atom_connector_info_from_supported_devices_table()
916 (union atom_supported_devices *)(ctx->bios + data_offset); in radeon_get_atom_connector_info_from_supported_devices_table()
918 device_support = le16_to_cpu(supported_devices->info.usDeviceSupport); in radeon_get_atom_connector_info_from_supported_devices_table()
927 supported_devices->info.asConnInfo[i]; in radeon_get_atom_connector_info_from_supported_devices_table()
970 u8 isb = supported_devices->info_2d1.asIntSrcInfo[i].ucIntSrcBitmap; in radeon_get_atom_connector_info_from_supported_devices_table()
973 bios_connectors[i].hpd.hpd = RADEON_HPD_1; in radeon_get_atom_connector_info_from_supported_devices_table()
976 bios_connectors[i].hpd.hpd = RADEON_HPD_2; in radeon_get_atom_connector_info_from_supported_devices_table()
979 bios_connectors[i].hpd.hpd = RADEON_HPD_NONE; in radeon_get_atom_connector_info_from_supported_devices_table()
984 bios_connectors[i].hpd.hpd = RADEON_HPD_1; in radeon_get_atom_connector_info_from_supported_devices_table()
986 bios_connectors[i].hpd.hpd = RADEON_HPD_2; in radeon_get_atom_connector_info_from_supported_devices_table()
988 bios_connectors[i].hpd.hpd = RADEON_HPD_NONE; in radeon_get_atom_connector_info_from_supported_devices_table()
1002 &bios_connectors[i].hpd)) in radeon_get_atom_connector_info_from_supported_devices_table()
1041 /* combine analog and digital for DVI-I */ in radeon_get_atom_connector_info_from_supported_devices_table()
1051 bios_connectors[i].hpd = in radeon_get_atom_connector_info_from_supported_devices_table()
1052 bios_connectors[j].hpd; in radeon_get_atom_connector_info_from_supported_devices_table()
1076 &bios_connectors[i].hpd, in radeon_get_atom_connector_info_from_supported_devices_table()
1106 struct radeon_mode_info *mode_info = &rdev->mode_info; in radeon_atombios_get_dentist_vco_freq()
1112 if (atom_parse_data_header(mode_info->atom_context, index, NULL, in radeon_atombios_get_dentist_vco_freq()
1114 igp_info = (union igp_info *)(mode_info->atom_context->bios + in radeon_atombios_get_dentist_vco_freq()
1116 rdev->clock.vco_freq = in radeon_atombios_get_dentist_vco_freq()
1117 le32_to_cpu(igp_info->info_6.ulDentistVCOFreq); in radeon_atombios_get_dentist_vco_freq()
1123 struct radeon_device *rdev = dev->dev_private; in radeon_atom_get_clock_info()
1124 struct radeon_mode_info *mode_info = &rdev->mode_info; in radeon_atom_get_clock_info()
1128 struct radeon_pll *p1pll = &rdev->clock.p1pll; in radeon_atom_get_clock_info()
1129 struct radeon_pll *p2pll = &rdev->clock.p2pll; in radeon_atom_get_clock_info()
1130 struct radeon_pll *dcpll = &rdev->clock.dcpll; in radeon_atom_get_clock_info()
1131 struct radeon_pll *spll = &rdev->clock.spll; in radeon_atom_get_clock_info()
1132 struct radeon_pll *mpll = &rdev->clock.mpll; in radeon_atom_get_clock_info()
1135 if (atom_parse_data_header(mode_info->atom_context, index, NULL, in radeon_atom_get_clock_info()
1138 (union firmware_info *)(mode_info->atom_context->bios + in radeon_atom_get_clock_info()
1141 p1pll->reference_freq = in radeon_atom_get_clock_info()
1142 le16_to_cpu(firmware_info->info.usReferenceClock); in radeon_atom_get_clock_info()
1143 p1pll->reference_div = 0; in radeon_atom_get_clock_info()
1146 p1pll->pll_out_min = in radeon_atom_get_clock_info()
1147 le16_to_cpu(firmware_info->info.usMinPixelClockPLL_Output); in radeon_atom_get_clock_info()
1149 p1pll->pll_out_min = in radeon_atom_get_clock_info()
1150 le32_to_cpu(firmware_info->info_12.ulMinPixelClockPLL_Output); in radeon_atom_get_clock_info()
1151 p1pll->pll_out_max = in radeon_atom_get_clock_info()
1152 le32_to_cpu(firmware_info->info.ulMaxPixelClockPLL_Output); in radeon_atom_get_clock_info()
1155 p1pll->lcd_pll_out_min = in radeon_atom_get_clock_info()
1156 le16_to_cpu(firmware_info->info_14.usLcdMinPixelClockPLL_Output) * 100; in radeon_atom_get_clock_info()
1157 if (p1pll->lcd_pll_out_min == 0) in radeon_atom_get_clock_info()
1158 p1pll->lcd_pll_out_min = p1pll->pll_out_min; in radeon_atom_get_clock_info()
1159 p1pll->lcd_pll_out_max = in radeon_atom_get_clock_info()
1160 le16_to_cpu(firmware_info->info_14.usLcdMaxPixelClockPLL_Output) * 100; in radeon_atom_get_clock_info()
1161 if (p1pll->lcd_pll_out_max == 0) in radeon_atom_get_clock_info()
1162 p1pll->lcd_pll_out_max = p1pll->pll_out_max; in radeon_atom_get_clock_info()
1164 p1pll->lcd_pll_out_min = p1pll->pll_out_min; in radeon_atom_get_clock_info()
1165 p1pll->lcd_pll_out_max = p1pll->pll_out_max; in radeon_atom_get_clock_info()
1168 if (p1pll->pll_out_min == 0) { in radeon_atom_get_clock_info()
1170 p1pll->pll_out_min = 64800; in radeon_atom_get_clock_info()
1172 p1pll->pll_out_min = 20000; in radeon_atom_get_clock_info()
1175 p1pll->pll_in_min = in radeon_atom_get_clock_info()
1176 le16_to_cpu(firmware_info->info.usMinPixelClockPLL_Input); in radeon_atom_get_clock_info()
1177 p1pll->pll_in_max = in radeon_atom_get_clock_info()
1178 le16_to_cpu(firmware_info->info.usMaxPixelClockPLL_Input); in radeon_atom_get_clock_info()
1184 spll->reference_freq = in radeon_atom_get_clock_info()
1185 le16_to_cpu(firmware_info->info_21.usCoreReferenceClock); in radeon_atom_get_clock_info()
1187 spll->reference_freq = in radeon_atom_get_clock_info()
1188 le16_to_cpu(firmware_info->info.usReferenceClock); in radeon_atom_get_clock_info()
1189 spll->reference_div = 0; in radeon_atom_get_clock_info()
1191 spll->pll_out_min = in radeon_atom_get_clock_info()
1192 le16_to_cpu(firmware_info->info.usMinEngineClockPLL_Output); in radeon_atom_get_clock_info()
1193 spll->pll_out_max = in radeon_atom_get_clock_info()
1194 le32_to_cpu(firmware_info->info.ulMaxEngineClockPLL_Output); in radeon_atom_get_clock_info()
1197 if (spll->pll_out_min == 0) { in radeon_atom_get_clock_info()
1199 spll->pll_out_min = 64800; in radeon_atom_get_clock_info()
1201 spll->pll_out_min = 20000; in radeon_atom_get_clock_info()
1204 spll->pll_in_min = in radeon_atom_get_clock_info()
1205 le16_to_cpu(firmware_info->info.usMinEngineClockPLL_Input); in radeon_atom_get_clock_info()
1206 spll->pll_in_max = in radeon_atom_get_clock_info()
1207 le16_to_cpu(firmware_info->info.usMaxEngineClockPLL_Input); in radeon_atom_get_clock_info()
1211 mpll->reference_freq = in radeon_atom_get_clock_info()
1212 le16_to_cpu(firmware_info->info_21.usMemoryReferenceClock); in radeon_atom_get_clock_info()
1214 mpll->reference_freq = in radeon_atom_get_clock_info()
1215 le16_to_cpu(firmware_info->info.usReferenceClock); in radeon_atom_get_clock_info()
1216 mpll->reference_div = 0; in radeon_atom_get_clock_info()
1218 mpll->pll_out_min = in radeon_atom_get_clock_info()
1219 le16_to_cpu(firmware_info->info.usMinMemoryClockPLL_Output); in radeon_atom_get_clock_info()
1220 mpll->pll_out_max = in radeon_atom_get_clock_info()
1221 le32_to_cpu(firmware_info->info.ulMaxMemoryClockPLL_Output); in radeon_atom_get_clock_info()
1224 if (mpll->pll_out_min == 0) { in radeon_atom_get_clock_info()
1226 mpll->pll_out_min = 64800; in radeon_atom_get_clock_info()
1228 mpll->pll_out_min = 20000; in radeon_atom_get_clock_info()
1231 mpll->pll_in_min = in radeon_atom_get_clock_info()
1232 le16_to_cpu(firmware_info->info.usMinMemoryClockPLL_Input); in radeon_atom_get_clock_info()
1233 mpll->pll_in_max = in radeon_atom_get_clock_info()
1234 le16_to_cpu(firmware_info->info.usMaxMemoryClockPLL_Input); in radeon_atom_get_clock_info()
1236 rdev->clock.default_sclk = in radeon_atom_get_clock_info()
1237 le32_to_cpu(firmware_info->info.ulDefaultEngineClock); in radeon_atom_get_clock_info()
1238 rdev->clock.default_mclk = in radeon_atom_get_clock_info()
1239 le32_to_cpu(firmware_info->info.ulDefaultMemoryClock); in radeon_atom_get_clock_info()
1242 rdev->clock.default_dispclk = in radeon_atom_get_clock_info()
1243 le32_to_cpu(firmware_info->info_21.ulDefaultDispEngineClkFreq); in radeon_atom_get_clock_info()
1244 if (rdev->clock.default_dispclk == 0) { in radeon_atom_get_clock_info()
1246 rdev->clock.default_dispclk = 60000; /* 600 Mhz */ in radeon_atom_get_clock_info()
1248 rdev->clock.default_dispclk = 54000; /* 540 Mhz */ in radeon_atom_get_clock_info()
1250 rdev->clock.default_dispclk = 60000; /* 600 Mhz */ in radeon_atom_get_clock_info()
1253 if (ASIC_IS_DCE6(rdev) && (rdev->clock.default_dispclk < 53900)) { in radeon_atom_get_clock_info()
1255 rdev->clock.default_dispclk / 100); in radeon_atom_get_clock_info()
1256 rdev->clock.default_dispclk = 60000; in radeon_atom_get_clock_info()
1258 rdev->clock.dp_extclk = in radeon_atom_get_clock_info()
1259 le16_to_cpu(firmware_info->info_21.usUniphyDPModeExtClkFreq); in radeon_atom_get_clock_info()
1260 rdev->clock.current_dispclk = rdev->clock.default_dispclk; in radeon_atom_get_clock_info()
1264 rdev->clock.max_pixel_clock = le16_to_cpu(firmware_info->info.usMaxPixelClock); in radeon_atom_get_clock_info()
1265 if (rdev->clock.max_pixel_clock == 0) in radeon_atom_get_clock_info()
1266 rdev->clock.max_pixel_clock = 40000; in radeon_atom_get_clock_info()
1269 rdev->mode_info.firmware_flags = in radeon_atom_get_clock_info()
1270 le16_to_cpu(firmware_info->info.usFirmwareCapability.susAccess); in radeon_atom_get_clock_info()
1273 rdev->clock.vco_freq = in radeon_atom_get_clock_info()
1274 le32_to_cpu(firmware_info->info_22.ulGPUPLL_OutputFreq); in radeon_atom_get_clock_info()
1276 rdev->clock.vco_freq = rdev->clock.current_dispclk; in radeon_atom_get_clock_info()
1280 rdev->clock.vco_freq = rdev->clock.current_dispclk; in radeon_atom_get_clock_info()
1282 if (rdev->clock.vco_freq == 0) in radeon_atom_get_clock_info()
1283 rdev->clock.vco_freq = 360000; /* 3.6 GHz */ in radeon_atom_get_clock_info()
1293 struct radeon_mode_info *mode_info = &rdev->mode_info; in radeon_atombios_sideport_present()
1300 if (rdev->family == CHIP_RS600) in radeon_atombios_sideport_present()
1303 if (atom_parse_data_header(mode_info->atom_context, index, NULL, in radeon_atombios_sideport_present()
1305 igp_info = (union igp_info *)(mode_info->atom_context->bios + in radeon_atombios_sideport_present()
1309 if (le32_to_cpu(igp_info->info.ulBootUpMemoryClock)) in radeon_atombios_sideport_present()
1313 if (le32_to_cpu(igp_info->info_2.ulBootUpSidePortClock)) in radeon_atombios_sideport_present()
1327 struct drm_device *dev = encoder->base.dev; in radeon_atombios_get_tmds_info()
1328 struct radeon_device *rdev = dev->dev_private; in radeon_atombios_get_tmds_info()
1329 struct radeon_mode_info *mode_info = &rdev->mode_info; in radeon_atombios_get_tmds_info()
1337 if (atom_parse_data_header(mode_info->atom_context, index, NULL, in radeon_atombios_get_tmds_info()
1340 (struct _ATOM_TMDS_INFO *)(mode_info->atom_context->bios + in radeon_atombios_get_tmds_info()
1343 maxfreq = le16_to_cpu(tmds_info->usMaxFrequency); in radeon_atombios_get_tmds_info()
1345 tmds->tmds_pll[i].freq = in radeon_atombios_get_tmds_info()
1346 le16_to_cpu(tmds_info->asMiscInfo[i].usFrequency); in radeon_atombios_get_tmds_info()
1347 tmds->tmds_pll[i].value = in radeon_atombios_get_tmds_info()
1348 tmds_info->asMiscInfo[i].ucPLL_ChargePump & 0x3f; in radeon_atombios_get_tmds_info()
1349 tmds->tmds_pll[i].value |= in radeon_atombios_get_tmds_info()
1350 (tmds_info->asMiscInfo[i]. in radeon_atombios_get_tmds_info()
1352 tmds->tmds_pll[i].value |= in radeon_atombios_get_tmds_info()
1353 (tmds_info->asMiscInfo[i]. in radeon_atombios_get_tmds_info()
1355 tmds->tmds_pll[i].value |= in radeon_atombios_get_tmds_info()
1356 (tmds_info->asMiscInfo[i]. in radeon_atombios_get_tmds_info()
1360 tmds->tmds_pll[i].freq, in radeon_atombios_get_tmds_info()
1361 tmds->tmds_pll[i].value); in radeon_atombios_get_tmds_info()
1363 if (maxfreq == tmds->tmds_pll[i].freq) { in radeon_atombios_get_tmds_info()
1364 tmds->tmds_pll[i].freq = 0xffffffff; in radeon_atombios_get_tmds_info()
1377 struct radeon_mode_info *mode_info = &rdev->mode_info; in radeon_atombios_get_ppll_ss_info()
1386 if (atom_parse_data_header(mode_info->atom_context, index, &size, in radeon_atombios_get_ppll_ss_info()
1389 (struct _ATOM_SPREAD_SPECTRUM_INFO *)(mode_info->atom_context->bios + data_offset); in radeon_atombios_get_ppll_ss_info()
1391 num_indices = (size - sizeof(ATOM_COMMON_TABLE_HEADER)) / in radeon_atombios_get_ppll_ss_info()
1394 ((u8 *)&ss_info->asSS_Info[0]); in radeon_atombios_get_ppll_ss_info()
1396 if (ss_assign->ucSS_Id == id) { in radeon_atombios_get_ppll_ss_info()
1397 ss->percentage = in radeon_atombios_get_ppll_ss_info()
1398 le16_to_cpu(ss_assign->usSpreadSpectrumPercentage); in radeon_atombios_get_ppll_ss_info()
1399 ss->type = ss_assign->ucSpreadSpectrumType; in radeon_atombios_get_ppll_ss_info()
1400 ss->step = ss_assign->ucSS_Step; in radeon_atombios_get_ppll_ss_info()
1401 ss->delay = ss_assign->ucSS_Delay; in radeon_atombios_get_ppll_ss_info()
1402 ss->range = ss_assign->ucSS_Range; in radeon_atombios_get_ppll_ss_info()
1403 ss->refdiv = ss_assign->ucRecommendedRef_Div; in radeon_atombios_get_ppll_ss_info()
1417 struct radeon_mode_info *mode_info = &rdev->mode_info; in radeon_atombios_get_igp_ss_overrides()
1425 if (atom_parse_data_header(mode_info->atom_context, index, &size, in radeon_atombios_get_igp_ss_overrides()
1428 (mode_info->atom_context->bios + data_offset); in radeon_atombios_get_igp_ss_overrides()
1433 percentage = le16_to_cpu(igp_info->info_6.usDVISSPercentage); in radeon_atombios_get_igp_ss_overrides()
1434 rate = le16_to_cpu(igp_info->info_6.usDVISSpreadRateIn10Hz); in radeon_atombios_get_igp_ss_overrides()
1437 percentage = le16_to_cpu(igp_info->info_6.usHDMISSPercentage); in radeon_atombios_get_igp_ss_overrides()
1438 rate = le16_to_cpu(igp_info->info_6.usHDMISSpreadRateIn10Hz); in radeon_atombios_get_igp_ss_overrides()
1441 percentage = le16_to_cpu(igp_info->info_6.usLvdsSSPercentage); in radeon_atombios_get_igp_ss_overrides()
1442 rate = le16_to_cpu(igp_info->info_6.usLvdsSSpreadRateIn10Hz); in radeon_atombios_get_igp_ss_overrides()
1449 percentage = le16_to_cpu(igp_info->info_7.usDVISSPercentage); in radeon_atombios_get_igp_ss_overrides()
1450 rate = le16_to_cpu(igp_info->info_7.usDVISSpreadRateIn10Hz); in radeon_atombios_get_igp_ss_overrides()
1453 percentage = le16_to_cpu(igp_info->info_7.usHDMISSPercentage); in radeon_atombios_get_igp_ss_overrides()
1454 rate = le16_to_cpu(igp_info->info_7.usHDMISSpreadRateIn10Hz); in radeon_atombios_get_igp_ss_overrides()
1457 percentage = le16_to_cpu(igp_info->info_7.usLvdsSSPercentage); in radeon_atombios_get_igp_ss_overrides()
1458 rate = le16_to_cpu(igp_info->info_7.usLvdsSSpreadRateIn10Hz); in radeon_atombios_get_igp_ss_overrides()
1465 percentage = le16_to_cpu(igp_info->info_8.usDVISSPercentage); in radeon_atombios_get_igp_ss_overrides()
1466 rate = le16_to_cpu(igp_info->info_8.usDVISSpreadRateIn10Hz); in radeon_atombios_get_igp_ss_overrides()
1469 percentage = le16_to_cpu(igp_info->info_8.usHDMISSPercentage); in radeon_atombios_get_igp_ss_overrides()
1470 rate = le16_to_cpu(igp_info->info_8.usHDMISSpreadRateIn10Hz); in radeon_atombios_get_igp_ss_overrides()
1473 percentage = le16_to_cpu(igp_info->info_8.usLvdsSSPercentage); in radeon_atombios_get_igp_ss_overrides()
1474 rate = le16_to_cpu(igp_info->info_8.usLvdsSSpreadRateIn10Hz); in radeon_atombios_get_igp_ss_overrides()
1483 ss->percentage = percentage; in radeon_atombios_get_igp_ss_overrides()
1485 ss->rate = rate; in radeon_atombios_get_igp_ss_overrides()
1505 struct radeon_mode_info *mode_info = &rdev->mode_info; in radeon_atombios_get_asic_ss_info()
1514 if (!(rdev->mode_info.firmware_flags & ATOM_BIOS_INFO_MEMORY_CLOCK_SS_SUPPORT)) in radeon_atombios_get_asic_ss_info()
1518 if (!(rdev->mode_info.firmware_flags & ATOM_BIOS_INFO_ENGINE_CLOCK_SS_SUPPORT)) in radeon_atombios_get_asic_ss_info()
1523 if (atom_parse_data_header(mode_info->atom_context, index, &size, in radeon_atombios_get_asic_ss_info()
1527 (union asic_ss_info *)(mode_info->atom_context->bios + data_offset); in radeon_atombios_get_asic_ss_info()
1531 num_indices = (size - sizeof(ATOM_COMMON_TABLE_HEADER)) / in radeon_atombios_get_asic_ss_info()
1534 ss_assign = (union asic_ss_assignment *)((u8 *)&ss_info->info.asSpreadSpectrum[0]); in radeon_atombios_get_asic_ss_info()
1536 if ((ss_assign->v1.ucClockIndication == id) && in radeon_atombios_get_asic_ss_info()
1537 (clock <= le32_to_cpu(ss_assign->v1.ulTargetClockRange))) { in radeon_atombios_get_asic_ss_info()
1538 ss->percentage = in radeon_atombios_get_asic_ss_info()
1539 le16_to_cpu(ss_assign->v1.usSpreadSpectrumPercentage); in radeon_atombios_get_asic_ss_info()
1540 ss->type = ss_assign->v1.ucSpreadSpectrumMode; in radeon_atombios_get_asic_ss_info()
1541 ss->rate = le16_to_cpu(ss_assign->v1.usSpreadRateInKhz); in radeon_atombios_get_asic_ss_info()
1542 ss->percentage_divider = 100; in radeon_atombios_get_asic_ss_info()
1550 num_indices = (size - sizeof(ATOM_COMMON_TABLE_HEADER)) / in radeon_atombios_get_asic_ss_info()
1552 ss_assign = (union asic_ss_assignment *)((u8 *)&ss_info->info_2.asSpreadSpectrum[0]); in radeon_atombios_get_asic_ss_info()
1554 if ((ss_assign->v2.ucClockIndication == id) && in radeon_atombios_get_asic_ss_info()
1555 (clock <= le32_to_cpu(ss_assign->v2.ulTargetClockRange))) { in radeon_atombios_get_asic_ss_info()
1556 ss->percentage = in radeon_atombios_get_asic_ss_info()
1557 le16_to_cpu(ss_assign->v2.usSpreadSpectrumPercentage); in radeon_atombios_get_asic_ss_info()
1558 ss->type = ss_assign->v2.ucSpreadSpectrumMode; in radeon_atombios_get_asic_ss_info()
1559 ss->rate = le16_to_cpu(ss_assign->v2.usSpreadRateIn10Hz); in radeon_atombios_get_asic_ss_info()
1560 ss->percentage_divider = 100; in radeon_atombios_get_asic_ss_info()
1564 ss->rate /= 100; in radeon_atombios_get_asic_ss_info()
1572 num_indices = (size - sizeof(ATOM_COMMON_TABLE_HEADER)) / in radeon_atombios_get_asic_ss_info()
1574 ss_assign = (union asic_ss_assignment *)((u8 *)&ss_info->info_3.asSpreadSpectrum[0]); in radeon_atombios_get_asic_ss_info()
1576 if ((ss_assign->v3.ucClockIndication == id) && in radeon_atombios_get_asic_ss_info()
1577 (clock <= le32_to_cpu(ss_assign->v3.ulTargetClockRange))) { in radeon_atombios_get_asic_ss_info()
1578 ss->percentage = in radeon_atombios_get_asic_ss_info()
1579 le16_to_cpu(ss_assign->v3.usSpreadSpectrumPercentage); in radeon_atombios_get_asic_ss_info()
1580 ss->type = ss_assign->v3.ucSpreadSpectrumMode; in radeon_atombios_get_asic_ss_info()
1581 ss->rate = le16_to_cpu(ss_assign->v3.usSpreadRateIn10Hz); in radeon_atombios_get_asic_ss_info()
1582 if (ss_assign->v3.ucSpreadSpectrumMode & in radeon_atombios_get_asic_ss_info()
1584 ss->percentage_divider = 1000; in radeon_atombios_get_asic_ss_info()
1586 ss->percentage_divider = 100; in radeon_atombios_get_asic_ss_info()
1589 ss->rate /= 100; in radeon_atombios_get_asic_ss_info()
1590 if (rdev->flags & RADEON_IS_IGP) in radeon_atombios_get_asic_ss_info()
1616 struct drm_device *dev = encoder->base.dev; in radeon_atombios_get_lvds_info()
1617 struct radeon_device *rdev = dev->dev_private; in radeon_atombios_get_lvds_info()
1618 struct radeon_mode_info *mode_info = &rdev->mode_info; in radeon_atombios_get_lvds_info()
1624 int encoder_enum = (encoder->encoder_enum & ENUM_ID_MASK) >> ENUM_ID_SHIFT; in radeon_atombios_get_lvds_info()
1626 if (atom_parse_data_header(mode_info->atom_context, index, NULL, in radeon_atombios_get_lvds_info()
1629 (union lvds_info *)(mode_info->atom_context->bios + data_offset); in radeon_atombios_get_lvds_info()
1636 lvds->native_mode.clock = in radeon_atombios_get_lvds_info()
1637 le16_to_cpu(lvds_info->info.sLCDTiming.usPixClk) * 10; in radeon_atombios_get_lvds_info()
1638 lvds->native_mode.hdisplay = in radeon_atombios_get_lvds_info()
1639 le16_to_cpu(lvds_info->info.sLCDTiming.usHActive); in radeon_atombios_get_lvds_info()
1640 lvds->native_mode.vdisplay = in radeon_atombios_get_lvds_info()
1641 le16_to_cpu(lvds_info->info.sLCDTiming.usVActive); in radeon_atombios_get_lvds_info()
1642 lvds->native_mode.htotal = lvds->native_mode.hdisplay + in radeon_atombios_get_lvds_info()
1643 le16_to_cpu(lvds_info->info.sLCDTiming.usHBlanking_Time); in radeon_atombios_get_lvds_info()
1644 lvds->native_mode.hsync_start = lvds->native_mode.hdisplay + in radeon_atombios_get_lvds_info()
1645 le16_to_cpu(lvds_info->info.sLCDTiming.usHSyncOffset); in radeon_atombios_get_lvds_info()
1646 lvds->native_mode.hsync_end = lvds->native_mode.hsync_start + in radeon_atombios_get_lvds_info()
1647 le16_to_cpu(lvds_info->info.sLCDTiming.usHSyncWidth); in radeon_atombios_get_lvds_info()
1648 lvds->native_mode.vtotal = lvds->native_mode.vdisplay + in radeon_atombios_get_lvds_info()
1649 le16_to_cpu(lvds_info->info.sLCDTiming.usVBlanking_Time); in radeon_atombios_get_lvds_info()
1650 lvds->native_mode.vsync_start = lvds->native_mode.vdisplay + in radeon_atombios_get_lvds_info()
1651 le16_to_cpu(lvds_info->info.sLCDTiming.usVSyncOffset); in radeon_atombios_get_lvds_info()
1652 lvds->native_mode.vsync_end = lvds->native_mode.vsync_start + in radeon_atombios_get_lvds_info()
1653 le16_to_cpu(lvds_info->info.sLCDTiming.usVSyncWidth); in radeon_atombios_get_lvds_info()
1654 lvds->panel_pwr_delay = in radeon_atombios_get_lvds_info()
1655 le16_to_cpu(lvds_info->info.usOffDelayInMs); in radeon_atombios_get_lvds_info()
1656 lvds->lcd_misc = lvds_info->info.ucLVDS_Misc; in radeon_atombios_get_lvds_info()
1658 misc = le16_to_cpu(lvds_info->info.sLCDTiming.susModeMiscInfo.usAccess); in radeon_atombios_get_lvds_info()
1660 lvds->native_mode.flags |= DRM_MODE_FLAG_NVSYNC; in radeon_atombios_get_lvds_info()
1662 lvds->native_mode.flags |= DRM_MODE_FLAG_NHSYNC; in radeon_atombios_get_lvds_info()
1664 lvds->native_mode.flags |= DRM_MODE_FLAG_CSYNC; in radeon_atombios_get_lvds_info()
1666 lvds->native_mode.flags |= DRM_MODE_FLAG_INTERLACE; in radeon_atombios_get_lvds_info()
1668 lvds->native_mode.flags |= DRM_MODE_FLAG_DBLSCAN; in radeon_atombios_get_lvds_info()
1670 lvds->native_mode.width_mm = le16_to_cpu(lvds_info->info.sLCDTiming.usImageHSize); in radeon_atombios_get_lvds_info()
1671 lvds->native_mode.height_mm = le16_to_cpu(lvds_info->info.sLCDTiming.usImageVSize); in radeon_atombios_get_lvds_info()
1674 drm_mode_set_crtcinfo(&lvds->native_mode, CRTC_INTERLACE_HALVE_V); in radeon_atombios_get_lvds_info()
1676 lvds->lcd_ss_id = lvds_info->info.ucSS_Id; in radeon_atombios_get_lvds_info()
1678 encoder->native_mode = lvds->native_mode; in radeon_atombios_get_lvds_info()
1681 lvds->linkb = true; in radeon_atombios_get_lvds_info()
1683 lvds->linkb = false; in radeon_atombios_get_lvds_info()
1686 if (le16_to_cpu(lvds_info->info.usModePatchTableOffset)) { in radeon_atombios_get_lvds_info()
1694 record = (u8 *)(mode_info->atom_context->bios + in radeon_atombios_get_lvds_info()
1695 le16_to_cpu(lvds_info->info.usModePatchTableOffset)); in radeon_atombios_get_lvds_info()
1698 record = (u8 *)(mode_info->atom_context->bios + in radeon_atombios_get_lvds_info()
1700 le16_to_cpu(lvds_info->info.usModePatchTableOffset)); in radeon_atombios_get_lvds_info()
1714 if (fake_edid_record->ucFakeEDIDLength) { in radeon_atombios_get_lvds_info()
1717 max((int)EDID_LENGTH, (int)fake_edid_record->ucFakeEDIDLength); in radeon_atombios_get_lvds_info()
1720 memcpy((u8 *)edid, (u8 *)&fake_edid_record->ucFakeEDIDString[0], in radeon_atombios_get_lvds_info()
1721 fake_edid_record->ucFakeEDIDLength); in radeon_atombios_get_lvds_info()
1724 rdev->mode_info.bios_hardcoded_edid = edid; in radeon_atombios_get_lvds_info()
1725 rdev->mode_info.bios_hardcoded_edid_size = edid_size; in radeon_atombios_get_lvds_info()
1730 record += fake_edid_record->ucFakeEDIDLength ? in radeon_atombios_get_lvds_info()
1733 fake_edid_record->ucFakeEDIDLength) : in radeon_atombios_get_lvds_info()
1739 lvds->native_mode.width_mm = panel_res_record->usHSize; in radeon_atombios_get_lvds_info()
1740 lvds->native_mode.height_mm = panel_res_record->usVSize; in radeon_atombios_get_lvds_info()
1759 struct drm_device *dev = encoder->base.dev; in radeon_atombios_get_primary_dac_info()
1760 struct radeon_device *rdev = dev->dev_private; in radeon_atombios_get_primary_dac_info()
1761 struct radeon_mode_info *mode_info = &rdev->mode_info; in radeon_atombios_get_primary_dac_info()
1769 if (atom_parse_data_header(mode_info->atom_context, index, NULL, in radeon_atombios_get_primary_dac_info()
1772 (mode_info->atom_context->bios + data_offset); in radeon_atombios_get_primary_dac_info()
1779 bg = dac_info->ucDAC1_BG_Adjustment; in radeon_atombios_get_primary_dac_info()
1780 dac = dac_info->ucDAC1_DAC_Adjustment; in radeon_atombios_get_primary_dac_info()
1781 p_dac->ps2_pdac_adj = (bg << 8) | (dac); in radeon_atombios_get_primary_dac_info()
1790 struct radeon_mode_info *mode_info = &rdev->mode_info; in radeon_atom_get_tv_timings()
1798 if (!atom_parse_data_header(mode_info->atom_context, data_index, NULL, in radeon_atom_get_tv_timings()
1804 tv_info = (ATOM_ANALOG_TV_INFO *)(mode_info->atom_context->bios + data_offset); in radeon_atom_get_tv_timings()
1808 mode->crtc_htotal = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_H_Total); in radeon_atom_get_tv_timings()
1809 mode->crtc_hdisplay = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_H_Disp); in radeon_atom_get_tv_timings()
1810 mode->crtc_hsync_start = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_H_SyncStart); in radeon_atom_get_tv_timings()
1811 mode->crtc_hsync_end = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_H_SyncStart) + in radeon_atom_get_tv_timings()
1812 le16_to_cpu(tv_info->aModeTimings[index].usCRTC_H_SyncWidth); in radeon_atom_get_tv_timings()
1814 mode->crtc_vtotal = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_V_Total); in radeon_atom_get_tv_timings()
1815 mode->crtc_vdisplay = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_V_Disp); in radeon_atom_get_tv_timings()
1816 mode->crtc_vsync_start = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_V_SyncStart); in radeon_atom_get_tv_timings()
1817 mode->crtc_vsync_end = le16_to_cpu(tv_info->aModeTimings[index].usCRTC_V_SyncStart) + in radeon_atom_get_tv_timings()
1818 le16_to_cpu(tv_info->aModeTimings[index].usCRTC_V_SyncWidth); in radeon_atom_get_tv_timings()
1820 mode->flags = 0; in radeon_atom_get_tv_timings()
1821 misc = le16_to_cpu(tv_info->aModeTimings[index].susModeMiscInfo.usAccess); in radeon_atom_get_tv_timings()
1823 mode->flags |= DRM_MODE_FLAG_NVSYNC; in radeon_atom_get_tv_timings()
1825 mode->flags |= DRM_MODE_FLAG_NHSYNC; in radeon_atom_get_tv_timings()
1827 mode->flags |= DRM_MODE_FLAG_CSYNC; in radeon_atom_get_tv_timings()
1829 mode->flags |= DRM_MODE_FLAG_INTERLACE; in radeon_atom_get_tv_timings()
1831 mode->flags |= DRM_MODE_FLAG_DBLSCAN; in radeon_atom_get_tv_timings()
1833 mode->crtc_clock = mode->clock = in radeon_atom_get_tv_timings()
1834 le16_to_cpu(tv_info->aModeTimings[index].usPixelClock) * 10; in radeon_atom_get_tv_timings()
1838 mode->crtc_htotal -= 1; in radeon_atom_get_tv_timings()
1839 mode->crtc_vtotal -= 1; in radeon_atom_get_tv_timings()
1843 tv_info_v1_2 = (ATOM_ANALOG_TV_INFO_V1_2 *)(mode_info->atom_context->bios + data_offset); in radeon_atom_get_tv_timings()
1847 dtd_timings = &tv_info_v1_2->aModeTimings[index]; in radeon_atom_get_tv_timings()
1848 mode->crtc_htotal = le16_to_cpu(dtd_timings->usHActive) + in radeon_atom_get_tv_timings()
1849 le16_to_cpu(dtd_timings->usHBlanking_Time); in radeon_atom_get_tv_timings()
1850 mode->crtc_hdisplay = le16_to_cpu(dtd_timings->usHActive); in radeon_atom_get_tv_timings()
1851 mode->crtc_hsync_start = le16_to_cpu(dtd_timings->usHActive) + in radeon_atom_get_tv_timings()
1852 le16_to_cpu(dtd_timings->usHSyncOffset); in radeon_atom_get_tv_timings()
1853 mode->crtc_hsync_end = mode->crtc_hsync_start + in radeon_atom_get_tv_timings()
1854 le16_to_cpu(dtd_timings->usHSyncWidth); in radeon_atom_get_tv_timings()
1856 mode->crtc_vtotal = le16_to_cpu(dtd_timings->usVActive) + in radeon_atom_get_tv_timings()
1857 le16_to_cpu(dtd_timings->usVBlanking_Time); in radeon_atom_get_tv_timings()
1858 mode->crtc_vdisplay = le16_to_cpu(dtd_timings->usVActive); in radeon_atom_get_tv_timings()
1859 mode->crtc_vsync_start = le16_to_cpu(dtd_timings->usVActive) + in radeon_atom_get_tv_timings()
1860 le16_to_cpu(dtd_timings->usVSyncOffset); in radeon_atom_get_tv_timings()
1861 mode->crtc_vsync_end = mode->crtc_vsync_start + in radeon_atom_get_tv_timings()
1862 le16_to_cpu(dtd_timings->usVSyncWidth); in radeon_atom_get_tv_timings()
1864 mode->flags = 0; in radeon_atom_get_tv_timings()
1865 misc = le16_to_cpu(dtd_timings->susModeMiscInfo.usAccess); in radeon_atom_get_tv_timings()
1867 mode->flags |= DRM_MODE_FLAG_NVSYNC; in radeon_atom_get_tv_timings()
1869 mode->flags |= DRM_MODE_FLAG_NHSYNC; in radeon_atom_get_tv_timings()
1871 mode->flags |= DRM_MODE_FLAG_CSYNC; in radeon_atom_get_tv_timings()
1873 mode->flags |= DRM_MODE_FLAG_INTERLACE; in radeon_atom_get_tv_timings()
1875 mode->flags |= DRM_MODE_FLAG_DBLSCAN; in radeon_atom_get_tv_timings()
1877 mode->crtc_clock = mode->clock = in radeon_atom_get_tv_timings()
1878 le16_to_cpu(dtd_timings->usPixClk) * 10; in radeon_atom_get_tv_timings()
1887 struct radeon_mode_info *mode_info = &rdev->mode_info; in radeon_atombios_get_tv_info()
1894 if (atom_parse_data_header(mode_info->atom_context, index, NULL, in radeon_atombios_get_tv_info()
1898 (mode_info->atom_context->bios + data_offset); in radeon_atombios_get_tv_info()
1900 switch (tv_info->ucTV_BootUpDefaultStandard) { in radeon_atombios_get_tv_info()
1907 DRM_DEBUG_KMS("Default TV standard: NTSC-J\n"); in radeon_atombios_get_tv_info()
1915 DRM_DEBUG_KMS("Default TV standard: PAL-M\n"); in radeon_atombios_get_tv_info()
1919 DRM_DEBUG_KMS("Default TV standard: PAL-N\n"); in radeon_atombios_get_tv_info()
1923 DRM_DEBUG_KMS("Default TV standard: PAL-CN\n"); in radeon_atombios_get_tv_info()
1927 DRM_DEBUG_KMS("Default TV standard: PAL-60\n"); in radeon_atombios_get_tv_info()
1945 struct drm_device *dev = encoder->base.dev; in radeon_atombios_get_tv_dac_info()
1946 struct radeon_device *rdev = dev->dev_private; in radeon_atombios_get_tv_dac_info()
1947 struct radeon_mode_info *mode_info = &rdev->mode_info; in radeon_atombios_get_tv_dac_info()
1955 if (atom_parse_data_header(mode_info->atom_context, index, NULL, in radeon_atombios_get_tv_dac_info()
1959 (mode_info->atom_context->bios + data_offset); in radeon_atombios_get_tv_dac_info()
1966 bg = dac_info->ucDAC2_CRT2_BG_Adjustment; in radeon_atombios_get_tv_dac_info()
1967 dac = dac_info->ucDAC2_CRT2_DAC_Adjustment; in radeon_atombios_get_tv_dac_info()
1968 tv_dac->ps2_tvdac_adj = (bg << 16) | (dac << 20); in radeon_atombios_get_tv_dac_info()
1970 bg = dac_info->ucDAC2_PAL_BG_Adjustment; in radeon_atombios_get_tv_dac_info()
1971 dac = dac_info->ucDAC2_PAL_DAC_Adjustment; in radeon_atombios_get_tv_dac_info()
1972 tv_dac->pal_tvdac_adj = (bg << 16) | (dac << 20); in radeon_atombios_get_tv_dac_info()
1974 bg = dac_info->ucDAC2_NTSC_BG_Adjustment; in radeon_atombios_get_tv_dac_info()
1975 dac = dac_info->ucDAC2_NTSC_DAC_Adjustment; in radeon_atombios_get_tv_dac_info()
1976 tv_dac->ntsc_tvdac_adj = (bg << 16) | (dac << 20); in radeon_atombios_get_tv_dac_info()
1978 tv_dac->tv_std = radeon_atombios_get_tv_info(rdev); in radeon_atombios_get_tv_dac_info()
2043 rdev->pm.power_state[state_index].misc = misc; in radeon_atombios_parse_misc_flags_1_3()
2044 rdev->pm.power_state[state_index].misc2 = misc2; in radeon_atombios_parse_misc_flags_1_3()
2047 rdev->pm.power_state[state_index].type = in radeon_atombios_parse_misc_flags_1_3()
2050 rdev->pm.power_state[state_index].type = in radeon_atombios_parse_misc_flags_1_3()
2053 rdev->pm.power_state[state_index].type = in radeon_atombios_parse_misc_flags_1_3()
2056 rdev->pm.power_state[state_index].type = in radeon_atombios_parse_misc_flags_1_3()
2059 rdev->pm.power_state[state_index].type = in radeon_atombios_parse_misc_flags_1_3()
2061 rdev->pm.power_state[state_index].flags &= in radeon_atombios_parse_misc_flags_1_3()
2065 rdev->pm.power_state[state_index].type = in radeon_atombios_parse_misc_flags_1_3()
2068 rdev->pm.power_state[state_index].type = in radeon_atombios_parse_misc_flags_1_3()
2070 rdev->pm.default_power_state_index = state_index; in radeon_atombios_parse_misc_flags_1_3()
2071 rdev->pm.power_state[state_index].default_clock_mode = in radeon_atombios_parse_misc_flags_1_3()
2072 &rdev->pm.power_state[state_index].clock_info[0]; in radeon_atombios_parse_misc_flags_1_3()
2074 rdev->pm.power_state[state_index].clock_info[0].flags |= in radeon_atombios_parse_misc_flags_1_3()
2081 struct radeon_mode_info *mode_info = &rdev->mode_info; in radeon_atombios_parse_power_table_1_3()
2091 if (!atom_parse_data_header(mode_info->atom_context, index, NULL, in radeon_atombios_parse_power_table_1_3()
2094 power_info = (union power_info *)(mode_info->atom_context->bios + data_offset); in radeon_atombios_parse_power_table_1_3()
2097 if ((power_info->info.ucOverdriveThermalController > 0) && in radeon_atombios_parse_power_table_1_3()
2098 (power_info->info.ucOverdriveThermalController < ARRAY_SIZE(thermal_controller_names))) { in radeon_atombios_parse_power_table_1_3()
2100 thermal_controller_names[power_info->info.ucOverdriveThermalController], in radeon_atombios_parse_power_table_1_3()
2101 power_info->info.ucOverdriveControllerAddress >> 1); in radeon_atombios_parse_power_table_1_3()
2102 i2c_bus = radeon_lookup_i2c_gpio(rdev, power_info->info.ucOverdriveI2cLine); in radeon_atombios_parse_power_table_1_3()
2103 rdev->pm.i2c_bus = radeon_i2c_lookup(rdev, &i2c_bus); in radeon_atombios_parse_power_table_1_3()
2104 if (rdev->pm.i2c_bus) { in radeon_atombios_parse_power_table_1_3()
2106 const char *name = thermal_controller_names[power_info->info. in radeon_atombios_parse_power_table_1_3()
2108 info.addr = power_info->info.ucOverdriveControllerAddress >> 1; in radeon_atombios_parse_power_table_1_3()
2110 i2c_new_client_device(&rdev->pm.i2c_bus->adapter, &info); in radeon_atombios_parse_power_table_1_3()
2113 num_modes = power_info->info.ucNumOfPowerModeEntries; in radeon_atombios_parse_power_table_1_3()
2118 rdev->pm.power_state = kcalloc(num_modes, in radeon_atombios_parse_power_table_1_3()
2121 if (!rdev->pm.power_state) in radeon_atombios_parse_power_table_1_3()
2126 if (!rdev->pm.power_state[state_index].clock_info) { in radeon_atombios_parse_power_table_1_3()
2127 rdev->pm.power_state[state_index].clock_info = in radeon_atombios_parse_power_table_1_3()
2131 if (!rdev->pm.power_state[state_index].clock_info) in radeon_atombios_parse_power_table_1_3()
2133 rdev->pm.power_state[state_index].num_clock_modes = 1; in radeon_atombios_parse_power_table_1_3()
2134 rdev->pm.power_state[state_index].clock_info[0].voltage.type = VOLTAGE_NONE; in radeon_atombios_parse_power_table_1_3()
2137 rdev->pm.power_state[state_index].clock_info[0].mclk = in radeon_atombios_parse_power_table_1_3()
2138 le16_to_cpu(power_info->info.asPowerPlayInfo[i].usMemoryClock); in radeon_atombios_parse_power_table_1_3()
2139 rdev->pm.power_state[state_index].clock_info[0].sclk = in radeon_atombios_parse_power_table_1_3()
2140 le16_to_cpu(power_info->info.asPowerPlayInfo[i].usEngineClock); in radeon_atombios_parse_power_table_1_3()
2142 if ((rdev->pm.power_state[state_index].clock_info[0].mclk == 0) || in radeon_atombios_parse_power_table_1_3()
2143 (rdev->pm.power_state[state_index].clock_info[0].sclk == 0)) in radeon_atombios_parse_power_table_1_3()
2145 rdev->pm.power_state[state_index].pcie_lanes = in radeon_atombios_parse_power_table_1_3()
2146 power_info->info.asPowerPlayInfo[i].ucNumPciELanes; in radeon_atombios_parse_power_table_1_3()
2147 misc = le32_to_cpu(power_info->info.asPowerPlayInfo[i].ulMiscInfo); in radeon_atombios_parse_power_table_1_3()
2150 rdev->pm.power_state[state_index].clock_info[0].voltage.type = in radeon_atombios_parse_power_table_1_3()
2152 rdev->pm.power_state[state_index].clock_info[0].voltage.gpio = in radeon_atombios_parse_power_table_1_3()
2154 power_info->info.asPowerPlayInfo[i].ucVoltageDropIndex); in radeon_atombios_parse_power_table_1_3()
2156 rdev->pm.power_state[state_index].clock_info[0].voltage.active_high = in radeon_atombios_parse_power_table_1_3()
2159 rdev->pm.power_state[state_index].clock_info[0].voltage.active_high = in radeon_atombios_parse_power_table_1_3()
2162 rdev->pm.power_state[state_index].clock_info[0].voltage.type = in radeon_atombios_parse_power_table_1_3()
2164 rdev->pm.power_state[state_index].clock_info[0].voltage.vddc_id = in radeon_atombios_parse_power_table_1_3()
2165 power_info->info.asPowerPlayInfo[i].ucVoltageDropIndex; in radeon_atombios_parse_power_table_1_3()
2167 rdev->pm.power_state[state_index].flags = RADEON_PM_STATE_SINGLE_DISPLAY_ONLY; in radeon_atombios_parse_power_table_1_3()
2172 rdev->pm.power_state[state_index].clock_info[0].mclk = in radeon_atombios_parse_power_table_1_3()
2173 le32_to_cpu(power_info->info_2.asPowerPlayInfo[i].ulMemoryClock); in radeon_atombios_parse_power_table_1_3()
2174 rdev->pm.power_state[state_index].clock_info[0].sclk = in radeon_atombios_parse_power_table_1_3()
2175 le32_to_cpu(power_info->info_2.asPowerPlayInfo[i].ulEngineClock); in radeon_atombios_parse_power_table_1_3()
2177 if ((rdev->pm.power_state[state_index].clock_info[0].mclk == 0) || in radeon_atombios_parse_power_table_1_3()
2178 (rdev->pm.power_state[state_index].clock_info[0].sclk == 0)) in radeon_atombios_parse_power_table_1_3()
2180 rdev->pm.power_state[state_index].pcie_lanes = in radeon_atombios_parse_power_table_1_3()
2181 power_info->info_2.asPowerPlayInfo[i].ucNumPciELanes; in radeon_atombios_parse_power_table_1_3()
2182 misc = le32_to_cpu(power_info->info_2.asPowerPlayInfo[i].ulMiscInfo); in radeon_atombios_parse_power_table_1_3()
2183 misc2 = le32_to_cpu(power_info->info_2.asPowerPlayInfo[i].ulMiscInfo2); in radeon_atombios_parse_power_table_1_3()
2186 rdev->pm.power_state[state_index].clock_info[0].voltage.type = in radeon_atombios_parse_power_table_1_3()
2188 rdev->pm.power_state[state_index].clock_info[0].voltage.gpio = in radeon_atombios_parse_power_table_1_3()
2190 power_info->info_2.asPowerPlayInfo[i].ucVoltageDropIndex); in radeon_atombios_parse_power_table_1_3()
2192 rdev->pm.power_state[state_index].clock_info[0].voltage.active_high = in radeon_atombios_parse_power_table_1_3()
2195 rdev->pm.power_state[state_index].clock_info[0].voltage.active_high = in radeon_atombios_parse_power_table_1_3()
2198 rdev->pm.power_state[state_index].clock_info[0].voltage.type = in radeon_atombios_parse_power_table_1_3()
2200 rdev->pm.power_state[state_index].clock_info[0].voltage.vddc_id = in radeon_atombios_parse_power_table_1_3()
2201 power_info->info_2.asPowerPlayInfo[i].ucVoltageDropIndex; in radeon_atombios_parse_power_table_1_3()
2203 rdev->pm.power_state[state_index].flags = RADEON_PM_STATE_SINGLE_DISPLAY_ONLY; in radeon_atombios_parse_power_table_1_3()
2208 rdev->pm.power_state[state_index].clock_info[0].mclk = in radeon_atombios_parse_power_table_1_3()
2209 le32_to_cpu(power_info->info_3.asPowerPlayInfo[i].ulMemoryClock); in radeon_atombios_parse_power_table_1_3()
2210 rdev->pm.power_state[state_index].clock_info[0].sclk = in radeon_atombios_parse_power_table_1_3()
2211 le32_to_cpu(power_info->info_3.asPowerPlayInfo[i].ulEngineClock); in radeon_atombios_parse_power_table_1_3()
2213 if ((rdev->pm.power_state[state_index].clock_info[0].mclk == 0) || in radeon_atombios_parse_power_table_1_3()
2214 (rdev->pm.power_state[state_index].clock_info[0].sclk == 0)) in radeon_atombios_parse_power_table_1_3()
2216 rdev->pm.power_state[state_index].pcie_lanes = in radeon_atombios_parse_power_table_1_3()
2217 power_info->info_3.asPowerPlayInfo[i].ucNumPciELanes; in radeon_atombios_parse_power_table_1_3()
2218 misc = le32_to_cpu(power_info->info_3.asPowerPlayInfo[i].ulMiscInfo); in radeon_atombios_parse_power_table_1_3()
2219 misc2 = le32_to_cpu(power_info->info_3.asPowerPlayInfo[i].ulMiscInfo2); in radeon_atombios_parse_power_table_1_3()
2222 rdev->pm.power_state[state_index].clock_info[0].voltage.type = in radeon_atombios_parse_power_table_1_3()
2224 rdev->pm.power_state[state_index].clock_info[0].voltage.gpio = in radeon_atombios_parse_power_table_1_3()
2226 power_info->info_3.asPowerPlayInfo[i].ucVoltageDropIndex); in radeon_atombios_parse_power_table_1_3()
2228 rdev->pm.power_state[state_index].clock_info[0].voltage.active_high = in radeon_atombios_parse_power_table_1_3()
2231 rdev->pm.power_state[state_index].clock_info[0].voltage.active_high = in radeon_atombios_parse_power_table_1_3()
2234 rdev->pm.power_state[state_index].clock_info[0].voltage.type = in radeon_atombios_parse_power_table_1_3()
2236 rdev->pm.power_state[state_index].clock_info[0].voltage.vddc_id = in radeon_atombios_parse_power_table_1_3()
2237 power_info->info_3.asPowerPlayInfo[i].ucVoltageDropIndex; in radeon_atombios_parse_power_table_1_3()
2239 rdev->pm.power_state[state_index].clock_info[0].voltage.vddci_enabled = in radeon_atombios_parse_power_table_1_3()
2241 rdev->pm.power_state[state_index].clock_info[0].voltage.vddci_id = in radeon_atombios_parse_power_table_1_3()
2242 power_info->info_3.asPowerPlayInfo[i].ucVDDCI_VoltageDropIndex; in radeon_atombios_parse_power_table_1_3()
2245 rdev->pm.power_state[state_index].flags = RADEON_PM_STATE_SINGLE_DISPLAY_ONLY; in radeon_atombios_parse_power_table_1_3()
2254 kfree(rdev->pm.power_state[state_index].clock_info); in radeon_atombios_parse_power_table_1_3()
2255 rdev->pm.power_state[state_index].clock_info = NULL; in radeon_atombios_parse_power_table_1_3()
2259 if (state_index && rdev->pm.default_power_state_index == -1) { in radeon_atombios_parse_power_table_1_3()
2260 rdev->pm.power_state[state_index - 1].type = in radeon_atombios_parse_power_table_1_3()
2262 rdev->pm.default_power_state_index = state_index - 1; in radeon_atombios_parse_power_table_1_3()
2263 rdev->pm.power_state[state_index - 1].default_clock_mode = in radeon_atombios_parse_power_table_1_3()
2264 &rdev->pm.power_state[state_index - 1].clock_info[0]; in radeon_atombios_parse_power_table_1_3()
2265 rdev->pm.power_state[state_index - 1].flags &= in radeon_atombios_parse_power_table_1_3()
2267 rdev->pm.power_state[state_index - 1].misc = 0; in radeon_atombios_parse_power_table_1_3()
2268 rdev->pm.power_state[state_index - 1].misc2 = 0; in radeon_atombios_parse_power_table_1_3()
2279 if (controller->ucType > 0) { in radeon_atombios_add_pplib_thermal_controller()
2280 if (controller->ucFanParameters & ATOM_PP_FANPARAMETERS_NOFAN) in radeon_atombios_add_pplib_thermal_controller()
2281 rdev->pm.no_fan = true; in radeon_atombios_add_pplib_thermal_controller()
2282 rdev->pm.fan_pulses_per_revolution = in radeon_atombios_add_pplib_thermal_controller()
2283 controller->ucFanParameters & ATOM_PP_FANPARAMETERS_TACHOMETER_PULSES_PER_REVOLUTION_MASK; in radeon_atombios_add_pplib_thermal_controller()
2284 if (rdev->pm.fan_pulses_per_revolution) { in radeon_atombios_add_pplib_thermal_controller()
2285 rdev->pm.fan_min_rpm = controller->ucFanMinRPM; in radeon_atombios_add_pplib_thermal_controller()
2286 rdev->pm.fan_max_rpm = controller->ucFanMaxRPM; in radeon_atombios_add_pplib_thermal_controller()
2288 if (controller->ucType == ATOM_PP_THERMALCONTROLLER_RV6xx) { in radeon_atombios_add_pplib_thermal_controller()
2290 (controller->ucFanParameters & in radeon_atombios_add_pplib_thermal_controller()
2292 rdev->pm.int_thermal_type = THERMAL_TYPE_RV6XX; in radeon_atombios_add_pplib_thermal_controller()
2293 } else if (controller->ucType == ATOM_PP_THERMALCONTROLLER_RV770) { in radeon_atombios_add_pplib_thermal_controller()
2295 (controller->ucFanParameters & in radeon_atombios_add_pplib_thermal_controller()
2297 rdev->pm.int_thermal_type = THERMAL_TYPE_RV770; in radeon_atombios_add_pplib_thermal_controller()
2298 } else if (controller->ucType == ATOM_PP_THERMALCONTROLLER_EVERGREEN) { in radeon_atombios_add_pplib_thermal_controller()
2300 (controller->ucFanParameters & in radeon_atombios_add_pplib_thermal_controller()
2302 rdev->pm.int_thermal_type = THERMAL_TYPE_EVERGREEN; in radeon_atombios_add_pplib_thermal_controller()
2303 } else if (controller->ucType == ATOM_PP_THERMALCONTROLLER_SUMO) { in radeon_atombios_add_pplib_thermal_controller()
2305 (controller->ucFanParameters & in radeon_atombios_add_pplib_thermal_controller()
2307 rdev->pm.int_thermal_type = THERMAL_TYPE_SUMO; in radeon_atombios_add_pplib_thermal_controller()
2308 } else if (controller->ucType == ATOM_PP_THERMALCONTROLLER_NISLANDS) { in radeon_atombios_add_pplib_thermal_controller()
2310 (controller->ucFanParameters & in radeon_atombios_add_pplib_thermal_controller()
2312 rdev->pm.int_thermal_type = THERMAL_TYPE_NI; in radeon_atombios_add_pplib_thermal_controller()
2313 } else if (controller->ucType == ATOM_PP_THERMALCONTROLLER_SISLANDS) { in radeon_atombios_add_pplib_thermal_controller()
2315 (controller->ucFanParameters & in radeon_atombios_add_pplib_thermal_controller()
2317 rdev->pm.int_thermal_type = THERMAL_TYPE_SI; in radeon_atombios_add_pplib_thermal_controller()
2318 } else if (controller->ucType == ATOM_PP_THERMALCONTROLLER_CISLANDS) { in radeon_atombios_add_pplib_thermal_controller()
2320 (controller->ucFanParameters & in radeon_atombios_add_pplib_thermal_controller()
2322 rdev->pm.int_thermal_type = THERMAL_TYPE_CI; in radeon_atombios_add_pplib_thermal_controller()
2323 } else if (controller->ucType == ATOM_PP_THERMALCONTROLLER_KAVERI) { in radeon_atombios_add_pplib_thermal_controller()
2325 (controller->ucFanParameters & in radeon_atombios_add_pplib_thermal_controller()
2327 rdev->pm.int_thermal_type = THERMAL_TYPE_KV; in radeon_atombios_add_pplib_thermal_controller()
2328 } else if (controller->ucType == in radeon_atombios_add_pplib_thermal_controller()
2331 (controller->ucFanParameters & in radeon_atombios_add_pplib_thermal_controller()
2333 rdev->pm.int_thermal_type = THERMAL_TYPE_EXTERNAL_GPIO; in radeon_atombios_add_pplib_thermal_controller()
2334 } else if (controller->ucType == in radeon_atombios_add_pplib_thermal_controller()
2337 (controller->ucFanParameters & in radeon_atombios_add_pplib_thermal_controller()
2339 rdev->pm.int_thermal_type = THERMAL_TYPE_ADT7473_WITH_INTERNAL; in radeon_atombios_add_pplib_thermal_controller()
2340 } else if (controller->ucType == in radeon_atombios_add_pplib_thermal_controller()
2343 (controller->ucFanParameters & in radeon_atombios_add_pplib_thermal_controller()
2345 rdev->pm.int_thermal_type = THERMAL_TYPE_EMC2103_WITH_INTERNAL; in radeon_atombios_add_pplib_thermal_controller()
2346 } else if (controller->ucType < ARRAY_SIZE(pp_lib_thermal_controller_names)) { in radeon_atombios_add_pplib_thermal_controller()
2348 pp_lib_thermal_controller_names[controller->ucType], in radeon_atombios_add_pplib_thermal_controller()
2349 controller->ucI2cAddress >> 1, in radeon_atombios_add_pplib_thermal_controller()
2350 (controller->ucFanParameters & in radeon_atombios_add_pplib_thermal_controller()
2352 rdev->pm.int_thermal_type = THERMAL_TYPE_EXTERNAL; in radeon_atombios_add_pplib_thermal_controller()
2353 i2c_bus = radeon_lookup_i2c_gpio(rdev, controller->ucI2cLine); in radeon_atombios_add_pplib_thermal_controller()
2354 rdev->pm.i2c_bus = radeon_i2c_lookup(rdev, &i2c_bus); in radeon_atombios_add_pplib_thermal_controller()
2355 if (rdev->pm.i2c_bus) { in radeon_atombios_add_pplib_thermal_controller()
2357 const char *name = pp_lib_thermal_controller_names[controller->ucType]; in radeon_atombios_add_pplib_thermal_controller()
2358 info.addr = controller->ucI2cAddress >> 1; in radeon_atombios_add_pplib_thermal_controller()
2360 i2c_new_client_device(&rdev->pm.i2c_bus->adapter, &info); in radeon_atombios_add_pplib_thermal_controller()
2364 controller->ucType, in radeon_atombios_add_pplib_thermal_controller()
2365 controller->ucI2cAddress >> 1, in radeon_atombios_add_pplib_thermal_controller()
2366 (controller->ucFanParameters & in radeon_atombios_add_pplib_thermal_controller()
2375 struct radeon_mode_info *mode_info = &rdev->mode_info; in radeon_atombios_get_default_voltages()
2385 if (atom_parse_data_header(mode_info->atom_context, index, NULL, in radeon_atombios_get_default_voltages()
2388 (union firmware_info *)(mode_info->atom_context->bios + in radeon_atombios_get_default_voltages()
2390 *vddc = le16_to_cpu(firmware_info->info_14.usBootUpVDDCVoltage); in radeon_atombios_get_default_voltages()
2392 *vddci = le16_to_cpu(firmware_info->info_22.usBootUpVDDCIVoltage); in radeon_atombios_get_default_voltages()
2393 *mvdd = le16_to_cpu(firmware_info->info_22.usBootUpMVDDCVoltage); in radeon_atombios_get_default_voltages()
2403 u32 misc = le32_to_cpu(non_clock_info->ulCapsAndSettings); in radeon_atombios_parse_pplib_non_clock_info()
2404 u32 misc2 = le16_to_cpu(non_clock_info->usClassification); in radeon_atombios_parse_pplib_non_clock_info()
2409 rdev->pm.power_state[state_index].misc = misc; in radeon_atombios_parse_pplib_non_clock_info()
2410 rdev->pm.power_state[state_index].misc2 = misc2; in radeon_atombios_parse_pplib_non_clock_info()
2411 rdev->pm.power_state[state_index].pcie_lanes = in radeon_atombios_parse_pplib_non_clock_info()
2416 rdev->pm.power_state[state_index].type = in radeon_atombios_parse_pplib_non_clock_info()
2420 rdev->pm.power_state[state_index].type = in radeon_atombios_parse_pplib_non_clock_info()
2424 rdev->pm.power_state[state_index].type = in radeon_atombios_parse_pplib_non_clock_info()
2429 rdev->pm.power_state[state_index].type = in radeon_atombios_parse_pplib_non_clock_info()
2433 rdev->pm.power_state[state_index].flags = 0; in radeon_atombios_parse_pplib_non_clock_info()
2435 rdev->pm.power_state[state_index].flags |= in radeon_atombios_parse_pplib_non_clock_info()
2438 rdev->pm.power_state[state_index].type = in radeon_atombios_parse_pplib_non_clock_info()
2440 rdev->pm.default_power_state_index = state_index; in radeon_atombios_parse_pplib_non_clock_info()
2441 rdev->pm.power_state[state_index].default_clock_mode = in radeon_atombios_parse_pplib_non_clock_info()
2442 &rdev->pm.power_state[state_index].clock_info[mode_index - 1]; in radeon_atombios_parse_pplib_non_clock_info()
2443 if ((rdev->family >= CHIP_BARTS) && !(rdev->flags & RADEON_IS_IGP)) { in radeon_atombios_parse_pplib_non_clock_info()
2445 rdev->pm.default_sclk = rdev->pm.power_state[state_index].clock_info[0].sclk; in radeon_atombios_parse_pplib_non_clock_info()
2446 rdev->pm.default_mclk = rdev->pm.power_state[state_index].clock_info[0].mclk; in radeon_atombios_parse_pplib_non_clock_info()
2447 rdev->pm.default_vddc = rdev->pm.power_state[state_index].clock_info[0].voltage.voltage; in radeon_atombios_parse_pplib_non_clock_info()
2448 rdev->pm.default_vddci = rdev->pm.power_state[state_index].clock_info[0].voltage.vddci; in radeon_atombios_parse_pplib_non_clock_info()
2458 rdev->pm.power_state[state_index].clock_info[j].mclk = in radeon_atombios_parse_pplib_non_clock_info()
2459 rdev->clock.default_mclk; in radeon_atombios_parse_pplib_non_clock_info()
2460 rdev->pm.power_state[state_index].clock_info[j].sclk = in radeon_atombios_parse_pplib_non_clock_info()
2461 rdev->clock.default_sclk; in radeon_atombios_parse_pplib_non_clock_info()
2463 rdev->pm.power_state[state_index].clock_info[j].voltage.voltage = in radeon_atombios_parse_pplib_non_clock_info()
2466 rdev->pm.power_state[state_index].clock_info[j].voltage.vddci = in radeon_atombios_parse_pplib_non_clock_info()
2480 if (rdev->flags & RADEON_IS_IGP) { in radeon_atombios_parse_pplib_clock_info()
2481 if (rdev->family >= CHIP_PALM) { in radeon_atombios_parse_pplib_clock_info()
2482 sclk = le16_to_cpu(clock_info->sumo.usEngineClockLow); in radeon_atombios_parse_pplib_clock_info()
2483 sclk |= clock_info->sumo.ucEngineClockHigh << 16; in radeon_atombios_parse_pplib_clock_info()
2484 rdev->pm.power_state[state_index].clock_info[mode_index].sclk = sclk; in radeon_atombios_parse_pplib_clock_info()
2486 sclk = le16_to_cpu(clock_info->rs780.usLowEngineClockLow); in radeon_atombios_parse_pplib_clock_info()
2487 sclk |= clock_info->rs780.ucLowEngineClockHigh << 16; in radeon_atombios_parse_pplib_clock_info()
2488 rdev->pm.power_state[state_index].clock_info[mode_index].sclk = sclk; in radeon_atombios_parse_pplib_clock_info()
2490 } else if (rdev->family >= CHIP_BONAIRE) { in radeon_atombios_parse_pplib_clock_info()
2491 sclk = le16_to_cpu(clock_info->ci.usEngineClockLow); in radeon_atombios_parse_pplib_clock_info()
2492 sclk |= clock_info->ci.ucEngineClockHigh << 16; in radeon_atombios_parse_pplib_clock_info()
2493 mclk = le16_to_cpu(clock_info->ci.usMemoryClockLow); in radeon_atombios_parse_pplib_clock_info()
2494 mclk |= clock_info->ci.ucMemoryClockHigh << 16; in radeon_atombios_parse_pplib_clock_info()
2495 rdev->pm.power_state[state_index].clock_info[mode_index].mclk = mclk; in radeon_atombios_parse_pplib_clock_info()
2496 rdev->pm.power_state[state_index].clock_info[mode_index].sclk = sclk; in radeon_atombios_parse_pplib_clock_info()
2497 rdev->pm.power_state[state_index].clock_info[mode_index].voltage.type = in radeon_atombios_parse_pplib_clock_info()
2499 } else if (rdev->family >= CHIP_TAHITI) { in radeon_atombios_parse_pplib_clock_info()
2500 sclk = le16_to_cpu(clock_info->si.usEngineClockLow); in radeon_atombios_parse_pplib_clock_info()
2501 sclk |= clock_info->si.ucEngineClockHigh << 16; in radeon_atombios_parse_pplib_clock_info()
2502 mclk = le16_to_cpu(clock_info->si.usMemoryClockLow); in radeon_atombios_parse_pplib_clock_info()
2503 mclk |= clock_info->si.ucMemoryClockHigh << 16; in radeon_atombios_parse_pplib_clock_info()
2504 rdev->pm.power_state[state_index].clock_info[mode_index].mclk = mclk; in radeon_atombios_parse_pplib_clock_info()
2505 rdev->pm.power_state[state_index].clock_info[mode_index].sclk = sclk; in radeon_atombios_parse_pplib_clock_info()
2506 rdev->pm.power_state[state_index].clock_info[mode_index].voltage.type = in radeon_atombios_parse_pplib_clock_info()
2508 rdev->pm.power_state[state_index].clock_info[mode_index].voltage.voltage = in radeon_atombios_parse_pplib_clock_info()
2509 le16_to_cpu(clock_info->si.usVDDC); in radeon_atombios_parse_pplib_clock_info()
2510 rdev->pm.power_state[state_index].clock_info[mode_index].voltage.vddci = in radeon_atombios_parse_pplib_clock_info()
2511 le16_to_cpu(clock_info->si.usVDDCI); in radeon_atombios_parse_pplib_clock_info()
2512 } else if (rdev->family >= CHIP_CEDAR) { in radeon_atombios_parse_pplib_clock_info()
2513 sclk = le16_to_cpu(clock_info->evergreen.usEngineClockLow); in radeon_atombios_parse_pplib_clock_info()
2514 sclk |= clock_info->evergreen.ucEngineClockHigh << 16; in radeon_atombios_parse_pplib_clock_info()
2515 mclk = le16_to_cpu(clock_info->evergreen.usMemoryClockLow); in radeon_atombios_parse_pplib_clock_info()
2516 mclk |= clock_info->evergreen.ucMemoryClockHigh << 16; in radeon_atombios_parse_pplib_clock_info()
2517 rdev->pm.power_state[state_index].clock_info[mode_index].mclk = mclk; in radeon_atombios_parse_pplib_clock_info()
2518 rdev->pm.power_state[state_index].clock_info[mode_index].sclk = sclk; in radeon_atombios_parse_pplib_clock_info()
2519 rdev->pm.power_state[state_index].clock_info[mode_index].voltage.type = in radeon_atombios_parse_pplib_clock_info()
2521 rdev->pm.power_state[state_index].clock_info[mode_index].voltage.voltage = in radeon_atombios_parse_pplib_clock_info()
2522 le16_to_cpu(clock_info->evergreen.usVDDC); in radeon_atombios_parse_pplib_clock_info()
2523 rdev->pm.power_state[state_index].clock_info[mode_index].voltage.vddci = in radeon_atombios_parse_pplib_clock_info()
2524 le16_to_cpu(clock_info->evergreen.usVDDCI); in radeon_atombios_parse_pplib_clock_info()
2526 sclk = le16_to_cpu(clock_info->r600.usEngineClockLow); in radeon_atombios_parse_pplib_clock_info()
2527 sclk |= clock_info->r600.ucEngineClockHigh << 16; in radeon_atombios_parse_pplib_clock_info()
2528 mclk = le16_to_cpu(clock_info->r600.usMemoryClockLow); in radeon_atombios_parse_pplib_clock_info()
2529 mclk |= clock_info->r600.ucMemoryClockHigh << 16; in radeon_atombios_parse_pplib_clock_info()
2530 rdev->pm.power_state[state_index].clock_info[mode_index].mclk = mclk; in radeon_atombios_parse_pplib_clock_info()
2531 rdev->pm.power_state[state_index].clock_info[mode_index].sclk = sclk; in radeon_atombios_parse_pplib_clock_info()
2532 rdev->pm.power_state[state_index].clock_info[mode_index].voltage.type = in radeon_atombios_parse_pplib_clock_info()
2534 rdev->pm.power_state[state_index].clock_info[mode_index].voltage.voltage = in radeon_atombios_parse_pplib_clock_info()
2535 le16_to_cpu(clock_info->r600.usVDDC); in radeon_atombios_parse_pplib_clock_info()
2539 switch (rdev->pm.power_state[state_index].clock_info[mode_index].voltage.voltage) { in radeon_atombios_parse_pplib_clock_info()
2549 rdev->pm.power_state[state_index].clock_info[mode_index].voltage.voltage, in radeon_atombios_parse_pplib_clock_info()
2551 rdev->pm.power_state[state_index].clock_info[mode_index].voltage.voltage = vddc; in radeon_atombios_parse_pplib_clock_info()
2557 if (rdev->flags & RADEON_IS_IGP) { in radeon_atombios_parse_pplib_clock_info()
2559 if (rdev->pm.power_state[state_index].clock_info[mode_index].sclk == 0) in radeon_atombios_parse_pplib_clock_info()
2563 if ((rdev->pm.power_state[state_index].clock_info[mode_index].mclk == 0) || in radeon_atombios_parse_pplib_clock_info()
2564 (rdev->pm.power_state[state_index].clock_info[mode_index].sclk == 0)) in radeon_atombios_parse_pplib_clock_info()
2572 struct radeon_mode_info *mode_info = &rdev->mode_info; in radeon_atombios_parse_power_table_4_5()
2584 if (!atom_parse_data_header(mode_info->atom_context, index, NULL, in radeon_atombios_parse_power_table_4_5()
2587 power_info = (union power_info *)(mode_info->atom_context->bios + data_offset); in radeon_atombios_parse_power_table_4_5()
2589 radeon_atombios_add_pplib_thermal_controller(rdev, &power_info->pplib.sThermalController); in radeon_atombios_parse_power_table_4_5()
2590 if (power_info->pplib.ucNumStates == 0) in radeon_atombios_parse_power_table_4_5()
2592 rdev->pm.power_state = kcalloc(power_info->pplib.ucNumStates, in radeon_atombios_parse_power_table_4_5()
2595 if (!rdev->pm.power_state) in radeon_atombios_parse_power_table_4_5()
2598 for (i = 0; i < power_info->pplib.ucNumStates; i++) { in radeon_atombios_parse_power_table_4_5()
2601 (mode_info->atom_context->bios + data_offset + in radeon_atombios_parse_power_table_4_5()
2602 le16_to_cpu(power_info->pplib.usStateArrayOffset) + in radeon_atombios_parse_power_table_4_5()
2603 i * power_info->pplib.ucStateEntrySize); in radeon_atombios_parse_power_table_4_5()
2605 (mode_info->atom_context->bios + data_offset + in radeon_atombios_parse_power_table_4_5()
2606 le16_to_cpu(power_info->pplib.usNonClockInfoArrayOffset) + in radeon_atombios_parse_power_table_4_5()
2607 (power_state->v1.ucNonClockStateIndex * in radeon_atombios_parse_power_table_4_5()
2608 power_info->pplib.ucNonClockSize)); in radeon_atombios_parse_power_table_4_5()
2609 rdev->pm.power_state[i].clock_info = in radeon_atombios_parse_power_table_4_5()
2610 kcalloc((power_info->pplib.ucStateEntrySize - 1) ? in radeon_atombios_parse_power_table_4_5()
2611 (power_info->pplib.ucStateEntrySize - 1) : 1, in radeon_atombios_parse_power_table_4_5()
2614 if (!rdev->pm.power_state[i].clock_info) in radeon_atombios_parse_power_table_4_5()
2616 if (power_info->pplib.ucStateEntrySize - 1) { in radeon_atombios_parse_power_table_4_5()
2617 for (j = 0; j < (power_info->pplib.ucStateEntrySize - 1); j++) { in radeon_atombios_parse_power_table_4_5()
2619 (mode_info->atom_context->bios + data_offset + in radeon_atombios_parse_power_table_4_5()
2620 le16_to_cpu(power_info->pplib.usClockInfoArrayOffset) + in radeon_atombios_parse_power_table_4_5()
2621 (power_state->v1.ucClockStateIndices[j] * in radeon_atombios_parse_power_table_4_5()
2622 power_info->pplib.ucClockInfoSize)); in radeon_atombios_parse_power_table_4_5()
2630 rdev->pm.power_state[state_index].clock_info[0].mclk = in radeon_atombios_parse_power_table_4_5()
2631 rdev->clock.default_mclk; in radeon_atombios_parse_power_table_4_5()
2632 rdev->pm.power_state[state_index].clock_info[0].sclk = in radeon_atombios_parse_power_table_4_5()
2633 rdev->clock.default_sclk; in radeon_atombios_parse_power_table_4_5()
2636 rdev->pm.power_state[state_index].num_clock_modes = mode_index; in radeon_atombios_parse_power_table_4_5()
2645 if (rdev->pm.power_state[i].num_clock_modes > 1) in radeon_atombios_parse_power_table_4_5()
2646 rdev->pm.power_state[i].clock_info[0].flags |= in radeon_atombios_parse_power_table_4_5()
2650 if (rdev->pm.default_power_state_index == -1) { in radeon_atombios_parse_power_table_4_5()
2651 rdev->pm.power_state[0].type = in radeon_atombios_parse_power_table_4_5()
2653 rdev->pm.default_power_state_index = 0; in radeon_atombios_parse_power_table_4_5()
2654 rdev->pm.power_state[0].default_clock_mode = in radeon_atombios_parse_power_table_4_5()
2655 &rdev->pm.power_state[0].clock_info[0]; in radeon_atombios_parse_power_table_4_5()
2662 struct radeon_mode_info *mode_info = &rdev->mode_info; in radeon_atombios_parse_power_table_6()
2678 if (!atom_parse_data_header(mode_info->atom_context, index, NULL, in radeon_atombios_parse_power_table_6()
2681 power_info = (union power_info *)(mode_info->atom_context->bios + data_offset); in radeon_atombios_parse_power_table_6()
2683 radeon_atombios_add_pplib_thermal_controller(rdev, &power_info->pplib.sThermalController); in radeon_atombios_parse_power_table_6()
2685 (mode_info->atom_context->bios + data_offset + in radeon_atombios_parse_power_table_6()
2686 le16_to_cpu(power_info->pplib.usStateArrayOffset)); in radeon_atombios_parse_power_table_6()
2688 (mode_info->atom_context->bios + data_offset + in radeon_atombios_parse_power_table_6()
2689 le16_to_cpu(power_info->pplib.usClockInfoArrayOffset)); in radeon_atombios_parse_power_table_6()
2691 (mode_info->atom_context->bios + data_offset + in radeon_atombios_parse_power_table_6()
2692 le16_to_cpu(power_info->pplib.usNonClockInfoArrayOffset)); in radeon_atombios_parse_power_table_6()
2693 if (state_array->ucNumEntries == 0) in radeon_atombios_parse_power_table_6()
2695 rdev->pm.power_state = kcalloc(state_array->ucNumEntries, in radeon_atombios_parse_power_table_6()
2698 if (!rdev->pm.power_state) in radeon_atombios_parse_power_table_6()
2700 power_state_offset = (u8 *)state_array->states; in radeon_atombios_parse_power_table_6()
2701 for (i = 0; i < state_array->ucNumEntries; i++) { in radeon_atombios_parse_power_table_6()
2704 non_clock_array_index = power_state->v2.nonClockInfoIndex; in radeon_atombios_parse_power_table_6()
2706 &non_clock_info_array->nonClockInfo[non_clock_array_index]; in radeon_atombios_parse_power_table_6()
2707 rdev->pm.power_state[i].clock_info = in radeon_atombios_parse_power_table_6()
2708 kcalloc(power_state->v2.ucNumDPMLevels ? in radeon_atombios_parse_power_table_6()
2709 power_state->v2.ucNumDPMLevels : 1, in radeon_atombios_parse_power_table_6()
2712 if (!rdev->pm.power_state[i].clock_info) in radeon_atombios_parse_power_table_6()
2714 if (power_state->v2.ucNumDPMLevels) { in radeon_atombios_parse_power_table_6()
2715 for (j = 0; j < power_state->v2.ucNumDPMLevels; j++) { in radeon_atombios_parse_power_table_6()
2716 clock_array_index = power_state->v2.clockInfoIndex[j]; in radeon_atombios_parse_power_table_6()
2718 &clock_info_array->clockInfo[clock_array_index * clock_info_array->ucEntrySize]; in radeon_atombios_parse_power_table_6()
2726 rdev->pm.power_state[state_index].clock_info[0].mclk = in radeon_atombios_parse_power_table_6()
2727 rdev->clock.default_mclk; in radeon_atombios_parse_power_table_6()
2728 rdev->pm.power_state[state_index].clock_info[0].sclk = in radeon_atombios_parse_power_table_6()
2729 rdev->clock.default_sclk; in radeon_atombios_parse_power_table_6()
2732 rdev->pm.power_state[state_index].num_clock_modes = mode_index; in radeon_atombios_parse_power_table_6()
2738 power_state_offset += 2 + power_state->v2.ucNumDPMLevels; in radeon_atombios_parse_power_table_6()
2742 if (rdev->pm.power_state[i].num_clock_modes > 1) in radeon_atombios_parse_power_table_6()
2743 rdev->pm.power_state[i].clock_info[0].flags |= in radeon_atombios_parse_power_table_6()
2747 if (rdev->pm.default_power_state_index == -1) { in radeon_atombios_parse_power_table_6()
2748 rdev->pm.power_state[0].type = in radeon_atombios_parse_power_table_6()
2750 rdev->pm.default_power_state_index = 0; in radeon_atombios_parse_power_table_6()
2751 rdev->pm.power_state[0].default_clock_mode = in radeon_atombios_parse_power_table_6()
2752 &rdev->pm.power_state[0].clock_info[0]; in radeon_atombios_parse_power_table_6()
2759 struct radeon_mode_info *mode_info = &rdev->mode_info; in radeon_atombios_get_power_modes()
2765 rdev->pm.default_power_state_index = -1; in radeon_atombios_get_power_modes()
2767 if (atom_parse_data_header(mode_info->atom_context, index, NULL, in radeon_atombios_get_power_modes()
2788 rdev->pm.power_state = kzalloc(sizeof(struct radeon_power_state), GFP_KERNEL); in radeon_atombios_get_power_modes()
2789 if (rdev->pm.power_state) { in radeon_atombios_get_power_modes()
2790 rdev->pm.power_state[0].clock_info = in radeon_atombios_get_power_modes()
2794 if (rdev->pm.power_state[0].clock_info) { in radeon_atombios_get_power_modes()
2796 rdev->pm.power_state[state_index].type = in radeon_atombios_get_power_modes()
2798 rdev->pm.power_state[state_index].num_clock_modes = 1; in radeon_atombios_get_power_modes()
2799 rdev->pm.power_state[state_index].clock_info[0].mclk = rdev->clock.default_mclk; in radeon_atombios_get_power_modes()
2800 rdev->pm.power_state[state_index].clock_info[0].sclk = rdev->clock.default_sclk; in radeon_atombios_get_power_modes()
2801 rdev->pm.power_state[state_index].default_clock_mode = in radeon_atombios_get_power_modes()
2802 &rdev->pm.power_state[state_index].clock_info[0]; in radeon_atombios_get_power_modes()
2803 rdev->pm.power_state[state_index].clock_info[0].voltage.type = VOLTAGE_NONE; in radeon_atombios_get_power_modes()
2804 rdev->pm.power_state[state_index].pcie_lanes = 16; in radeon_atombios_get_power_modes()
2805 rdev->pm.default_power_state_index = state_index; in radeon_atombios_get_power_modes()
2806 rdev->pm.power_state[state_index].flags = 0; in radeon_atombios_get_power_modes()
2812 rdev->pm.num_power_states = state_index; in radeon_atombios_get_power_modes()
2814 rdev->pm.current_power_state_index = rdev->pm.default_power_state_index; in radeon_atombios_get_power_modes()
2815 rdev->pm.current_clock_mode_index = 0; in radeon_atombios_get_power_modes()
2816 if (rdev->pm.default_power_state_index >= 0) in radeon_atombios_get_power_modes()
2817 rdev->pm.current_vddc = in radeon_atombios_get_power_modes()
2818 rdev->pm.power_state[rdev->pm.default_power_state_index].clock_info[0].voltage.voltage; in radeon_atombios_get_power_modes()
2820 rdev->pm.current_vddc = 0; in radeon_atombios_get_power_modes()
2846 if (!atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, &crev)) in radeon_atom_get_clock_dividers()
2847 return -EINVAL; in radeon_atom_get_clock_dividers()
2855 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_get_clock_dividers()
2857 dividers->post_div = args.v1.ucPostDiv; in radeon_atom_get_clock_dividers()
2858 dividers->fb_div = args.v1.ucFbDiv; in radeon_atom_get_clock_dividers()
2859 dividers->enable_post_div = true; in radeon_atom_get_clock_dividers()
2865 if (rdev->family <= CHIP_RV770) { in radeon_atom_get_clock_dividers()
2869 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_get_clock_dividers()
2871 dividers->post_div = args.v2.ucPostDiv; in radeon_atom_get_clock_dividers()
2872 dividers->fb_div = le16_to_cpu(args.v2.usFbDiv); in radeon_atom_get_clock_dividers()
2873 dividers->ref_div = args.v2.ucAction; in radeon_atom_get_clock_dividers()
2874 if (rdev->family == CHIP_RV770) { in radeon_atom_get_clock_dividers()
2875 dividers->enable_post_div = (le32_to_cpu(args.v2.ulClock) & (1 << 24)) ? in radeon_atom_get_clock_dividers()
2877 dividers->vco_mode = (le32_to_cpu(args.v2.ulClock) & (1 << 25)) ? 1 : 0; in radeon_atom_get_clock_dividers()
2879 dividers->enable_post_div = (dividers->fb_div & 1) ? true : false; in radeon_atom_get_clock_dividers()
2884 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_get_clock_dividers()
2886 dividers->post_div = args.v3.ucPostDiv; in radeon_atom_get_clock_dividers()
2887 dividers->enable_post_div = (args.v3.ucCntlFlag & in radeon_atom_get_clock_dividers()
2889 dividers->enable_dithen = (args.v3.ucCntlFlag & in radeon_atom_get_clock_dividers()
2891 dividers->whole_fb_div = le16_to_cpu(args.v3.ulFbDiv.usFbDiv); in radeon_atom_get_clock_dividers()
2892 dividers->frac_fb_div = le16_to_cpu(args.v3.ulFbDiv.usFbDivFrac); in radeon_atom_get_clock_dividers()
2893 dividers->ref_div = args.v3.ucRefDiv; in radeon_atom_get_clock_dividers()
2894 dividers->vco_mode = (args.v3.ucCntlFlag & in radeon_atom_get_clock_dividers()
2898 if (rdev->family >= CHIP_TAHITI) in radeon_atom_get_clock_dividers()
2899 return -EINVAL; in radeon_atom_get_clock_dividers()
2904 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_get_clock_dividers()
2906 dividers->post_div = args.v5.ucPostDiv; in radeon_atom_get_clock_dividers()
2907 dividers->enable_post_div = (args.v5.ucCntlFlag & in radeon_atom_get_clock_dividers()
2909 dividers->enable_dithen = (args.v5.ucCntlFlag & in radeon_atom_get_clock_dividers()
2911 dividers->whole_fb_div = le16_to_cpu(args.v5.ulFbDiv.usFbDiv); in radeon_atom_get_clock_dividers()
2912 dividers->frac_fb_div = le16_to_cpu(args.v5.ulFbDiv.usFbDivFrac); in radeon_atom_get_clock_dividers()
2913 dividers->ref_div = args.v5.ucRefDiv; in radeon_atom_get_clock_dividers()
2914 dividers->vco_mode = (args.v5.ucCntlFlag & in radeon_atom_get_clock_dividers()
2923 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_get_clock_dividers()
2925 dividers->post_divider = dividers->post_div = args.v4.ucPostDiv; in radeon_atom_get_clock_dividers()
2926 dividers->real_clock = le32_to_cpu(args.v4.ulClock); in radeon_atom_get_clock_dividers()
2934 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_get_clock_dividers()
2936 dividers->whole_fb_div = le16_to_cpu(args.v6_out.ulFbDiv.usFbDiv); in radeon_atom_get_clock_dividers()
2937 dividers->frac_fb_div = le16_to_cpu(args.v6_out.ulFbDiv.usFbDivFrac); in radeon_atom_get_clock_dividers()
2938 dividers->ref_div = args.v6_out.ucPllRefDiv; in radeon_atom_get_clock_dividers()
2939 dividers->post_div = args.v6_out.ucPllPostDiv; in radeon_atom_get_clock_dividers()
2940 dividers->flags = args.v6_out.ucPllCntlFlag; in radeon_atom_get_clock_dividers()
2941 dividers->real_clock = le32_to_cpu(args.v6_out.ulClock.ulClock); in radeon_atom_get_clock_dividers()
2942 dividers->post_divider = args.v6_out.ulClock.ucPostDiv; in radeon_atom_get_clock_dividers()
2945 return -EINVAL; in radeon_atom_get_clock_dividers()
2962 if (!atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, &crev)) in radeon_atom_get_memory_pll_dividers()
2963 return -EINVAL; in radeon_atom_get_memory_pll_dividers()
2975 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_get_memory_pll_dividers()
2977 mpll_param->clkfrac = le16_to_cpu(args.ulFbDiv.usFbDivFrac); in radeon_atom_get_memory_pll_dividers()
2978 mpll_param->clkf = le16_to_cpu(args.ulFbDiv.usFbDiv); in radeon_atom_get_memory_pll_dividers()
2979 mpll_param->post_div = args.ucPostDiv; in radeon_atom_get_memory_pll_dividers()
2980 mpll_param->dll_speed = args.ucDllSpeed; in radeon_atom_get_memory_pll_dividers()
2981 mpll_param->bwcntl = args.ucBWCntl; in radeon_atom_get_memory_pll_dividers()
2982 mpll_param->vco_mode = in radeon_atom_get_memory_pll_dividers()
2984 mpll_param->yclk_sel = in radeon_atom_get_memory_pll_dividers()
2986 mpll_param->qdr = in radeon_atom_get_memory_pll_dividers()
2988 mpll_param->half_rate = in radeon_atom_get_memory_pll_dividers()
2992 return -EINVAL; in radeon_atom_get_memory_pll_dividers()
2996 return -EINVAL; in radeon_atom_get_memory_pll_dividers()
3008 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_set_clock_gating()
3016 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_get_engine_clock()
3025 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_get_memory_clock()
3037 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_set_engine_clock()
3046 if (rdev->flags & RADEON_IS_IGP) in radeon_atom_set_memory_clock()
3051 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_set_memory_clock()
3070 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_set_engine_dram_timings()
3081 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_update_memory_dll()
3093 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_set_ac_timing()
3109 if (!atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, &crev)) in radeon_atom_set_voltage()
3137 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_set_voltage()
3147 if (!atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, &crev)) in radeon_atom_get_max_vddc()
3148 return -EINVAL; in radeon_atom_get_max_vddc()
3152 return -EINVAL; in radeon_atom_get_max_vddc()
3158 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_get_max_vddc()
3167 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_get_max_vddc()
3173 return -EINVAL; in radeon_atom_get_max_vddc()
3193 if (!atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, &crev)) in radeon_atom_get_leakage_id_from_vbios()
3194 return -EINVAL; in radeon_atom_get_leakage_id_from_vbios()
3203 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_get_leakage_id_from_vbios()
3209 return -EINVAL; in radeon_atom_get_leakage_id_from_vbios()
3230 if (!atom_parse_data_header(rdev->mode_info.atom_context, index, &size, in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3232 return -EINVAL; in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3235 (rdev->mode_info.atom_context->bios + data_offset); in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3239 return -EINVAL; in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3244 return -EINVAL; in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3246 (rdev->mode_info.atom_context->bios + data_offset + in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3247 le16_to_cpu(profile->usLeakageBinArrayOffset)); in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3249 (rdev->mode_info.atom_context->bios + data_offset + in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3250 le16_to_cpu(profile->usElbVDDC_IdArrayOffset)); in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3252 (rdev->mode_info.atom_context->bios + data_offset + in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3253 le16_to_cpu(profile->usElbVDDC_LevelArrayOffset)); in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3255 (rdev->mode_info.atom_context->bios + data_offset + in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3256 le16_to_cpu(profile->usElbVDDCI_IdArrayOffset)); in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3258 (rdev->mode_info.atom_context->bios + data_offset + in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3259 le16_to_cpu(profile->usElbVDDCI_LevelArrayOffset)); in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3261 if (profile->ucElbVDDC_Num > 0) { in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3262 for (i = 0; i < profile->ucElbVDDC_Num; i++) { in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3264 for (j = 0; j < profile->ucLeakageBinNum; j++) { in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3266 *vddc = vddc_buf[j * profile->ucElbVDDC_Num + i]; in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3274 if (profile->ucElbVDDCI_Num > 0) { in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3275 for (i = 0; i < profile->ucElbVDDCI_Num; i++) { in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3277 for (j = 0; j < profile->ucLeakageBinNum; j++) { in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3279 *vddci = vddci_buf[j * profile->ucElbVDDCI_Num + i]; in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3290 return -EINVAL; in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3295 return -EINVAL; in radeon_atom_get_leakage_vddc_based_on_leakage_params()
3312 u32 count = rdev->pm.dpm.dyn_state.vddc_dependency_on_sclk.count; in radeon_atom_get_voltage_evv()
3316 if (rdev->pm.dpm.dyn_state.vddc_dependency_on_sclk.entries[entry_id].v == in radeon_atom_get_voltage_evv()
3322 return -EINVAL; in radeon_atom_get_voltage_evv()
3328 cpu_to_le32(rdev->pm.dpm.dyn_state.vddc_dependency_on_sclk.entries[entry_id].clk); in radeon_atom_get_voltage_evv()
3330 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_get_voltage_evv()
3345 if (!atom_parse_cmd_header(rdev->mode_info.atom_context, index, &frev, &crev)) in radeon_atom_get_voltage_gpio_settings()
3346 return -EINVAL; in radeon_atom_get_voltage_gpio_settings()
3350 return -EINVAL; in radeon_atom_get_voltage_gpio_settings()
3356 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_get_voltage_gpio_settings()
3364 atom_execute_table(rdev->mode_info.atom_context, index, (uint32_t *)&args); in radeon_atom_get_voltage_gpio_settings()
3370 return -EINVAL; in radeon_atom_get_voltage_gpio_settings()
3391 u32 size = le16_to_cpu(v1->sHeader.usStructureSize); in atom_lookup_voltage_object_v1()
3397 if (vo->ucVoltageType == voltage_type) in atom_lookup_voltage_object_v1()
3400 vo->asFormula.ucNumOfVoltageEntries; in atom_lookup_voltage_object_v1()
3408 u32 size = le16_to_cpu(v2->sHeader.usStructureSize); in atom_lookup_voltage_object_v2()
3414 if (vo->ucVoltageType == voltage_type) in atom_lookup_voltage_object_v2()
3417 (vo->asFormula.ucNumOfVoltageEntries * sizeof(VOLTAGE_LUT_ENTRY)); in atom_lookup_voltage_object_v2()
3425 u32 size = le16_to_cpu(v3->sHeader.usStructureSize); in atom_lookup_voltage_object_v3()
3431 if ((vo->asGpioVoltageObj.sHeader.ucVoltageType == voltage_type) && in atom_lookup_voltage_object_v3()
3432 (vo->asGpioVoltageObj.sHeader.ucVoltageMode == voltage_mode)) in atom_lookup_voltage_object_v3()
3434 offset += le16_to_cpu(vo->asGpioVoltageObj.sHeader.usSize); in atom_lookup_voltage_object_v3()
3449 if (atom_parse_data_header(rdev->mode_info.atom_context, index, &size, in radeon_atom_is_voltage_gpio()
3452 (rdev->mode_info.atom_context->bios + data_offset); in radeon_atom_is_voltage_gpio()
3460 atom_lookup_voltage_object_v1(&voltage_info->v1, voltage_type); in radeon_atom_is_voltage_gpio()
3462 (voltage_object->v1.asControl.ucVoltageControlId == VOLTAGE_CONTROLLED_BY_GPIO)) in radeon_atom_is_voltage_gpio()
3467 atom_lookup_voltage_object_v2(&voltage_info->v2, voltage_type); in radeon_atom_is_voltage_gpio()
3469 (voltage_object->v2.asControl.ucVoltageControlId == VOLTAGE_CONTROLLED_BY_GPIO)) in radeon_atom_is_voltage_gpio()
3480 if (atom_lookup_voltage_object_v3(&voltage_info->v3, in radeon_atom_is_voltage_gpio()
3508 if (atom_parse_data_header(rdev->mode_info.atom_context, index, &size, in radeon_atom_get_svi2_info()
3511 (rdev->mode_info.atom_context->bios + data_offset); in radeon_atom_get_svi2_info()
3518 atom_lookup_voltage_object_v3(&voltage_info->v3, in radeon_atom_get_svi2_info()
3522 *svd_gpio_id = voltage_object->v3.asSVID2Obj.ucSVDGpioId; in radeon_atom_get_svi2_info()
3523 *svc_gpio_id = voltage_object->v3.asSVID2Obj.ucSVCGpioId; in radeon_atom_get_svi2_info()
3525 return -EINVAL; in radeon_atom_get_svi2_info()
3530 return -EINVAL; in radeon_atom_get_svi2_info()
3535 return -EINVAL; in radeon_atom_get_svi2_info()
3551 if (atom_parse_data_header(rdev->mode_info.atom_context, index, &size, in radeon_atom_get_max_voltage()
3554 (rdev->mode_info.atom_context->bios + data_offset); in radeon_atom_get_max_voltage()
3559 atom_lookup_voltage_object_v1(&voltage_info->v1, voltage_type); in radeon_atom_get_max_voltage()
3562 &voltage_object->v1.asFormula; in radeon_atom_get_max_voltage()
3563 if (formula->ucFlag & 1) in radeon_atom_get_max_voltage()
3565 le16_to_cpu(formula->usVoltageBaseLevel) + in radeon_atom_get_max_voltage()
3566 formula->ucNumOfVoltageEntries / 2 * in radeon_atom_get_max_voltage()
3567 le16_to_cpu(formula->usVoltageStep); in radeon_atom_get_max_voltage()
3570 le16_to_cpu(formula->usVoltageBaseLevel) + in radeon_atom_get_max_voltage()
3571 (formula->ucNumOfVoltageEntries - 1) * in radeon_atom_get_max_voltage()
3572 le16_to_cpu(formula->usVoltageStep); in radeon_atom_get_max_voltage()
3578 atom_lookup_voltage_object_v2(&voltage_info->v2, voltage_type); in radeon_atom_get_max_voltage()
3581 &voltage_object->v2.asFormula; in radeon_atom_get_max_voltage()
3582 if (formula->ucNumOfVoltageEntries) { in radeon_atom_get_max_voltage()
3584 ((u8 *)&formula->asVIDAdjustEntries[0] + in radeon_atom_get_max_voltage()
3585 (sizeof(VOLTAGE_LUT_ENTRY) * (formula->ucNumOfVoltageEntries - 1))); in radeon_atom_get_max_voltage()
3587 le16_to_cpu(lut->usVoltageValue); in radeon_atom_get_max_voltage()
3594 return -EINVAL; in radeon_atom_get_max_voltage()
3598 return -EINVAL; in radeon_atom_get_max_voltage()
3610 if (atom_parse_data_header(rdev->mode_info.atom_context, index, &size, in radeon_atom_get_min_voltage()
3613 (rdev->mode_info.atom_context->bios + data_offset); in radeon_atom_get_min_voltage()
3618 atom_lookup_voltage_object_v1(&voltage_info->v1, voltage_type); in radeon_atom_get_min_voltage()
3621 &voltage_object->v1.asFormula; in radeon_atom_get_min_voltage()
3623 le16_to_cpu(formula->usVoltageBaseLevel); in radeon_atom_get_min_voltage()
3629 atom_lookup_voltage_object_v2(&voltage_info->v2, voltage_type); in radeon_atom_get_min_voltage()
3632 &voltage_object->v2.asFormula; in radeon_atom_get_min_voltage()
3633 if (formula->ucNumOfVoltageEntries) { in radeon_atom_get_min_voltage()
3635 le16_to_cpu(formula->asVIDAdjustEntries[ in radeon_atom_get_min_voltage()
3644 return -EINVAL; in radeon_atom_get_min_voltage()
3648 return -EINVAL; in radeon_atom_get_min_voltage()
3660 if (atom_parse_data_header(rdev->mode_info.atom_context, index, &size, in radeon_atom_get_voltage_step()
3663 (rdev->mode_info.atom_context->bios + data_offset); in radeon_atom_get_voltage_step()
3668 atom_lookup_voltage_object_v1(&voltage_info->v1, voltage_type); in radeon_atom_get_voltage_step()
3671 &voltage_object->v1.asFormula; in radeon_atom_get_voltage_step()
3672 if (formula->ucFlag & 1) in radeon_atom_get_voltage_step()
3674 (le16_to_cpu(formula->usVoltageStep) + 1) / 2; in radeon_atom_get_voltage_step()
3677 le16_to_cpu(formula->usVoltageStep); in radeon_atom_get_voltage_step()
3682 return -EINVAL; in radeon_atom_get_voltage_step()
3685 return -EINVAL; in radeon_atom_get_voltage_step()
3689 return -EINVAL; in radeon_atom_get_voltage_step()
3700 return -EINVAL; in radeon_atom_round_to_true_voltage()
3702 return -EINVAL; in radeon_atom_round_to_true_voltage()
3704 return -EINVAL; in radeon_atom_round_to_true_voltage()
3712 ((nominal_voltage - min_voltage) / voltage_step) * in radeon_atom_round_to_true_voltage()
3729 if (atom_parse_data_header(rdev->mode_info.atom_context, index, &size, in radeon_atom_get_voltage_table()
3732 (rdev->mode_info.atom_context->bios + data_offset); in radeon_atom_get_voltage_table()
3740 return -EINVAL; in radeon_atom_get_voltage_table()
3743 atom_lookup_voltage_object_v2(&voltage_info->v2, voltage_type); in radeon_atom_get_voltage_table()
3746 &voltage_object->v2.asFormula; in radeon_atom_get_voltage_table()
3748 if (formula->ucNumOfVoltageEntries > MAX_VOLTAGE_ENTRIES) in radeon_atom_get_voltage_table()
3749 return -EINVAL; in radeon_atom_get_voltage_table()
3750 lut = &formula->asVIDAdjustEntries[0]; in radeon_atom_get_voltage_table()
3751 for (i = 0; i < formula->ucNumOfVoltageEntries; i++) { in radeon_atom_get_voltage_table()
3752 voltage_table->entries[i].value = in radeon_atom_get_voltage_table()
3753 le16_to_cpu(lut->usVoltageValue); in radeon_atom_get_voltage_table()
3755 voltage_table->entries[i].value, in radeon_atom_get_voltage_table()
3757 &voltage_table->entries[i].smio_low, in radeon_atom_get_voltage_table()
3758 &voltage_table->mask_low); in radeon_atom_get_voltage_table()
3764 voltage_table->count = formula->ucNumOfVoltageEntries; in radeon_atom_get_voltage_table()
3770 return -EINVAL; in radeon_atom_get_voltage_table()
3777 atom_lookup_voltage_object_v3(&voltage_info->v3, in radeon_atom_get_voltage_table()
3781 &voltage_object->v3.asGpioVoltageObj; in radeon_atom_get_voltage_table()
3783 if (gpio->ucGpioEntryNum > MAX_VOLTAGE_ENTRIES) in radeon_atom_get_voltage_table()
3784 return -EINVAL; in radeon_atom_get_voltage_table()
3785 lut = &gpio->asVolGpioLut[0]; in radeon_atom_get_voltage_table()
3786 for (i = 0; i < gpio->ucGpioEntryNum; i++) { in radeon_atom_get_voltage_table()
3787 voltage_table->entries[i].value = in radeon_atom_get_voltage_table()
3788 le16_to_cpu(lut->usVoltageValue); in radeon_atom_get_voltage_table()
3789 voltage_table->entries[i].smio_low = in radeon_atom_get_voltage_table()
3790 le32_to_cpu(lut->ulVoltageId); in radeon_atom_get_voltage_table()
3794 voltage_table->mask_low = le32_to_cpu(gpio->ulGpioMaskVal); in radeon_atom_get_voltage_table()
3795 voltage_table->count = gpio->ucGpioEntryNum; in radeon_atom_get_voltage_table()
3796 voltage_table->phase_delay = gpio->ucPhaseDelay; in radeon_atom_get_voltage_table()
3802 return -EINVAL; in radeon_atom_get_voltage_table()
3807 return -EINVAL; in radeon_atom_get_voltage_table()
3810 return -EINVAL; in radeon_atom_get_voltage_table()
3829 if (atom_parse_data_header(rdev->mode_info.atom_context, index, &size, in radeon_atom_get_memory_info()
3832 (rdev->mode_info.atom_context->bios + data_offset); in radeon_atom_get_memory_info()
3838 if (module_index < vram_info->v1_3.ucNumOfVRAMModule) { in radeon_atom_get_memory_info()
3840 (ATOM_VRAM_MODULE_V3 *)vram_info->v1_3.aVramInfo; in radeon_atom_get_memory_info()
3843 if (le16_to_cpu(vram_module->usSize) == 0) in radeon_atom_get_memory_info()
3844 return -EINVAL; in radeon_atom_get_memory_info()
3846 ((u8 *)vram_module + le16_to_cpu(vram_module->usSize)); in radeon_atom_get_memory_info()
3848 mem_info->mem_vendor = vram_module->asMemory.ucMemoryVenderID & 0xf; in radeon_atom_get_memory_info()
3849 mem_info->mem_type = vram_module->asMemory.ucMemoryType & 0xf0; in radeon_atom_get_memory_info()
3851 return -EINVAL; in radeon_atom_get_memory_info()
3855 if (module_index < vram_info->v1_4.ucNumOfVRAMModule) { in radeon_atom_get_memory_info()
3857 (ATOM_VRAM_MODULE_V4 *)vram_info->v1_4.aVramInfo; in radeon_atom_get_memory_info()
3860 if (le16_to_cpu(vram_module->usModuleSize) == 0) in radeon_atom_get_memory_info()
3861 return -EINVAL; in radeon_atom_get_memory_info()
3863 ((u8 *)vram_module + le16_to_cpu(vram_module->usModuleSize)); in radeon_atom_get_memory_info()
3865 mem_info->mem_vendor = vram_module->ucMemoryVenderID & 0xf; in radeon_atom_get_memory_info()
3866 mem_info->mem_type = vram_module->ucMemoryType & 0xf0; in radeon_atom_get_memory_info()
3868 return -EINVAL; in radeon_atom_get_memory_info()
3872 return -EINVAL; in radeon_atom_get_memory_info()
3879 if (module_index < vram_info->v2_1.ucNumOfVRAMModule) { in radeon_atom_get_memory_info()
3881 (ATOM_VRAM_MODULE_V7 *)vram_info->v2_1.aVramInfo; in radeon_atom_get_memory_info()
3884 if (le16_to_cpu(vram_module->usModuleSize) == 0) in radeon_atom_get_memory_info()
3885 return -EINVAL; in radeon_atom_get_memory_info()
3887 ((u8 *)vram_module + le16_to_cpu(vram_module->usModuleSize)); in radeon_atom_get_memory_info()
3889 mem_info->mem_vendor = vram_module->ucMemoryVenderID & 0xf; in radeon_atom_get_memory_info()
3890 mem_info->mem_type = vram_module->ucMemoryType & 0xf0; in radeon_atom_get_memory_info()
3892 return -EINVAL; in radeon_atom_get_memory_info()
3896 return -EINVAL; in radeon_atom_get_memory_info()
3901 return -EINVAL; in radeon_atom_get_memory_info()
3905 return -EINVAL; in radeon_atom_get_memory_info()
3921 if (atom_parse_data_header(rdev->mode_info.atom_context, index, &size, in radeon_atom_get_mclk_range_table()
3924 (rdev->mode_info.atom_context->bios + data_offset); in radeon_atom_get_mclk_range_table()
3930 return -EINVAL; in radeon_atom_get_mclk_range_table()
3933 if (module_index < vram_info->v1_4.ucNumOfVRAMModule) { in radeon_atom_get_mclk_range_table()
3935 (ATOM_VRAM_MODULE_V4 *)vram_info->v1_4.aVramInfo; in radeon_atom_get_mclk_range_table()
3939 if (le16_to_cpu(vram_module->usModuleSize) == 0) in radeon_atom_get_mclk_range_table()
3940 return -EINVAL; in radeon_atom_get_mclk_range_table()
3942 ((u8 *)vram_module + le16_to_cpu(vram_module->usModuleSize)); in radeon_atom_get_mclk_range_table()
3944 mclk_range_table->num_entries = (u8) in radeon_atom_get_mclk_range_table()
3945 ((le16_to_cpu(vram_module->usModuleSize) - offsetof(ATOM_VRAM_MODULE_V4, asMemTiming)) / in radeon_atom_get_mclk_range_table()
3947 format = &vram_module->asMemTiming[0]; in radeon_atom_get_mclk_range_table()
3948 for (i = 0; i < mclk_range_table->num_entries; i++) { in radeon_atom_get_mclk_range_table()
3949 mclk_range_table->mclk[i] = le32_to_cpu(format->ulClkRange); in radeon_atom_get_mclk_range_table()
3954 return -EINVAL; in radeon_atom_get_mclk_range_table()
3958 return -EINVAL; in radeon_atom_get_mclk_range_table()
3963 return -EINVAL; in radeon_atom_get_mclk_range_table()
3966 return -EINVAL; in radeon_atom_get_mclk_range_table()
3970 return -EINVAL; in radeon_atom_get_mclk_range_table()
3993 if (atom_parse_data_header(rdev->mode_info.atom_context, index, &size, in radeon_atom_init_mc_reg_table()
3996 (rdev->mode_info.atom_context->bios + data_offset); in radeon_atom_init_mc_reg_table()
4000 return -EINVAL; in radeon_atom_init_mc_reg_table()
4004 if (module_index < vram_info->v2_1.ucNumOfVRAMModule) { in radeon_atom_init_mc_reg_table()
4007 ((u8 *)vram_info + le16_to_cpu(vram_info->v2_1.usMemClkPatchTblOffset)); in radeon_atom_init_mc_reg_table()
4011 le16_to_cpu(reg_block->usRegIndexTblSize)); in radeon_atom_init_mc_reg_table()
4012 ATOM_INIT_REG_INDEX_FORMAT *format = &reg_block->asRegIndexBuf[0]; in radeon_atom_init_mc_reg_table()
4013 num_entries = (u8)((le16_to_cpu(reg_block->usRegIndexTblSize)) / in radeon_atom_init_mc_reg_table()
4014 sizeof(ATOM_INIT_REG_INDEX_FORMAT)) - 1; in radeon_atom_init_mc_reg_table()
4016 return -EINVAL; in radeon_atom_init_mc_reg_table()
4018 if (format->ucPreRegDataLength & ACCESS_PLACEHOLDER) in radeon_atom_init_mc_reg_table()
4020 reg_table->mc_reg_address[i].s1 = in radeon_atom_init_mc_reg_table()
4021 (u16)(le16_to_cpu(format->usRegIndex)); in radeon_atom_init_mc_reg_table()
4022 reg_table->mc_reg_address[i].pre_reg_data = in radeon_atom_init_mc_reg_table()
4023 (u8)(format->ucPreRegDataLength); in radeon_atom_init_mc_reg_table()
4028 reg_table->last = i; in radeon_atom_init_mc_reg_table()
4034 reg_table->mc_reg_table_entry[num_ranges].mclk_max = in radeon_atom_init_mc_reg_table()
4037 for (i = 0, j = 1; i < reg_table->last; i++) { in radeon_atom_init_mc_reg_table()
4038 if ((reg_table->mc_reg_address[i].pre_reg_data & LOW_NIBBLE_MASK) == DATA_FROM_TABLE) { in radeon_atom_init_mc_reg_table()
4039 reg_table->mc_reg_table_entry[num_ranges].mc_data[i] = in radeon_atom_init_mc_reg_table()
4042 } else if ((reg_table->mc_reg_address[i].pre_reg_data & LOW_NIBBLE_MASK) == DATA_EQU_PREV) { in radeon_atom_init_mc_reg_table()
4043 reg_table->mc_reg_table_entry[num_ranges].mc_data[i] = in radeon_atom_init_mc_reg_table()
4044 reg_table->mc_reg_table_entry[num_ranges].mc_data[i - 1]; in radeon_atom_init_mc_reg_table()
4050 ((u8 *)reg_data + le16_to_cpu(reg_block->usRegDataBlkSize)); in radeon_atom_init_mc_reg_table()
4053 return -EINVAL; in radeon_atom_init_mc_reg_table()
4054 reg_table->num_entries = num_ranges; in radeon_atom_init_mc_reg_table()
4056 return -EINVAL; in radeon_atom_init_mc_reg_table()
4060 return -EINVAL; in radeon_atom_init_mc_reg_table()
4065 return -EINVAL; in radeon_atom_init_mc_reg_table()
4069 return -EINVAL; in radeon_atom_init_mc_reg_table()
4074 struct radeon_device *rdev = dev->dev_private; in radeon_atom_initialize_bios_scratch_regs()
4077 if (rdev->family >= CHIP_R600) { in radeon_atom_initialize_bios_scratch_regs()
4095 if (rdev->family >= CHIP_R600) { in radeon_atom_initialize_bios_scratch_regs()
4110 if (rdev->family >= CHIP_R600) in radeon_save_bios_scratch_regs()
4116 rdev->bios_scratch[i] = RREG32(scratch_reg + (i * 4)); in radeon_save_bios_scratch_regs()
4124 if (rdev->family >= CHIP_R600) in radeon_restore_bios_scratch_regs()
4130 WREG32(scratch_reg + (i * 4), rdev->bios_scratch[i]); in radeon_restore_bios_scratch_regs()
4135 struct drm_device *dev = encoder->dev; in radeon_atom_output_lock()
4136 struct radeon_device *rdev = dev->dev_private; in radeon_atom_output_lock()
4139 if (rdev->family >= CHIP_R600) in radeon_atom_output_lock()
4152 if (rdev->family >= CHIP_R600) in radeon_atom_output_lock()
4164 struct drm_device *dev = connector->dev; in radeon_atombios_connected_scratch_regs()
4165 struct radeon_device *rdev = dev->dev_private; in radeon_atombios_connected_scratch_regs()
4171 if (rdev->family >= CHIP_R600) { in radeon_atombios_connected_scratch_regs()
4181 if ((radeon_encoder->devices & ATOM_DEVICE_TV1_SUPPORT) && in radeon_atombios_connected_scratch_regs()
4182 (radeon_connector->devices & ATOM_DEVICE_TV1_SUPPORT)) { in radeon_atombios_connected_scratch_regs()
4194 if ((radeon_encoder->devices & ATOM_DEVICE_CV_SUPPORT) && in radeon_atombios_connected_scratch_regs()
4195 (radeon_connector->devices & ATOM_DEVICE_CV_SUPPORT)) { in radeon_atombios_connected_scratch_regs()
4207 if ((radeon_encoder->devices & ATOM_DEVICE_LCD1_SUPPORT) && in radeon_atombios_connected_scratch_regs()
4208 (radeon_connector->devices & ATOM_DEVICE_LCD1_SUPPORT)) { in radeon_atombios_connected_scratch_regs()
4221 if ((radeon_encoder->devices & ATOM_DEVICE_CRT1_SUPPORT) && in radeon_atombios_connected_scratch_regs()
4222 (radeon_connector->devices & ATOM_DEVICE_CRT1_SUPPORT)) { in radeon_atombios_connected_scratch_regs()
4235 if ((radeon_encoder->devices & ATOM_DEVICE_CRT2_SUPPORT) && in radeon_atombios_connected_scratch_regs()
4236 (radeon_connector->devices & ATOM_DEVICE_CRT2_SUPPORT)) { in radeon_atombios_connected_scratch_regs()
4249 if ((radeon_encoder->devices & ATOM_DEVICE_DFP1_SUPPORT) && in radeon_atombios_connected_scratch_regs()
4250 (radeon_connector->devices & ATOM_DEVICE_DFP1_SUPPORT)) { in radeon_atombios_connected_scratch_regs()
4263 if ((radeon_encoder->devices & ATOM_DEVICE_DFP2_SUPPORT) && in radeon_atombios_connected_scratch_regs()
4264 (radeon_connector->devices & ATOM_DEVICE_DFP2_SUPPORT)) { in radeon_atombios_connected_scratch_regs()
4277 if ((radeon_encoder->devices & ATOM_DEVICE_DFP3_SUPPORT) && in radeon_atombios_connected_scratch_regs()
4278 (radeon_connector->devices & ATOM_DEVICE_DFP3_SUPPORT)) { in radeon_atombios_connected_scratch_regs()
4291 if ((radeon_encoder->devices & ATOM_DEVICE_DFP4_SUPPORT) && in radeon_atombios_connected_scratch_regs()
4292 (radeon_connector->devices & ATOM_DEVICE_DFP4_SUPPORT)) { in radeon_atombios_connected_scratch_regs()
4305 if ((radeon_encoder->devices & ATOM_DEVICE_DFP5_SUPPORT) && in radeon_atombios_connected_scratch_regs()
4306 (radeon_connector->devices & ATOM_DEVICE_DFP5_SUPPORT)) { in radeon_atombios_connected_scratch_regs()
4319 if ((radeon_encoder->devices & ATOM_DEVICE_DFP6_SUPPORT) && in radeon_atombios_connected_scratch_regs()
4320 (radeon_connector->devices & ATOM_DEVICE_DFP6_SUPPORT)) { in radeon_atombios_connected_scratch_regs()
4334 if (rdev->family >= CHIP_R600) { in radeon_atombios_connected_scratch_regs()
4348 struct drm_device *dev = encoder->dev; in radeon_atombios_encoder_crtc_scratch_regs()
4349 struct radeon_device *rdev = dev->dev_private; in radeon_atombios_encoder_crtc_scratch_regs()
4356 if (rdev->family >= CHIP_R600) in radeon_atombios_encoder_crtc_scratch_regs()
4361 if (radeon_encoder->devices & ATOM_DEVICE_TV1_SUPPORT) { in radeon_atombios_encoder_crtc_scratch_regs()
4365 if (radeon_encoder->devices & ATOM_DEVICE_CV_SUPPORT) { in radeon_atombios_encoder_crtc_scratch_regs()
4369 if (radeon_encoder->devices & ATOM_DEVICE_CRT1_SUPPORT) { in radeon_atombios_encoder_crtc_scratch_regs()
4373 if (radeon_encoder->devices & ATOM_DEVICE_CRT2_SUPPORT) { in radeon_atombios_encoder_crtc_scratch_regs()
4377 if (radeon_encoder->devices & ATOM_DEVICE_LCD1_SUPPORT) { in radeon_atombios_encoder_crtc_scratch_regs()
4381 if (radeon_encoder->devices & ATOM_DEVICE_DFP1_SUPPORT) { in radeon_atombios_encoder_crtc_scratch_regs()
4385 if (radeon_encoder->devices & ATOM_DEVICE_DFP2_SUPPORT) { in radeon_atombios_encoder_crtc_scratch_regs()
4389 if (radeon_encoder->devices & ATOM_DEVICE_DFP3_SUPPORT) { in radeon_atombios_encoder_crtc_scratch_regs()
4394 if (rdev->family >= CHIP_R600) in radeon_atombios_encoder_crtc_scratch_regs()
4403 struct drm_device *dev = encoder->dev; in radeon_atombios_encoder_dpms_scratch_regs()
4404 struct radeon_device *rdev = dev->dev_private; in radeon_atombios_encoder_dpms_scratch_regs()
4411 if (rdev->family >= CHIP_R600) in radeon_atombios_encoder_dpms_scratch_regs()
4416 if (radeon_encoder->devices & ATOM_DEVICE_TV1_SUPPORT) { in radeon_atombios_encoder_dpms_scratch_regs()
4422 if (radeon_encoder->devices & ATOM_DEVICE_CV_SUPPORT) { in radeon_atombios_encoder_dpms_scratch_regs()
4428 if (radeon_encoder->devices & ATOM_DEVICE_CRT1_SUPPORT) { in radeon_atombios_encoder_dpms_scratch_regs()
4434 if (radeon_encoder->devices & ATOM_DEVICE_CRT2_SUPPORT) { in radeon_atombios_encoder_dpms_scratch_regs()
4440 if (radeon_encoder->devices & ATOM_DEVICE_LCD1_SUPPORT) { in radeon_atombios_encoder_dpms_scratch_regs()
4446 if (radeon_encoder->devices & ATOM_DEVICE_DFP1_SUPPORT) { in radeon_atombios_encoder_dpms_scratch_regs()
4452 if (radeon_encoder->devices & ATOM_DEVICE_DFP2_SUPPORT) { in radeon_atombios_encoder_dpms_scratch_regs()
4458 if (radeon_encoder->devices & ATOM_DEVICE_DFP3_SUPPORT) { in radeon_atombios_encoder_dpms_scratch_regs()
4464 if (radeon_encoder->devices & ATOM_DEVICE_DFP4_SUPPORT) { in radeon_atombios_encoder_dpms_scratch_regs()
4470 if (radeon_encoder->devices & ATOM_DEVICE_DFP5_SUPPORT) { in radeon_atombios_encoder_dpms_scratch_regs()
4477 if (rdev->family >= CHIP_R600) in radeon_atombios_encoder_dpms_scratch_regs()