root/sys/arch/loongson/dev/voyagerreg.h
/*      $OpenBSD: voyagerreg.h,v 1.3 2010/08/27 12:48:54 miod Exp $     */

/*
 * Copyright (c) 2010 Miodrag Vallat.
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

/*
 * Silicon Motion SM501/SM502 registers
 */

#define SM5XX_MMIO_BASE                 0x000000
#define SM5XX_MMIO_SIZE                 0x010000

#define VOYAGER_SYSTEM_CONTROL          0x0000
#define VSC_DPMS_VSYNC_DISABLE          0x80000000
#define VSC_DPMS_HSYNC_DISABLE          0x40000000
#define VSC_COLOR_CONVERSION_BUSY       0x10000000
#define VSC_FIFO_EMPTY                  0x00100000
#define VSC_2DENGINE_BUSY               0x00080000
#define VSC_2DENGINE_ABORT              0x00003000      /* not a typo */
#define VOYAGER_MISC_CONTROL            0x0004
#define VOYAGER_GPIOL_CONTROL           0x0008
#define VOYAGER_GPIOH_CONTROL           0x000c
#define VOYAGER_DRAM_CONTROL            0x0010
#define VOYAGER_ARB_CONTROL             0x0014

#define VOYAGER_COMMANDLIST_CONTROL     0x0018
#define VOYAGER_COMMANDLIST_CONDITION   0x001c
#define VOYAGER_COMMANDLIST_RETURN      0x0020
#define VOYAGER_COMMANDLIST_STATUS      0x0024
#define VCS_2M                          0x00100000
#define VCS_CF                          0x00080000
#define VCS_2C                          0x00040000
#define VCS_DM                          0x00020000
#define VCS_CS                          0x00010000
#define VCS_VF                          0x00008000
#define VCS_VS                          0x00004000
#define VCS_PS                          0x00002000
#define VCS_SC                          0x00001000
#define VCS_SP                          0x00000800
#define VCS_2S                          0x00000004
#define VCS_2F                          0x00000002
#define VCS_2E                          0x00000001

#define VOYAGER_RAW_ISR                 0x0028
#define VOYAGER_RAWINTR_ZV1                             6
#define VOYAGER_RAWINTR_USB_PLUGIN                      5
#define VOYAGER_RAWINTR_ZV0                             4
#define VOYAGER_RAWINTR_CRT_VSYNC                       3
#define VOYAGER_RAWINTR_USB_SLAVE                       2
#define VOYAGER_RAWINTR_PANEL_VSYNC                     1
#define VOYAGER_RAWINTR_COMMAND_INTERPRETER             0
#define VOYAGER_RAW_ICR                 0x0028
#define VOYAGER_ISR                     0x002c
#define VOYAGER_INTR_USB_PLUGIN                         31
#define VOYAGER_INTR_GPIO54                             30
#define VOYAGER_INTR_GPIO53                             29
#define VOYAGER_INTR_GPIO52                             28
#define VOYAGER_INTR_GPIO51                             27
#define VOYAGER_INTR_GPIO50                             26
#define VOYAGER_INTR_GPIO49                             25
#define VOYAGER_INTR_GPIO48                             24
#define VOYAGER_INTR_I2C                                23
#define VOYAGER_INTR_PWM                                22
#define VOYAGER_INTR_DMA                                20
#define VOYAGER_INTR_PCI                                19
#define VOYAGER_INTR_I2S                                18
#define VOYAGER_INTR_AC97                               17
#define VOYAGER_INTR_USB_SLAVE                          16
#define VOYAGER_INTR_UART1                              13
#define VOYAGER_INTR_UART0                              12
#define VOYAGER_INTR_CRT_VSYNC                          11
#define VOYAGER_INTR_8051                               10
#define VOYAGER_INTR_SSP1                               9
#define VOYAGER_INTR_SSP0                               8
#define VOYAGER_INTR_USB_HOST                           6
#define VOYAGER_INTR_ZV1                                4
#define VOYAGER_INTR_2DENGINE                           3
#define VOYAGER_INTR_ZV0                                2
#define VOYAGER_INTR_PANEL_VSYNC                        1
#define VOYAGER_INTR_COMMAND_INTERPRETER                0
#define VOYAGER_IMR                     0x0030
#define VOYAGER_DEBUG                   0x0034

#define VOYAGER_PM_CURRENT_GATE         0x0038
#define VOYAGER_PM_CURRENT_CLOCK        0x003c
#define VOYAGER_PM_MODE0_GATE           0x0040
#define VOYAGER_PM_MODE0_CLOCK          0x0044
#define VOYAGER_PM_MODE1_GATE           0x0048
#define VOYAGER_PM_MODE1_CLOCK          0x004c
#define VOYAGER_PM_SLEEP_GATE           0x0050
#define VOYAGER_PM_CONTROL              0x0054

#define VOYAGER_MASTER_PCI_BASE         0x0058
#define VOYAGER_ENDIAN_CONTROL          0x005c
#define VOYAGER_DEVICE_ID               0x0060
#define VOYAGER_PLL_COUNT               0x0064
#define VOYAGER_MISC                    0x0068
#define VOYAGER_SDRAM_CLOCK             0x006c
#define VOYAGER_NON_CACHE_ADDRESS       0x0070
#define VOYAGER_PLL_CONTROL             0x0074

/*
 * GPIO
 */

#define VOYAGER_GPIO_DATA_LOW           0x010000
#define VOYAGER_GPIO_DATA_HIGH          0x010004
#define VOYAGER_GPIO_DIR_LOW            0x010008
#define VOYAGER_GPIO_DIR_HIGH           0x01000c

/*
 * OHCI
 */

#define VOYAGER_OHCI_BASE               0x040000
#define VOYAGER_OHCI_SIZE               0x020000

/*
 * Display Controller
 */

#define SM5XX_DCR_BASE                  0x080000
#define SM5XX_DCR_SIZE                  0x010000

#define DCR_PANEL_DISPLAY_CONTROL       0x0000
#define PDC_EN                          0x08000000
#define PDC_BIAS                        0x04000000
#define PDC_DATA                        0x02000000
#define PDC_VDD                         0x01000000