171e2f4ddSJiaxun Yang /* SPDX-License-Identifier: GPL-2.0 */ 271e2f4ddSJiaxun Yang /* 371e2f4ddSJiaxun Yang * the definition file of cs5536 Virtual Support Module(VSM). 471e2f4ddSJiaxun Yang * pci configuration space can be accessed through the VSM, so 571e2f4ddSJiaxun Yang * there is no need of the MSR read/write now, except the spec. 671e2f4ddSJiaxun Yang * MSR registers which are not implemented yet. 771e2f4ddSJiaxun Yang * 871e2f4ddSJiaxun Yang * Copyright (C) 2007 Lemote Inc. 971e2f4ddSJiaxun Yang * Author : jlliu, liujl@lemote.com 1071e2f4ddSJiaxun Yang */ 1171e2f4ddSJiaxun Yang 1271e2f4ddSJiaxun Yang #ifndef _CS5536_PCI_H 1371e2f4ddSJiaxun Yang #define _CS5536_PCI_H 1471e2f4ddSJiaxun Yang 1571e2f4ddSJiaxun Yang #include <linux/types.h> 1671e2f4ddSJiaxun Yang #include <linux/pci_regs.h> 1771e2f4ddSJiaxun Yang 1871e2f4ddSJiaxun Yang extern void cs5536_pci_conf_write4(int function, int reg, u32 value); 1971e2f4ddSJiaxun Yang extern u32 cs5536_pci_conf_read4(int function, int reg); 2071e2f4ddSJiaxun Yang 2171e2f4ddSJiaxun Yang #define CS5536_ACC_INTR 9 2271e2f4ddSJiaxun Yang #define CS5536_IDE_INTR 14 2371e2f4ddSJiaxun Yang #define CS5536_USB_INTR 11 2471e2f4ddSJiaxun Yang #define CS5536_MFGPT_INTR 5 2571e2f4ddSJiaxun Yang #define CS5536_UART1_INTR 4 2671e2f4ddSJiaxun Yang #define CS5536_UART2_INTR 3 2771e2f4ddSJiaxun Yang 2871e2f4ddSJiaxun Yang /************** PCI BUS DEVICE FUNCTION ***************/ 2971e2f4ddSJiaxun Yang 3071e2f4ddSJiaxun Yang /* 3171e2f4ddSJiaxun Yang * PCI bus device function 3271e2f4ddSJiaxun Yang */ 3371e2f4ddSJiaxun Yang #define PCI_BUS_CS5536 0 3471e2f4ddSJiaxun Yang #define PCI_IDSEL_CS5536 14 3571e2f4ddSJiaxun Yang 3671e2f4ddSJiaxun Yang /********** STANDARD PCI-2.2 EXPANSION ****************/ 3771e2f4ddSJiaxun Yang 3871e2f4ddSJiaxun Yang /* 3971e2f4ddSJiaxun Yang * PCI configuration space 4071e2f4ddSJiaxun Yang * we have to virtualize the PCI configure space head, so we should 4171e2f4ddSJiaxun Yang * define the necessary IDs and some others. 4271e2f4ddSJiaxun Yang */ 4371e2f4ddSJiaxun Yang 4471e2f4ddSJiaxun Yang /* CONFIG of PCI VENDOR ID*/ 4571e2f4ddSJiaxun Yang #define CFG_PCI_VENDOR_ID(mod_dev_id, sys_vendor_id) \ 4671e2f4ddSJiaxun Yang (((mod_dev_id) << 16) | (sys_vendor_id)) 4771e2f4ddSJiaxun Yang 4871e2f4ddSJiaxun Yang /* VENDOR ID */ 4971e2f4ddSJiaxun Yang #define CS5536_VENDOR_ID 0x1022 5071e2f4ddSJiaxun Yang 5171e2f4ddSJiaxun Yang /* DEVICE ID */ 5271e2f4ddSJiaxun Yang #define CS5536_ISA_DEVICE_ID 0x2090 5371e2f4ddSJiaxun Yang #define CS5536_IDE_DEVICE_ID 0x209a 5471e2f4ddSJiaxun Yang #define CS5536_ACC_DEVICE_ID 0x2093 5571e2f4ddSJiaxun Yang #define CS5536_OHCI_DEVICE_ID 0x2094 5671e2f4ddSJiaxun Yang #define CS5536_EHCI_DEVICE_ID 0x2095 5771e2f4ddSJiaxun Yang 5871e2f4ddSJiaxun Yang /* CLASS CODE : CLASS SUB-CLASS INTERFACE */ 5971e2f4ddSJiaxun Yang #define CS5536_ISA_CLASS_CODE 0x060100 6071e2f4ddSJiaxun Yang #define CS5536_IDE_CLASS_CODE 0x010180 6171e2f4ddSJiaxun Yang #define CS5536_ACC_CLASS_CODE 0x040100 6271e2f4ddSJiaxun Yang #define CS5536_OHCI_CLASS_CODE 0x0C0310 6371e2f4ddSJiaxun Yang #define CS5536_EHCI_CLASS_CODE 0x0C0320 6471e2f4ddSJiaxun Yang 6571e2f4ddSJiaxun Yang /* BHLC : BIST HEADER-TYPE LATENCY-TIMER CACHE-LINE-SIZE */ 6671e2f4ddSJiaxun Yang 6771e2f4ddSJiaxun Yang #define CFG_PCI_CACHE_LINE_SIZE(header_type, latency_timer) \ 6871e2f4ddSJiaxun Yang ((PCI_NONE_BIST << 24) | ((header_type) << 16) \ 6971e2f4ddSJiaxun Yang | ((latency_timer) << 8) | PCI_NORMAL_CACHE_LINE_SIZE); 7071e2f4ddSJiaxun Yang 7171e2f4ddSJiaxun Yang #define PCI_NONE_BIST 0x00 /* RO not implemented yet. */ 7271e2f4ddSJiaxun Yang #define PCI_BRIDGE_HEADER_TYPE 0x80 /* RO */ 7371e2f4ddSJiaxun Yang #define PCI_NORMAL_HEADER_TYPE 0x00 7471e2f4ddSJiaxun Yang #define PCI_NORMAL_LATENCY_TIMER 0x00 7571e2f4ddSJiaxun Yang #define PCI_NORMAL_CACHE_LINE_SIZE 0x08 /* RW */ 7671e2f4ddSJiaxun Yang 7771e2f4ddSJiaxun Yang /* BAR */ 7871e2f4ddSJiaxun Yang #define PCI_BAR0_REG 0x10 7971e2f4ddSJiaxun Yang #define PCI_BAR1_REG 0x14 8071e2f4ddSJiaxun Yang #define PCI_BAR2_REG 0x18 8171e2f4ddSJiaxun Yang #define PCI_BAR3_REG 0x1c 8271e2f4ddSJiaxun Yang #define PCI_BAR4_REG 0x20 8371e2f4ddSJiaxun Yang #define PCI_BAR5_REG 0x24 8471e2f4ddSJiaxun Yang #define PCI_BAR_RANGE_MASK 0xFFFFFFFF 8571e2f4ddSJiaxun Yang 8671e2f4ddSJiaxun Yang /* CARDBUS CIS POINTER */ 8771e2f4ddSJiaxun Yang #define PCI_CARDBUS_CIS_POINTER 0x00000000 8871e2f4ddSJiaxun Yang 8971e2f4ddSJiaxun Yang /* SUBSYSTEM VENDOR ID */ 9071e2f4ddSJiaxun Yang #define CS5536_SUB_VENDOR_ID CS5536_VENDOR_ID 9171e2f4ddSJiaxun Yang 9271e2f4ddSJiaxun Yang /* SUBSYSTEM ID */ 9371e2f4ddSJiaxun Yang #define CS5536_ISA_SUB_ID CS5536_ISA_DEVICE_ID 9471e2f4ddSJiaxun Yang #define CS5536_IDE_SUB_ID CS5536_IDE_DEVICE_ID 9571e2f4ddSJiaxun Yang #define CS5536_ACC_SUB_ID CS5536_ACC_DEVICE_ID 9671e2f4ddSJiaxun Yang #define CS5536_OHCI_SUB_ID CS5536_OHCI_DEVICE_ID 9771e2f4ddSJiaxun Yang #define CS5536_EHCI_SUB_ID CS5536_EHCI_DEVICE_ID 9871e2f4ddSJiaxun Yang 9971e2f4ddSJiaxun Yang /* EXPANSION ROM BAR */ 10071e2f4ddSJiaxun Yang #define PCI_EXPANSION_ROM_BAR 0x00000000 10171e2f4ddSJiaxun Yang 10271e2f4ddSJiaxun Yang /* CAPABILITIES POINTER */ 10371e2f4ddSJiaxun Yang #define PCI_CAPLIST_POINTER 0x00000000 10471e2f4ddSJiaxun Yang #define PCI_CAPLIST_USB_POINTER 0x40 10571e2f4ddSJiaxun Yang /* INTERRUPT */ 10671e2f4ddSJiaxun Yang 10771e2f4ddSJiaxun Yang #define CFG_PCI_INTERRUPT_LINE(pin, mod_intr) \ 10871e2f4ddSJiaxun Yang ((PCI_MAX_LATENCY << 24) | (PCI_MIN_GRANT << 16) | \ 10971e2f4ddSJiaxun Yang ((pin) << 8) | (mod_intr)) 11071e2f4ddSJiaxun Yang 11171e2f4ddSJiaxun Yang #define PCI_MAX_LATENCY 0x40 11271e2f4ddSJiaxun Yang #define PCI_MIN_GRANT 0x00 11371e2f4ddSJiaxun Yang #define PCI_DEFAULT_PIN 0x01 11471e2f4ddSJiaxun Yang 11571e2f4ddSJiaxun Yang /*********** EXPANSION PCI REG ************************/ 11671e2f4ddSJiaxun Yang 11771e2f4ddSJiaxun Yang /* 11871e2f4ddSJiaxun Yang * ISA EXPANSION 11971e2f4ddSJiaxun Yang */ 12071e2f4ddSJiaxun Yang #define PCI_UART1_INT_REG 0x50 12171e2f4ddSJiaxun Yang #define PCI_UART2_INT_REG 0x54 12271e2f4ddSJiaxun Yang #define PCI_ISA_FIXUP_REG 0x58 12371e2f4ddSJiaxun Yang 12471e2f4ddSJiaxun Yang /* 12571e2f4ddSJiaxun Yang * IDE EXPANSION 12671e2f4ddSJiaxun Yang */ 12771e2f4ddSJiaxun Yang #define PCI_IDE_CFG_REG 0x40 12871e2f4ddSJiaxun Yang #define CS5536_IDE_FLASH_SIGNATURE 0xDEADBEEF 12971e2f4ddSJiaxun Yang #define PCI_IDE_DTC_REG 0x48 13071e2f4ddSJiaxun Yang #define PCI_IDE_CAST_REG 0x4C 13171e2f4ddSJiaxun Yang #define PCI_IDE_ETC_REG 0x50 13271e2f4ddSJiaxun Yang #define PCI_IDE_PM_REG 0x54 13371e2f4ddSJiaxun Yang #define PCI_IDE_INT_REG 0x60 13471e2f4ddSJiaxun Yang 13571e2f4ddSJiaxun Yang /* 13671e2f4ddSJiaxun Yang * ACC EXPANSION 13771e2f4ddSJiaxun Yang */ 13871e2f4ddSJiaxun Yang #define PCI_ACC_INT_REG 0x50 13971e2f4ddSJiaxun Yang 14071e2f4ddSJiaxun Yang /* 14171e2f4ddSJiaxun Yang * OHCI EXPANSION : INTTERUPT IS IMPLEMENTED BY THE OHCI 14271e2f4ddSJiaxun Yang */ 14371e2f4ddSJiaxun Yang #define PCI_OHCI_PM_REG 0x40 14471e2f4ddSJiaxun Yang #define PCI_OHCI_INT_REG 0x50 14571e2f4ddSJiaxun Yang 14671e2f4ddSJiaxun Yang /* 14771e2f4ddSJiaxun Yang * EHCI EXPANSION 14871e2f4ddSJiaxun Yang */ 14971e2f4ddSJiaxun Yang #define PCI_EHCI_LEGSMIEN_REG 0x50 15071e2f4ddSJiaxun Yang #define PCI_EHCI_LEGSMISTS_REG 0x54 15171e2f4ddSJiaxun Yang #define PCI_EHCI_FLADJ_REG 0x60 15271e2f4ddSJiaxun Yang 15371e2f4ddSJiaxun Yang #endif /* _CS5536_PCI_H_ */ 154