Home | History | Annotate | Download | only in src
      1 /*
      2 * Copyright (c) 2011 Intel Corporation. All Rights Reserved.
      3 * Copyright (c) Imagination Technologies Limited, UK
      4 *
      5 * Permission is hereby granted, free of charge, to any person obtaining a
      6 * copy of this software and associated documentation files (the
      7 * "Software"), to deal in the Software without restriction, including
      8 * without limitation the rights to use, copy, modify, merge, publish,
      9 * distribute, sub license, and/or sell copies of the Software, and to
     10 * permit persons to whom the Software is furnished to do so, subject to
     11 * the following conditions:
     12 *
     13 * The above copyright notice and this permission notice (including the
     14 * next paragraph) shall be included in all copies or substantial portions
     15 * of the Software.
     16 *
     17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
     18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
     19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
     20 * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
     21 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
     22 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
     23 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
     24 *
     25 */
     26 #ifndef _topazhp_cmdump_h
     27 #define _topazhp_cmdump_h
     28 
     29 #include <stdlib.h>
     30 #include <stdio.h>
     31 #include <string.h>
     32 #include <unistd.h> /* for libc5 */
     33 
     34 #ifdef ANDROID
     35 #define  outl(...)
     36 #define  outw(...)
     37 #define  inl(...)   0
     38 #define  inw(...)   0
     39 #else
     40 #include <sys/io.h> /* for glibc */
     41 #endif
     42 
     43 #define MIN(a,b)  ((a)>(b)?(b):(a))
     44 
     45 struct RegisterInfomation {
     46     char *name;
     47     int offset;
     48 };
     49 
     50 #define ui32TopazMulticoreRegId  1
     51 
     52 
     53 
     54 #define PCI_DEVICE_ID_CFG	0x02	/* 16 bits */
     55 #define PCI_BASE_ADDRESS_0	0x10	/* 32 bits */
     56 #define PCI_BASE_ADDRESS_1	0x14	/* 32 bits [htype 0,1 only] */
     57 #define PCI_BASE_ADDRESS_2	0x18	/* 32 bits [htype 0 only] */
     58 #define PCI_BASE_ADDRESS_3	0x1c	/* 32 bits */
     59 #define CONFIG_CMD(bus,device_fn,where)   \
     60    (0x80000000|((bus&0xff) << 16)|((device_fn&0xff) << 8)|((where&0xff) & ~3))
     61 
     62 static inline unsigned long pci_get_long(int bus,int device_fn, int where)
     63 {
     64     outl(CONFIG_CMD(bus,device_fn,where), 0xCF8);
     65     return inl(0xCFC);
     66 }
     67 
     68 static inline int pci_set_long(int bus,int device_fn, int where,unsigned long value)
     69 {
     70     outl(CONFIG_CMD(bus,device_fn,where), 0xCF8);
     71     outl(value,0xCFC);
     72     return 0;
     73 }
     74 
     75 static inline int pci_get_short(int bus,int device_fn, int where)
     76 {
     77     outl(CONFIG_CMD(bus,device_fn,where), 0xCF8);
     78     return inw(0xCFC + (where&2));
     79 }
     80 
     81 
     82 static inline int pci_set_short(int bus,int device_fn, int where,unsigned short value)
     83 {
     84     outl(CONFIG_CMD(bus,device_fn,where), 0xCF8);
     85     outw(value,0xCFC + (where&2));
     86     return 0;
     87 }
     88 
     89 #define REG_OFFSET_TOPAZ_MULTICORE                      0x00000000
     90 #define REG_OFFSET_TOPAZ_DMAC                           0x00000400
     91 #define REG_OFFSET_TOPAZ_MTX                            0x00000800
     92 
     93 #define REGNUM_TOPAZ_CR_MMU_DIR_LIST_BASE_ADDR          0x0030
     94 
     95 #ifndef MV_OFFSET_IN_TABLE
     96 #define MV_OFFSET_IN_TABLE(BDistance, Position) ((BDistance) * MV_ROW_STRIDE + (Position) * sizeof(IMG_MV_SETTINGS))
     97 #endif
     98 
     99 #define MULTICORE_READ32(offset, pointer)                               \
    100     do {                                                                \
    101 	*(pointer) = *((unsigned long *)((unsigned char *)(linear_mmio_topaz) \
    102                                          + REG_OFFSET_TOPAZ_MULTICORE + offset)); \
    103     } while (0)
    104 
    105 int topazhp_dump_command(unsigned int comm_dword[]);
    106 int tng_command_parameter_dump(int cmdid, void *virt_addr);
    107 
    108 #endif
    109