1*d83cc019SAndroid Build Coastguard Worker /* 2*d83cc019SAndroid Build Coastguard Worker * Copyright © 2009 Intel Corporation 3*d83cc019SAndroid Build Coastguard Worker * 4*d83cc019SAndroid Build Coastguard Worker * Permission is hereby granted, free of charge, to any person obtaining a 5*d83cc019SAndroid Build Coastguard Worker * copy of this software and associated documentation files (the "Software"), 6*d83cc019SAndroid Build Coastguard Worker * to deal in the Software without restriction, including without limitation 7*d83cc019SAndroid Build Coastguard Worker * the rights to use, copy, modify, merge, publish, distribute, sublicense, 8*d83cc019SAndroid Build Coastguard Worker * and/or sell copies of the Software, and to permit persons to whom the 9*d83cc019SAndroid Build Coastguard Worker * Software is furnished to do so, subject to the following conditions: 10*d83cc019SAndroid Build Coastguard Worker * 11*d83cc019SAndroid Build Coastguard Worker * The above copyright notice and this permission notice (including the next 12*d83cc019SAndroid Build Coastguard Worker * paragraph) shall be included in all copies or substantial portions of the 13*d83cc019SAndroid Build Coastguard Worker * Software. 14*d83cc019SAndroid Build Coastguard Worker * 15*d83cc019SAndroid Build Coastguard Worker * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16*d83cc019SAndroid Build Coastguard Worker * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17*d83cc019SAndroid Build Coastguard Worker * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 18*d83cc019SAndroid Build Coastguard Worker * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19*d83cc019SAndroid Build Coastguard Worker * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 20*d83cc019SAndroid Build Coastguard Worker * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 21*d83cc019SAndroid Build Coastguard Worker * DEALINGS IN THE SOFTWARE. 22*d83cc019SAndroid Build Coastguard Worker * 23*d83cc019SAndroid Build Coastguard Worker * Authors: 24*d83cc019SAndroid Build Coastguard Worker * Eric Anholt <[email protected]> 25*d83cc019SAndroid Build Coastguard Worker * 26*d83cc019SAndroid Build Coastguard Worker */ 27*d83cc019SAndroid Build Coastguard Worker 28*d83cc019SAndroid Build Coastguard Worker #ifndef INTEL_GPU_TOOLS_H 29*d83cc019SAndroid Build Coastguard Worker #define INTEL_GPU_TOOLS_H 30*d83cc019SAndroid Build Coastguard Worker 31*d83cc019SAndroid Build Coastguard Worker #include <stdint.h> 32*d83cc019SAndroid Build Coastguard Worker #include <pciaccess.h> 33*d83cc019SAndroid Build Coastguard Worker 34*d83cc019SAndroid Build Coastguard Worker /* register access helpers from intel_mmio.c */ 35*d83cc019SAndroid Build Coastguard Worker extern void *igt_global_mmio; 36*d83cc019SAndroid Build Coastguard Worker void intel_mmio_use_pci_bar(struct pci_device *pci_dev); 37*d83cc019SAndroid Build Coastguard Worker void intel_mmio_use_dump_file(char *file); 38*d83cc019SAndroid Build Coastguard Worker 39*d83cc019SAndroid Build Coastguard Worker int intel_register_access_init(struct pci_device *pci_dev, int safe, int fd); 40*d83cc019SAndroid Build Coastguard Worker void intel_register_access_fini(void); 41*d83cc019SAndroid Build Coastguard Worker uint32_t intel_register_read(uint32_t reg); 42*d83cc019SAndroid Build Coastguard Worker void intel_register_write(uint32_t reg, uint32_t val); 43*d83cc019SAndroid Build Coastguard Worker int intel_register_access_needs_fakewake(void); 44*d83cc019SAndroid Build Coastguard Worker 45*d83cc019SAndroid Build Coastguard Worker uint32_t INREG(uint32_t reg); 46*d83cc019SAndroid Build Coastguard Worker uint16_t INREG16(uint32_t reg); 47*d83cc019SAndroid Build Coastguard Worker uint8_t INREG8(uint32_t reg); 48*d83cc019SAndroid Build Coastguard Worker void OUTREG(uint32_t reg, uint32_t val); 49*d83cc019SAndroid Build Coastguard Worker void OUTREG16(uint32_t reg, uint16_t val); 50*d83cc019SAndroid Build Coastguard Worker void OUTREG8(uint32_t reg, uint8_t val); 51*d83cc019SAndroid Build Coastguard Worker 52*d83cc019SAndroid Build Coastguard Worker /* sideband access functions from intel_iosf.c */ 53*d83cc019SAndroid Build Coastguard Worker uint32_t intel_dpio_reg_read(uint32_t reg, int phy); 54*d83cc019SAndroid Build Coastguard Worker void intel_dpio_reg_write(uint32_t reg, uint32_t val, int phy); 55*d83cc019SAndroid Build Coastguard Worker uint32_t intel_flisdsi_reg_read(uint32_t reg); 56*d83cc019SAndroid Build Coastguard Worker void intel_flisdsi_reg_write(uint32_t reg, uint32_t val); 57*d83cc019SAndroid Build Coastguard Worker uint32_t intel_iosf_sb_read(uint32_t port, uint32_t reg); 58*d83cc019SAndroid Build Coastguard Worker void intel_iosf_sb_write(uint32_t port, uint32_t reg, uint32_t val); 59*d83cc019SAndroid Build Coastguard Worker 60*d83cc019SAndroid Build Coastguard Worker int intel_punit_read(uint32_t addr, uint32_t *val); 61*d83cc019SAndroid Build Coastguard Worker int intel_punit_write(uint32_t addr, uint32_t val); 62*d83cc019SAndroid Build Coastguard Worker int intel_nc_read(uint32_t addr, uint32_t *val); 63*d83cc019SAndroid Build Coastguard Worker int intel_nc_write(uint32_t addr, uint32_t val); 64*d83cc019SAndroid Build Coastguard Worker 65*d83cc019SAndroid Build Coastguard Worker /* register maps from intel_reg_map.c */ 66*d83cc019SAndroid Build Coastguard Worker #ifndef __GTK_DOC_IGNORE__ 67*d83cc019SAndroid Build Coastguard Worker 68*d83cc019SAndroid Build Coastguard Worker #define INTEL_RANGE_RSVD (0<<0) /* Shouldn't be read or written */ 69*d83cc019SAndroid Build Coastguard Worker #define INTEL_RANGE_READ (1<<0) 70*d83cc019SAndroid Build Coastguard Worker #define INTEL_RANGE_WRITE (1<<1) 71*d83cc019SAndroid Build Coastguard Worker #define INTEL_RANGE_RW (INTEL_RANGE_READ | INTEL_RANGE_WRITE) 72*d83cc019SAndroid Build Coastguard Worker #define INTEL_RANGE_END (1<<31) 73*d83cc019SAndroid Build Coastguard Worker 74*d83cc019SAndroid Build Coastguard Worker struct intel_register_range { 75*d83cc019SAndroid Build Coastguard Worker uint32_t base; 76*d83cc019SAndroid Build Coastguard Worker uint32_t size; 77*d83cc019SAndroid Build Coastguard Worker uint32_t flags; 78*d83cc019SAndroid Build Coastguard Worker }; 79*d83cc019SAndroid Build Coastguard Worker 80*d83cc019SAndroid Build Coastguard Worker struct intel_register_map { 81*d83cc019SAndroid Build Coastguard Worker struct intel_register_range *map; 82*d83cc019SAndroid Build Coastguard Worker uint32_t top; 83*d83cc019SAndroid Build Coastguard Worker uint32_t alignment_mask; 84*d83cc019SAndroid Build Coastguard Worker }; 85*d83cc019SAndroid Build Coastguard Worker struct intel_register_map intel_get_register_map(uint32_t devid); 86*d83cc019SAndroid Build Coastguard Worker struct intel_register_range *intel_get_register_range(struct intel_register_map map, uint32_t offset, uint32_t mode); 87*d83cc019SAndroid Build Coastguard Worker #endif /* __GTK_DOC_IGNORE__ */ 88*d83cc019SAndroid Build Coastguard Worker 89*d83cc019SAndroid Build Coastguard Worker #endif /* INTEL_GPU_TOOLS_H */ 90