Lines Matching defs:opregion

132 	u64 rvda;	/* Physical (2.0) or relative from opregion (2.1+)
255 struct opregion_swsci *swsci = i915->display.opregion.swsci;
268 if ((i915->display.opregion.swsci_sbcb_sub_functions &
272 if ((i915->display.opregion.swsci_gbda_sub_functions &
283 struct opregion_swsci *swsci = dev_priv->display.opregion.swsci;
465 struct opregion_asle *asle = dev_priv->display.opregion.asle;
472 "opregion backlight request ignored\n");
490 drm_dbg_kms(&dev_priv->drm, "updating opregion backlight %d/255\n",
587 struct intel_opregion *opregion =
590 container_of(opregion, struct drm_i915_private, display.opregion);
591 struct opregion_asle *asle = dev_priv->display.opregion.asle;
639 if (dev_priv->display.opregion.asle)
641 &dev_priv->display.opregion.asle_work);
651 * The only video events relevant to opregion are 0x80. These indicate either a
658 struct intel_opregion *opregion = container_of(nb, struct intel_opregion,
667 acpi = opregion->acpi;
678 * Initialise the DIDL field in opregion. This passes a list of devices to
683 static void set_did(struct intel_opregion *opregion, int i, u32 val)
685 if (i < ARRAY_SIZE(opregion->acpi->didl)) {
686 opregion->acpi->didl[i] = val;
688 i -= ARRAY_SIZE(opregion->acpi->didl);
690 if (WARN_ON(i >= ARRAY_SIZE(opregion->acpi->did2)))
693 opregion->acpi->did2[i] = val;
699 struct intel_opregion *opregion = &dev_priv->display.opregion;
705 * In theory, did2, the extended didl, gets added at opregion version
711 max_outputs = ARRAY_SIZE(opregion->acpi->didl) +
712 ARRAY_SIZE(opregion->acpi->did2);
719 set_did(opregion, i, connector->acpi_device_id);
733 set_did(opregion, i, 0);
738 struct intel_opregion *opregion = &dev_priv->display.opregion;
755 if (i >= ARRAY_SIZE(opregion->acpi->cadl))
757 opregion->acpi->cadl[i++] = connector->acpi_device_id;
762 if (i < ARRAY_SIZE(opregion->acpi->cadl))
763 opregion->acpi->cadl[i] = 0;
770 struct intel_opregion *opregion = &dev_priv->display.opregion;
775 opregion->swsci_gbda_sub_functions = 1;
776 opregion->swsci_sbcb_sub_functions = 1;
782 opregion->swsci_gbda_sub_functions |= tmp;
792 opregion->swsci_sbcb_sub_functions |= tmp;
809 u32 req = opregion->swsci_sbcb_sub_functions;
815 /* opregion->swsci_sbcb_sub_functions &= tmp; */
817 opregion->swsci_sbcb_sub_functions |= tmp;
823 opregion->swsci_gbda_sub_functions,
824 opregion->swsci_sbcb_sub_functions);
848 struct intel_opregion *opregion = &dev_priv->display.opregion;
869 opregion->vbt_firmware = kmemdup(fw->data, fw->size, GFP_KERNEL);
870 if (opregion->vbt_firmware) {
873 opregion->vbt = opregion->vbt_firmware;
874 opregion->vbt_size = fw->size;
892 struct intel_opregion *opregion = &dev_priv->display.opregion;
908 drm_dbg(&dev_priv->drm, "graphic opregion physical addr: 0x%x\n",
915 INIT_WORK(&opregion->asle_work, asle_work);
931 drm_dbg(&dev_priv->drm, "opregion signature mismatch\n");
935 opregion->header = base;
936 opregion->lid_state = base + ACPI_CLID;
939 opregion->header->over.major,
940 opregion->header->over.minor,
941 opregion->header->over.revision);
943 mboxes = opregion->header->mboxes;
946 opregion->acpi = base + OPREGION_ACPI_OFFSET;
953 opregion->acpi->chpd = 1;
957 u8 major = opregion->header->over.major;
960 drm_err(&dev_priv->drm, "SWSCI Mailbox #2 present for opregion v3.x, ignoring\n");
963 drm_dbg(&dev_priv->drm, "SWSCI Mailbox #2 present for opregion v2.x\n");
965 opregion->swsci = base + OPREGION_SWSCI_OFFSET;
972 opregion->asle = base + OPREGION_ASLE_OFFSET;
974 opregion->asle->ardy = ASLE_ARDY_NOT_READY;
979 opregion->asle_ext = base + OPREGION_ASLE_EXT_OFFSET;
992 if (opregion->header->over.major >= 2 && opregion->asle &&
993 opregion->asle->rvda && opregion->asle->rvds) {
994 resource_size_t rvda = opregion->asle->rvda;
997 * opregion 2.0: rvda is the physical VBT address.
999 * opregion 2.1+: rvda is unsigned, relative offset from
1000 * opregion base, and should never point within opregion.
1002 if (opregion->header->over.major > 2 ||
1003 opregion->header->over.minor >= 1) {
1010 opregion->rvda = memremap(rvda, opregion->asle->rvds,
1013 if (bus_space_map(dev_priv->bst, rvda, opregion->asle->rvds,
1016 opregion->rvda = bus_space_vaddr(dev_priv->bst,
1018 dev_priv->opregion_rvda_size = opregion->asle->rvds;
1021 vbt = opregion->rvda;
1022 vbt_size = opregion->asle->rvds;
1026 opregion->vbt = vbt;
1027 opregion->vbt_size = vbt_size;
1033 memunmap(opregion->rvda);
1038 opregion->rvda = NULL;
1056 opregion->vbt = vbt;
1057 opregion->vbt_size = vbt_size;
1144 struct intel_opregion *opregion = &i915->display.opregion;
1149 if (!opregion->asle_ext)
1152 edid = opregion->asle_ext->bddc;
1155 len = (opregion->asle_ext->phed & ASLE_PHED_EDID_VALID_MASK) * 128;
1172 struct intel_opregion *opregion = &i915->display.opregion;
1173 struct opregion_header *header = opregion->header;
1179 return opregion->header->pcon & PCON_HEADLESS_SKU;
1184 struct intel_opregion *opregion = &i915->display.opregion;
1186 if (!opregion->header)
1189 if (opregion->acpi) {
1191 opregion->acpi_notifier.notifier_call =
1193 register_acpi_notifier(&opregion->acpi_notifier);
1202 struct intel_opregion *opregion = &i915->display.opregion;
1204 if (opregion->acpi) {
1215 opregion->acpi->csts = 0;
1216 opregion->acpi->drdy = 1;
1219 if (opregion->asle) {
1220 opregion->asle->tche = ASLE_TCHE_BLC_EN;
1221 opregion->asle->ardy = ASLE_ARDY_READY;
1230 struct intel_opregion *opregion = &i915->display.opregion;
1232 if (!opregion->header)
1243 struct intel_opregion *opregion = &i915->display.opregion;
1245 if (opregion->asle)
1246 opregion->asle->ardy = ASLE_ARDY_NOT_READY;
1248 cancel_work_sync(&i915->display.opregion.asle_work);
1250 if (opregion->acpi)
1251 opregion->acpi->drdy = 0;
1256 struct intel_opregion *opregion = &i915->display.opregion;
1258 if (!opregion->header)
1269 struct intel_opregion *opregion = &i915->display.opregion;
1273 if (!opregion->header)
1276 if (opregion->acpi_notifier.notifier_call) {
1277 unregister_acpi_notifier(&opregion->acpi_notifier);
1278 opregion->acpi_notifier.notifier_call = NULL;
1284 struct intel_opregion *opregion = &i915->display.opregion;
1286 if (!opregion->header)
1289 /* just clear all opregion memory pointers now */
1291 memunmap(opregion->header);
1292 if (opregion->rvda) {
1293 memunmap(opregion->rvda);
1294 opregion->rvda = NULL;
1298 if (opregion->rvda) {
1301 opregion->rvda = NULL;
1304 if (opregion->vbt_firmware) {
1305 kfree(opregion->vbt_firmware);
1306 opregion->vbt_firmware = NULL;
1308 opregion->header = NULL;
1309 opregion->acpi = NULL;
1310 opregion->swsci = NULL;
1311 opregion->asle = NULL;
1312 opregion->asle_ext = NULL;
1313 opregion->vbt = NULL;
1314 opregion->lid_state = NULL;