171e2f4ddSJiaxun Yang /* SPDX-License-Identifier: GPL-2.0 */ 271e2f4ddSJiaxun Yang /* 371e2f4ddSJiaxun Yang * The header file of cs5536 south bridge. 471e2f4ddSJiaxun Yang * 571e2f4ddSJiaxun Yang * Copyright (C) 2007 Lemote, Inc. 671e2f4ddSJiaxun Yang * Author : jlliu <liujl@lemote.com> 771e2f4ddSJiaxun Yang */ 871e2f4ddSJiaxun Yang 971e2f4ddSJiaxun Yang #ifndef _CS5536_H 1071e2f4ddSJiaxun Yang #define _CS5536_H 1171e2f4ddSJiaxun Yang 1271e2f4ddSJiaxun Yang #include <linux/types.h> 1371e2f4ddSJiaxun Yang 1471e2f4ddSJiaxun Yang extern void _rdmsr(u32 msr, u32 *hi, u32 *lo); 1571e2f4ddSJiaxun Yang extern void _wrmsr(u32 msr, u32 hi, u32 lo); 1671e2f4ddSJiaxun Yang 1771e2f4ddSJiaxun Yang /* 1871e2f4ddSJiaxun Yang * MSR module base 1971e2f4ddSJiaxun Yang */ 2071e2f4ddSJiaxun Yang #define CS5536_SB_MSR_BASE (0x00000000) 2171e2f4ddSJiaxun Yang #define CS5536_GLIU_MSR_BASE (0x10000000) 2271e2f4ddSJiaxun Yang #define CS5536_ILLEGAL_MSR_BASE (0x20000000) 2371e2f4ddSJiaxun Yang #define CS5536_USB_MSR_BASE (0x40000000) 2471e2f4ddSJiaxun Yang #define CS5536_IDE_MSR_BASE (0x60000000) 2571e2f4ddSJiaxun Yang #define CS5536_DIVIL_MSR_BASE (0x80000000) 2671e2f4ddSJiaxun Yang #define CS5536_ACC_MSR_BASE (0xa0000000) 2771e2f4ddSJiaxun Yang #define CS5536_UNUSED_MSR_BASE (0xc0000000) 2871e2f4ddSJiaxun Yang #define CS5536_GLCP_MSR_BASE (0xe0000000) 2971e2f4ddSJiaxun Yang 3071e2f4ddSJiaxun Yang #define SB_MSR_REG(offset) (CS5536_SB_MSR_BASE | (offset)) 3171e2f4ddSJiaxun Yang #define GLIU_MSR_REG(offset) (CS5536_GLIU_MSR_BASE | (offset)) 3271e2f4ddSJiaxun Yang #define ILLEGAL_MSR_REG(offset) (CS5536_ILLEGAL_MSR_BASE | (offset)) 3371e2f4ddSJiaxun Yang #define USB_MSR_REG(offset) (CS5536_USB_MSR_BASE | (offset)) 3471e2f4ddSJiaxun Yang #define IDE_MSR_REG(offset) (CS5536_IDE_MSR_BASE | (offset)) 3571e2f4ddSJiaxun Yang #define DIVIL_MSR_REG(offset) (CS5536_DIVIL_MSR_BASE | (offset)) 3671e2f4ddSJiaxun Yang #define ACC_MSR_REG(offset) (CS5536_ACC_MSR_BASE | (offset)) 3771e2f4ddSJiaxun Yang #define UNUSED_MSR_REG(offset) (CS5536_UNUSED_MSR_BASE | (offset)) 3871e2f4ddSJiaxun Yang #define GLCP_MSR_REG(offset) (CS5536_GLCP_MSR_BASE | (offset)) 3971e2f4ddSJiaxun Yang 4071e2f4ddSJiaxun Yang /* 4171e2f4ddSJiaxun Yang * BAR SPACE OF VIRTUAL PCI : 4271e2f4ddSJiaxun Yang * range for pci probe use, length is the actual size. 4371e2f4ddSJiaxun Yang */ 4471e2f4ddSJiaxun Yang /* IO space for all DIVIL modules */ 4571e2f4ddSJiaxun Yang #define CS5536_IRQ_RANGE 0xffffffe0 /* USERD FOR PCI PROBE */ 4671e2f4ddSJiaxun Yang #define CS5536_IRQ_LENGTH 0x20 /* THE REGS ACTUAL LENGTH */ 4771e2f4ddSJiaxun Yang #define CS5536_SMB_RANGE 0xfffffff8 4871e2f4ddSJiaxun Yang #define CS5536_SMB_LENGTH 0x08 4971e2f4ddSJiaxun Yang #define CS5536_GPIO_RANGE 0xffffff00 5071e2f4ddSJiaxun Yang #define CS5536_GPIO_LENGTH 0x100 5171e2f4ddSJiaxun Yang #define CS5536_MFGPT_RANGE 0xffffffc0 5271e2f4ddSJiaxun Yang #define CS5536_MFGPT_LENGTH 0x40 5371e2f4ddSJiaxun Yang #define CS5536_ACPI_RANGE 0xffffffe0 5471e2f4ddSJiaxun Yang #define CS5536_ACPI_LENGTH 0x20 5571e2f4ddSJiaxun Yang #define CS5536_PMS_RANGE 0xffffff80 5671e2f4ddSJiaxun Yang #define CS5536_PMS_LENGTH 0x80 5771e2f4ddSJiaxun Yang /* IO space for IDE */ 5871e2f4ddSJiaxun Yang #define CS5536_IDE_RANGE 0xfffffff0 5971e2f4ddSJiaxun Yang #define CS5536_IDE_LENGTH 0x10 6071e2f4ddSJiaxun Yang /* IO space for ACC */ 6171e2f4ddSJiaxun Yang #define CS5536_ACC_RANGE 0xffffff80 6271e2f4ddSJiaxun Yang #define CS5536_ACC_LENGTH 0x80 6371e2f4ddSJiaxun Yang /* MEM space for ALL USB modules */ 6471e2f4ddSJiaxun Yang #define CS5536_OHCI_RANGE 0xfffff000 6571e2f4ddSJiaxun Yang #define CS5536_OHCI_LENGTH 0x1000 6671e2f4ddSJiaxun Yang #define CS5536_EHCI_RANGE 0xfffff000 6771e2f4ddSJiaxun Yang #define CS5536_EHCI_LENGTH 0x1000 6871e2f4ddSJiaxun Yang 6971e2f4ddSJiaxun Yang /* 7071e2f4ddSJiaxun Yang * PCI MSR ACCESS 7171e2f4ddSJiaxun Yang */ 7271e2f4ddSJiaxun Yang #define PCI_MSR_CTRL 0xF0 7371e2f4ddSJiaxun Yang #define PCI_MSR_ADDR 0xF4 7471e2f4ddSJiaxun Yang #define PCI_MSR_DATA_LO 0xF8 7571e2f4ddSJiaxun Yang #define PCI_MSR_DATA_HI 0xFC 7671e2f4ddSJiaxun Yang 7771e2f4ddSJiaxun Yang /**************** MSR *****************************/ 7871e2f4ddSJiaxun Yang 7971e2f4ddSJiaxun Yang /* 8071e2f4ddSJiaxun Yang * GLIU STANDARD MSR 8171e2f4ddSJiaxun Yang */ 8271e2f4ddSJiaxun Yang #define GLIU_CAP 0x00 8371e2f4ddSJiaxun Yang #define GLIU_CONFIG 0x01 8471e2f4ddSJiaxun Yang #define GLIU_SMI 0x02 8571e2f4ddSJiaxun Yang #define GLIU_ERROR 0x03 8671e2f4ddSJiaxun Yang #define GLIU_PM 0x04 8771e2f4ddSJiaxun Yang #define GLIU_DIAG 0x05 8871e2f4ddSJiaxun Yang 8971e2f4ddSJiaxun Yang /* 9071e2f4ddSJiaxun Yang * GLIU SPEC. MSR 9171e2f4ddSJiaxun Yang */ 9271e2f4ddSJiaxun Yang #define GLIU_P2D_BM0 0x20 9371e2f4ddSJiaxun Yang #define GLIU_P2D_BM1 0x21 9471e2f4ddSJiaxun Yang #define GLIU_P2D_BM2 0x22 9571e2f4ddSJiaxun Yang #define GLIU_P2D_BMK0 0x23 9671e2f4ddSJiaxun Yang #define GLIU_P2D_BMK1 0x24 9771e2f4ddSJiaxun Yang #define GLIU_P2D_BM3 0x25 9871e2f4ddSJiaxun Yang #define GLIU_P2D_BM4 0x26 9971e2f4ddSJiaxun Yang #define GLIU_COH 0x80 10071e2f4ddSJiaxun Yang #define GLIU_PAE 0x81 10171e2f4ddSJiaxun Yang #define GLIU_ARB 0x82 10271e2f4ddSJiaxun Yang #define GLIU_ASMI 0x83 10371e2f4ddSJiaxun Yang #define GLIU_AERR 0x84 10471e2f4ddSJiaxun Yang #define GLIU_DEBUG 0x85 10571e2f4ddSJiaxun Yang #define GLIU_PHY_CAP 0x86 10671e2f4ddSJiaxun Yang #define GLIU_NOUT_RESP 0x87 10771e2f4ddSJiaxun Yang #define GLIU_NOUT_WDATA 0x88 10871e2f4ddSJiaxun Yang #define GLIU_WHOAMI 0x8B 10971e2f4ddSJiaxun Yang #define GLIU_SLV_DIS 0x8C 11071e2f4ddSJiaxun Yang #define GLIU_IOD_BM0 0xE0 11171e2f4ddSJiaxun Yang #define GLIU_IOD_BM1 0xE1 11271e2f4ddSJiaxun Yang #define GLIU_IOD_BM2 0xE2 11371e2f4ddSJiaxun Yang #define GLIU_IOD_BM3 0xE3 11471e2f4ddSJiaxun Yang #define GLIU_IOD_BM4 0xE4 11571e2f4ddSJiaxun Yang #define GLIU_IOD_BM5 0xE5 11671e2f4ddSJiaxun Yang #define GLIU_IOD_BM6 0xE6 11771e2f4ddSJiaxun Yang #define GLIU_IOD_BM7 0xE7 11871e2f4ddSJiaxun Yang #define GLIU_IOD_BM8 0xE8 11971e2f4ddSJiaxun Yang #define GLIU_IOD_BM9 0xE9 12071e2f4ddSJiaxun Yang #define GLIU_IOD_SC0 0xEA 12171e2f4ddSJiaxun Yang #define GLIU_IOD_SC1 0xEB 12271e2f4ddSJiaxun Yang #define GLIU_IOD_SC2 0xEC 12371e2f4ddSJiaxun Yang #define GLIU_IOD_SC3 0xED 12471e2f4ddSJiaxun Yang #define GLIU_IOD_SC4 0xEE 12571e2f4ddSJiaxun Yang #define GLIU_IOD_SC5 0xEF 12671e2f4ddSJiaxun Yang #define GLIU_IOD_SC6 0xF0 12771e2f4ddSJiaxun Yang #define GLIU_IOD_SC7 0xF1 12871e2f4ddSJiaxun Yang 12971e2f4ddSJiaxun Yang /* 13071e2f4ddSJiaxun Yang * SB STANDARD 13171e2f4ddSJiaxun Yang */ 13271e2f4ddSJiaxun Yang #define SB_CAP 0x00 13371e2f4ddSJiaxun Yang #define SB_CONFIG 0x01 13471e2f4ddSJiaxun Yang #define SB_SMI 0x02 13571e2f4ddSJiaxun Yang #define SB_ERROR 0x03 13671e2f4ddSJiaxun Yang #define SB_MAR_ERR_EN 0x00000001 13771e2f4ddSJiaxun Yang #define SB_TAR_ERR_EN 0x00000002 13871e2f4ddSJiaxun Yang #define SB_RSVD_BIT1 0x00000004 13971e2f4ddSJiaxun Yang #define SB_EXCEP_ERR_EN 0x00000008 14071e2f4ddSJiaxun Yang #define SB_SYSE_ERR_EN 0x00000010 14171e2f4ddSJiaxun Yang #define SB_PARE_ERR_EN 0x00000020 14271e2f4ddSJiaxun Yang #define SB_TAS_ERR_EN 0x00000040 14371e2f4ddSJiaxun Yang #define SB_MAR_ERR_FLAG 0x00010000 14471e2f4ddSJiaxun Yang #define SB_TAR_ERR_FLAG 0x00020000 14571e2f4ddSJiaxun Yang #define SB_RSVD_BIT2 0x00040000 14671e2f4ddSJiaxun Yang #define SB_EXCEP_ERR_FLAG 0x00080000 14771e2f4ddSJiaxun Yang #define SB_SYSE_ERR_FLAG 0x00100000 14871e2f4ddSJiaxun Yang #define SB_PARE_ERR_FLAG 0x00200000 14971e2f4ddSJiaxun Yang #define SB_TAS_ERR_FLAG 0x00400000 15071e2f4ddSJiaxun Yang #define SB_PM 0x04 15171e2f4ddSJiaxun Yang #define SB_DIAG 0x05 15271e2f4ddSJiaxun Yang 15371e2f4ddSJiaxun Yang /* 15471e2f4ddSJiaxun Yang * SB SPEC. 15571e2f4ddSJiaxun Yang */ 15671e2f4ddSJiaxun Yang #define SB_CTRL 0x10 15771e2f4ddSJiaxun Yang #define SB_R0 0x20 15871e2f4ddSJiaxun Yang #define SB_R1 0x21 15971e2f4ddSJiaxun Yang #define SB_R2 0x22 16071e2f4ddSJiaxun Yang #define SB_R3 0x23 16171e2f4ddSJiaxun Yang #define SB_R4 0x24 16271e2f4ddSJiaxun Yang #define SB_R5 0x25 16371e2f4ddSJiaxun Yang #define SB_R6 0x26 16471e2f4ddSJiaxun Yang #define SB_R7 0x27 16571e2f4ddSJiaxun Yang #define SB_R8 0x28 16671e2f4ddSJiaxun Yang #define SB_R9 0x29 16771e2f4ddSJiaxun Yang #define SB_R10 0x2A 16871e2f4ddSJiaxun Yang #define SB_R11 0x2B 16971e2f4ddSJiaxun Yang #define SB_R12 0x2C 17071e2f4ddSJiaxun Yang #define SB_R13 0x2D 17171e2f4ddSJiaxun Yang #define SB_R14 0x2E 17271e2f4ddSJiaxun Yang #define SB_R15 0x2F 17371e2f4ddSJiaxun Yang 17471e2f4ddSJiaxun Yang /* 17571e2f4ddSJiaxun Yang * GLCP STANDARD 17671e2f4ddSJiaxun Yang */ 17771e2f4ddSJiaxun Yang #define GLCP_CAP 0x00 17871e2f4ddSJiaxun Yang #define GLCP_CONFIG 0x01 17971e2f4ddSJiaxun Yang #define GLCP_SMI 0x02 18071e2f4ddSJiaxun Yang #define GLCP_ERROR 0x03 18171e2f4ddSJiaxun Yang #define GLCP_PM 0x04 18271e2f4ddSJiaxun Yang #define GLCP_DIAG 0x05 18371e2f4ddSJiaxun Yang 18471e2f4ddSJiaxun Yang /* 18571e2f4ddSJiaxun Yang * GLCP SPEC. 18671e2f4ddSJiaxun Yang */ 18771e2f4ddSJiaxun Yang #define GLCP_CLK_DIS_DELAY 0x08 18871e2f4ddSJiaxun Yang #define GLCP_PM_CLK_DISABLE 0x09 18971e2f4ddSJiaxun Yang #define GLCP_GLB_PM 0x0B 19071e2f4ddSJiaxun Yang #define GLCP_DBG_OUT 0x0C 19171e2f4ddSJiaxun Yang #define GLCP_RSVD1 0x0D 19271e2f4ddSJiaxun Yang #define GLCP_SOFT_COM 0x0E 19371e2f4ddSJiaxun Yang #define SOFT_BAR_SMB_FLAG 0x00000001 19471e2f4ddSJiaxun Yang #define SOFT_BAR_GPIO_FLAG 0x00000002 19571e2f4ddSJiaxun Yang #define SOFT_BAR_MFGPT_FLAG 0x00000004 19671e2f4ddSJiaxun Yang #define SOFT_BAR_IRQ_FLAG 0x00000008 19771e2f4ddSJiaxun Yang #define SOFT_BAR_PMS_FLAG 0x00000010 19871e2f4ddSJiaxun Yang #define SOFT_BAR_ACPI_FLAG 0x00000020 19971e2f4ddSJiaxun Yang #define SOFT_BAR_IDE_FLAG 0x00000400 20071e2f4ddSJiaxun Yang #define SOFT_BAR_ACC_FLAG 0x00000800 20171e2f4ddSJiaxun Yang #define SOFT_BAR_OHCI_FLAG 0x00001000 20271e2f4ddSJiaxun Yang #define SOFT_BAR_EHCI_FLAG 0x00002000 20371e2f4ddSJiaxun Yang #define GLCP_RSVD2 0x0F 20471e2f4ddSJiaxun Yang #define GLCP_CLK_OFF 0x10 20571e2f4ddSJiaxun Yang #define GLCP_CLK_ACTIVE 0x11 20671e2f4ddSJiaxun Yang #define GLCP_CLK_DISABLE 0x12 20771e2f4ddSJiaxun Yang #define GLCP_CLK4ACK 0x13 20871e2f4ddSJiaxun Yang #define GLCP_SYS_RST 0x14 20971e2f4ddSJiaxun Yang #define GLCP_RSVD3 0x15 21071e2f4ddSJiaxun Yang #define GLCP_DBG_CLK_CTRL 0x16 21171e2f4ddSJiaxun Yang #define GLCP_CHIP_REV_ID 0x17 21271e2f4ddSJiaxun Yang 21371e2f4ddSJiaxun Yang /* PIC */ 21471e2f4ddSJiaxun Yang #define PIC_YSEL_LOW 0x20 21571e2f4ddSJiaxun Yang #define PIC_YSEL_LOW_USB_SHIFT 8 21671e2f4ddSJiaxun Yang #define PIC_YSEL_LOW_ACC_SHIFT 16 21771e2f4ddSJiaxun Yang #define PIC_YSEL_LOW_FLASH_SHIFT 24 21871e2f4ddSJiaxun Yang #define PIC_YSEL_HIGH 0x21 21971e2f4ddSJiaxun Yang #define PIC_ZSEL_LOW 0x22 22071e2f4ddSJiaxun Yang #define PIC_ZSEL_HIGH 0x23 22171e2f4ddSJiaxun Yang #define PIC_IRQM_PRIM 0x24 22271e2f4ddSJiaxun Yang #define PIC_IRQM_LPC 0x25 22371e2f4ddSJiaxun Yang #define PIC_XIRR_STS_LOW 0x26 22471e2f4ddSJiaxun Yang #define PIC_XIRR_STS_HIGH 0x27 22571e2f4ddSJiaxun Yang #define PCI_SHDW 0x34 22671e2f4ddSJiaxun Yang 22771e2f4ddSJiaxun Yang /* 22871e2f4ddSJiaxun Yang * DIVIL STANDARD 22971e2f4ddSJiaxun Yang */ 23071e2f4ddSJiaxun Yang #define DIVIL_CAP 0x00 23171e2f4ddSJiaxun Yang #define DIVIL_CONFIG 0x01 23271e2f4ddSJiaxun Yang #define DIVIL_SMI 0x02 23371e2f4ddSJiaxun Yang #define DIVIL_ERROR 0x03 23471e2f4ddSJiaxun Yang #define DIVIL_PM 0x04 23571e2f4ddSJiaxun Yang #define DIVIL_DIAG 0x05 23671e2f4ddSJiaxun Yang 23771e2f4ddSJiaxun Yang /* 23871e2f4ddSJiaxun Yang * DIVIL SPEC. 23971e2f4ddSJiaxun Yang */ 24071e2f4ddSJiaxun Yang #define DIVIL_LBAR_IRQ 0x08 24171e2f4ddSJiaxun Yang #define DIVIL_LBAR_KEL 0x09 24271e2f4ddSJiaxun Yang #define DIVIL_LBAR_SMB 0x0B 24371e2f4ddSJiaxun Yang #define DIVIL_LBAR_GPIO 0x0C 24471e2f4ddSJiaxun Yang #define DIVIL_LBAR_MFGPT 0x0D 24571e2f4ddSJiaxun Yang #define DIVIL_LBAR_ACPI 0x0E 24671e2f4ddSJiaxun Yang #define DIVIL_LBAR_PMS 0x0F 24771e2f4ddSJiaxun Yang #define DIVIL_LEG_IO 0x14 24871e2f4ddSJiaxun Yang #define DIVIL_BALL_OPTS 0x15 24971e2f4ddSJiaxun Yang #define DIVIL_SOFT_IRQ 0x16 25071e2f4ddSJiaxun Yang #define DIVIL_SOFT_RESET 0x17 25171e2f4ddSJiaxun Yang 25271e2f4ddSJiaxun Yang /* MFGPT */ 25371e2f4ddSJiaxun Yang #define MFGPT_IRQ 0x28 25471e2f4ddSJiaxun Yang 25571e2f4ddSJiaxun Yang /* 25671e2f4ddSJiaxun Yang * IDE STANDARD 25771e2f4ddSJiaxun Yang */ 25871e2f4ddSJiaxun Yang #define IDE_CAP 0x00 25971e2f4ddSJiaxun Yang #define IDE_CONFIG 0x01 26071e2f4ddSJiaxun Yang #define IDE_SMI 0x02 26171e2f4ddSJiaxun Yang #define IDE_ERROR 0x03 26271e2f4ddSJiaxun Yang #define IDE_PM 0x04 26371e2f4ddSJiaxun Yang #define IDE_DIAG 0x05 26471e2f4ddSJiaxun Yang 26571e2f4ddSJiaxun Yang /* 26671e2f4ddSJiaxun Yang * IDE SPEC. 26771e2f4ddSJiaxun Yang */ 26871e2f4ddSJiaxun Yang #define IDE_IO_BAR 0x08 26971e2f4ddSJiaxun Yang #define IDE_CFG 0x10 27071e2f4ddSJiaxun Yang #define IDE_DTC 0x12 27171e2f4ddSJiaxun Yang #define IDE_CAST 0x13 27271e2f4ddSJiaxun Yang #define IDE_ETC 0x14 27371e2f4ddSJiaxun Yang #define IDE_INTERNAL_PM 0x15 27471e2f4ddSJiaxun Yang 27571e2f4ddSJiaxun Yang /* 27671e2f4ddSJiaxun Yang * ACC STANDARD 27771e2f4ddSJiaxun Yang */ 27871e2f4ddSJiaxun Yang #define ACC_CAP 0x00 27971e2f4ddSJiaxun Yang #define ACC_CONFIG 0x01 28071e2f4ddSJiaxun Yang #define ACC_SMI 0x02 28171e2f4ddSJiaxun Yang #define ACC_ERROR 0x03 28271e2f4ddSJiaxun Yang #define ACC_PM 0x04 28371e2f4ddSJiaxun Yang #define ACC_DIAG 0x05 28471e2f4ddSJiaxun Yang 28571e2f4ddSJiaxun Yang /* 28671e2f4ddSJiaxun Yang * USB STANDARD 28771e2f4ddSJiaxun Yang */ 28871e2f4ddSJiaxun Yang #define USB_CAP 0x00 28971e2f4ddSJiaxun Yang #define USB_CONFIG 0x01 29071e2f4ddSJiaxun Yang #define USB_SMI 0x02 29171e2f4ddSJiaxun Yang #define USB_ERROR 0x03 29271e2f4ddSJiaxun Yang #define USB_PM 0x04 29371e2f4ddSJiaxun Yang #define USB_DIAG 0x05 29471e2f4ddSJiaxun Yang 29571e2f4ddSJiaxun Yang /* 29671e2f4ddSJiaxun Yang * USB SPEC. 29771e2f4ddSJiaxun Yang */ 29871e2f4ddSJiaxun Yang #define USB_OHCI 0x08 29971e2f4ddSJiaxun Yang #define USB_EHCI 0x09 30071e2f4ddSJiaxun Yang 30171e2f4ddSJiaxun Yang /****************** NATIVE ***************************/ 30271e2f4ddSJiaxun Yang /* GPIO : I/O SPACE; REG : 32BITS */ 30371e2f4ddSJiaxun Yang #define GPIOL_OUT_VAL 0x00 30471e2f4ddSJiaxun Yang #define GPIOL_OUT_EN 0x04 30571e2f4ddSJiaxun Yang 30671e2f4ddSJiaxun Yang #endif /* _CS5536_H */ 307