Hack up ACPI memory-mapped I/O for intel_opregion.c. This is absolutely the wrong thing, but . it will probably work for now, . it is much more expedient than rewriting all this code with NetBSD bus space access or drm maps, and . the problem remains marked so that it is easily greppable.diff -r1.1.1.1.2.11 -r1.1.1.1.2.12 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h
(riastradh)
--- src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h 2013/07/24 03:21:23 1.1.1.1.2.11
+++ src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h 2013/07/24 03:27:35 1.1.1.1.2.12
@@ -135,36 +135,46 @@ struct intel_ddi_plls { | @@ -135,36 +135,46 @@ struct intel_ddi_plls { | |||
135 | struct drm_i915_gem_phys_object { | 135 | struct drm_i915_gem_phys_object { | |
136 | int id; | 136 | int id; | |
137 | struct page **page_list; | 137 | struct page **page_list; | |
138 | drm_dma_handle_t *handle; | 138 | drm_dma_handle_t *handle; | |
139 | struct drm_i915_gem_object *cur_obj; | 139 | struct drm_i915_gem_object *cur_obj; | |
140 | }; | 140 | }; | |
141 | 141 | |||
142 | struct opregion_header; | 142 | struct opregion_header; | |
143 | struct opregion_acpi; | 143 | struct opregion_acpi; | |
144 | struct opregion_swsci; | 144 | struct opregion_swsci; | |
145 | struct opregion_asle; | 145 | struct opregion_asle; | |
146 | struct drm_i915_private; | 146 | struct drm_i915_private; | |
147 | 147 | |||
148 | #ifdef __NetBSD__ /* XXX acpi iomem */ | |||
149 | # define __acpi_iomem | |||
150 | # define __iomem __acpi_iomem | |||
151 | #endif | |||
152 | ||||
148 | struct intel_opregion { | 153 | struct intel_opregion { | |
149 | struct opregion_header __iomem *header; | 154 | struct opregion_header __iomem *header; | |
150 | struct opregion_acpi __iomem *acpi; | 155 | struct opregion_acpi __iomem *acpi; | |
151 | struct opregion_swsci __iomem *swsci; | 156 | struct opregion_swsci __iomem *swsci; | |
152 | struct opregion_asle __iomem *asle; | 157 | struct opregion_asle __iomem *asle; | |
153 | void __iomem *vbt; | 158 | void __iomem *vbt; | |
154 | u32 __iomem *lid_state; | 159 | u32 __iomem *lid_state; | |
155 | }; | 160 | }; | |
156 | #define OPREGION_SIZE (8*1024) | 161 | #define OPREGION_SIZE (8*1024) | |
157 | 162 | |||
163 | #ifdef __NetBSD__ /* XXX acpi iomem */ | |||
164 | # undef __acpi_iomem | |||
165 | # undef __iomem | |||
166 | #endif | |||
167 | ||||
158 | struct intel_overlay; | 168 | struct intel_overlay; | |
159 | struct intel_overlay_error_state; | 169 | struct intel_overlay_error_state; | |
160 | 170 | |||
161 | struct drm_i915_master_private { | 171 | struct drm_i915_master_private { | |
162 | drm_local_map_t *sarea; | 172 | drm_local_map_t *sarea; | |
163 | struct _drm_i915_sarea *sarea_priv; | 173 | struct _drm_i915_sarea *sarea_priv; | |
164 | }; | 174 | }; | |
165 | #define I915_FENCE_REG_NONE -1 | 175 | #define I915_FENCE_REG_NONE -1 | |
166 | #define I915_MAX_NUM_FENCES 16 | 176 | #define I915_MAX_NUM_FENCES 16 | |
167 | /* 16 fences + sign bit for FENCE_REG_NONE */ | 177 | /* 16 fences + sign bit for FENCE_REG_NONE */ | |
168 | #define I915_MAX_NUM_FENCE_BITS 5 | 178 | #define I915_MAX_NUM_FENCE_BITS 5 | |
169 | 179 | |||
170 | struct drm_i915_fence_reg { | 180 | struct drm_i915_fence_reg { |
--- src/sys/external/bsd/drm2/dist/drm/i915/Attic/intel_opregion.c 2013/07/23 21:28:22 1.1.1.1.2.2
+++ src/sys/external/bsd/drm2/dist/drm/i915/Attic/intel_opregion.c 2013/07/24 03:27:35 1.1.1.1.2.3
@@ -42,26 +42,47 @@ | @@ -42,26 +42,47 @@ | |||
42 | #define OPREGION_HEADER_OFFSET 0 | 42 | #define OPREGION_HEADER_OFFSET 0 | |
43 | #define OPREGION_ACPI_OFFSET 0x100 | 43 | #define OPREGION_ACPI_OFFSET 0x100 | |
44 | #define ACPI_CLID 0x01ac /* current lid state indicator */ | 44 | #define ACPI_CLID 0x01ac /* current lid state indicator */ | |
45 | #define ACPI_CDCK 0x01b0 /* current docking state indicator */ | 45 | #define ACPI_CDCK 0x01b0 /* current docking state indicator */ | |
46 | #define OPREGION_SWSCI_OFFSET 0x200 | 46 | #define OPREGION_SWSCI_OFFSET 0x200 | |
47 | #define OPREGION_ASLE_OFFSET 0x300 | 47 | #define OPREGION_ASLE_OFFSET 0x300 | |
48 | #define OPREGION_VBT_OFFSET 0x400 | 48 | #define OPREGION_VBT_OFFSET 0x400 | |
49 | 49 | |||
50 | #define OPREGION_SIGNATURE "IntelGraphicsMem" | 50 | #define OPREGION_SIGNATURE "IntelGraphicsMem" | |
51 | #define MBOX_ACPI (1<<0) | 51 | #define MBOX_ACPI (1<<0) | |
52 | #define MBOX_SWSCI (1<<1) | 52 | #define MBOX_SWSCI (1<<1) | |
53 | #define MBOX_ASLE (1<<2) | 53 | #define MBOX_ASLE (1<<2) | |
54 | 54 | |||
55 | #ifdef __NetBSD__ /* XXX acpi iomem */ | |||
56 | # define __iomem __acpi_iomem | |||
57 | ||||
58 | static inline uint32_t | |||
59 | ioread32(const uint32_t __acpi_iomem *ptr) | |||
60 | { | |||
61 | const uint32_t value = *ptr; | |||
62 | ||||
63 | __insn_barrier(); | |||
64 | return value; | |||
65 | } | |||
66 | ||||
67 | static inline void | |||
68 | iowrite32(uint32_t value, uint32_t __acpi_iomem *ptr) | |||
69 | { | |||
70 | ||||
71 | __insn_barrier(); | |||
72 | *ptr = value; | |||
73 | } | |||
74 | #endif | |||
75 | ||||
55 | struct opregion_header { | 76 | struct opregion_header { | |
56 | u8 signature[16]; | 77 | u8 signature[16]; | |
57 | u32 size; | 78 | u32 size; | |
58 | u32 opregion_ver; | 79 | u32 opregion_ver; | |
59 | u8 bios_ver[32]; | 80 | u8 bios_ver[32]; | |
60 | u8 vbios_ver[16]; | 81 | u8 vbios_ver[16]; | |
61 | u8 driver_ver[16]; | 82 | u8 driver_ver[16]; | |
62 | u32 mboxes; | 83 | u32 mboxes; | |
63 | u8 reserved[164]; | 84 | u8 reserved[164]; | |
64 | } __attribute__((packed)); | 85 | } __attribute__((packed)); | |
65 | 86 | |||
66 | /* OpRegion mailbox #1: public ACPI methods */ | 87 | /* OpRegion mailbox #1: public ACPI methods */ | |
67 | struct opregion_acpi { | 88 | struct opregion_acpi { |