Wed Jul 24 02:47:05 2013 UTC ()
Add operations to drmP.h for access to drm_local_map memory or I/O.


(riastradh)
diff -r1.1.1.1.2.37 -r1.1.1.1.2.38 src/sys/external/bsd/drm2/dist/include/drm/drmP.h

cvs diff -r1.1.1.1.2.37 -r1.1.1.1.2.38 src/sys/external/bsd/drm2/dist/include/drm/Attic/drmP.h (expand / switch to unified diff)

--- src/sys/external/bsd/drm2/dist/include/drm/Attic/drmP.h 2013/07/24 02:46:49 1.1.1.1.2.37
+++ src/sys/external/bsd/drm2/dist/include/drm/Attic/drmP.h 2013/07/24 02:47:05 1.1.1.1.2.38
@@ -1977,15 +1977,113 @@ extern int drm_get_platform_dev(struct p @@ -1977,15 +1977,113 @@ extern int drm_get_platform_dev(struct p
1977 1977
1978/* returns true if currently okay to sleep */ 1978/* returns true if currently okay to sleep */
1979static __inline__ bool drm_can_sleep(void) 1979static __inline__ bool drm_can_sleep(void)
1980{ 1980{
1981#ifdef __NetBSD__ 1981#ifdef __NetBSD__
1982 return false; /* XXX */ 1982 return false; /* XXX */
1983#else 1983#else
1984 if (in_atomic() || in_dbg_master() || irqs_disabled()) 1984 if (in_atomic() || in_dbg_master() || irqs_disabled())
1985 return false; 1985 return false;
1986 return true; 1986 return true;
1987#endif 1987#endif
1988} 1988}
1989 1989
 1990#ifdef __NetBSD__
 1991static inline bool
 1992DRM_IS_BUS_SPACE(struct drm_local_map *map)
 1993{
 1994 switch (map->type) {
 1995 case _DRM_FRAME_BUFFER:
 1996 panic("I don't know how to access drm frame buffer memory!");
 1997
 1998 case _DRM_REGISTERS:
 1999 return true;
 2000
 2001 case _DRM_SHM:
 2002 panic("I don't know how to access drm shared memory!");
 2003
 2004 case _DRM_AGP:
 2005 panic("I don't know how to access drm agp memory!");
 2006
 2007 case _DRM_SCATTER_GATHER:
 2008 panic("I don't know how to access drm scatter-gather memory!");
 2009
 2010 case _DRM_CONSISTENT:
 2011 /*
 2012 * XXX Old drm uses bus space access for this, but
 2013 * consistent maps don't have bus space handles! They
 2014 * do, however, have kernel virtual addresses in the
 2015 * map->handle, so maybe that's right.
 2016 */
 2017#if 0
 2018 return false;
 2019#endif
 2020 panic("I don't know how to access drm consistent memory!");
 2021
 2022 case _DRM_GEM:
 2023 panic("I don't know how to access drm gem memory!");
 2024 }
 2025}
 2026
 2027static inline uint8_t
 2028DRM_READ8(struct drm_local_map *map, bus_size_t offset)
 2029{
 2030 if (DRM_IS_BUS_SPACE(map))
 2031 return bus_space_read_1(map->lm_data.bus_space.bst,
 2032 map->lm_data.bus_space.bsh, offset);
 2033 else
 2034 return *(volatile uint8_t *)((vaddr_t)map->handle + offset);
 2035}
 2036
 2037static inline uint16_t
 2038DRM_READ16(struct drm_local_map *map, bus_size_t offset)
 2039{
 2040 if (DRM_IS_BUS_SPACE(map))
 2041 return bus_space_read_2(map->lm_data.bus_space.bst,
 2042 map->lm_data.bus_space.bsh, offset);
 2043 else
 2044 return *(volatile uint16_t *)((vaddr_t)map->handle + offset);
 2045}
 2046
 2047static inline uint32_t
 2048DRM_READ32(struct drm_local_map *map, bus_size_t offset)
 2049{
 2050 if (DRM_IS_BUS_SPACE(map))
 2051 return bus_space_read_4(map->lm_data.bus_space.bst,
 2052 map->lm_data.bus_space.bsh, offset);
 2053 else
 2054 return *(volatile uint32_t *)((vaddr_t)map->handle + offset);
 2055}
 2056
 2057static inline void
 2058DRM_WRITE8(struct drm_local_map *map, bus_size_t offset, uint8_t value)
 2059{
 2060 if (DRM_IS_BUS_SPACE(map))
 2061 bus_space_write_1(map->lm_data.bus_space.bst,
 2062 map->lm_data.bus_space.bsh, offset, value);
 2063 else
 2064 *(volatile uint8_t *)((vaddr_t)map->handle + offset) = value;
 2065}
 2066
 2067static inline void
 2068DRM_WRITE16(struct drm_local_map *map, bus_size_t offset, uint16_t value)
 2069{
 2070 if (DRM_IS_BUS_SPACE(map))
 2071 bus_space_write_2(map->lm_data.bus_space.bst,
 2072 map->lm_data.bus_space.bsh, offset, value);
 2073 else
 2074 *(volatile uint16_t *)((vaddr_t)map->handle + offset) = value;
 2075}
 2076
 2077static inline void
 2078DRM_WRITE32(struct drm_local_map *map, bus_size_t offset, uint32_t value)
 2079{
 2080 if (DRM_IS_BUS_SPACE(map))
 2081 bus_space_write_4(map->lm_data.bus_space.bst,
 2082 map->lm_data.bus_space.bsh, offset, value);
 2083 else
 2084 *(volatile uint32_t *)((vaddr_t)map->handle + offset) = value;
 2085}
 2086#endif /* defined(__NetBSD__) */
 2087
1990#endif /* __KERNEL__ */ 2088#endif /* __KERNEL__ */
1991#endif 2089#endif