Wed Jul 24 03:27:35 2013 UTC ()
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.


(riastradh)
diff -r1.1.1.1.2.11 -r1.1.1.1.2.12 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h
diff -r1.1.1.1.2.2 -r1.1.1.1.2.3 src/sys/external/bsd/drm2/dist/drm/i915/intel_opregion.c

cvs diff -r1.1.1.1.2.11 -r1.1.1.1.2.12 src/sys/external/bsd/drm2/dist/drm/i915/i915_drv.h (expand / switch to unified diff)

--- 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 {
135struct drm_i915_gem_phys_object { 135struct 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
142struct opregion_header; 142struct opregion_header;
143struct opregion_acpi; 143struct opregion_acpi;
144struct opregion_swsci; 144struct opregion_swsci;
145struct opregion_asle; 145struct opregion_asle;
146struct drm_i915_private; 146struct drm_i915_private;
147 147
 148#ifdef __NetBSD__ /* XXX acpi iomem */
 149# define __acpi_iomem
 150# define __iomem __acpi_iomem
 151#endif
 152
148struct intel_opregion { 153struct 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
158struct intel_overlay; 168struct intel_overlay;
159struct intel_overlay_error_state; 169struct intel_overlay_error_state;
160 170
161struct drm_i915_master_private { 171struct 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
170struct drm_i915_fence_reg { 180struct drm_i915_fence_reg {

cvs diff -r1.1.1.1.2.2 -r1.1.1.1.2.3 src/sys/external/bsd/drm2/dist/drm/i915/Attic/intel_opregion.c (expand / switch to unified diff)

--- 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
 58static inline uint32_t
 59ioread32(const uint32_t __acpi_iomem *ptr)
 60{
 61 const uint32_t value = *ptr;
 62
 63 __insn_barrier();
 64 return value;
 65}
 66
 67static inline void
 68iowrite32(uint32_t value, uint32_t __acpi_iomem *ptr)
 69{
 70
 71 __insn_barrier();
 72 *ptr = value;
 73}
 74#endif
 75
55struct opregion_header { 76struct 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 */
67struct opregion_acpi { 88struct opregion_acpi {