Linux Audio

Check our new training course

Linux kernel drivers training

Mar 31-Apr 9, 2025, special US time zones
Register
Loading...
v5.9
  1/* SPDX-License-Identifier: GPL-2.0-only */
  2/*
  3 * amd8111_edac.h, EDAC defs for AMD8111 hypertransport chip
  4 *
  5 * Copyright (c) 2008 Wind River Systems, Inc.
  6 *
  7 * Authors:	Cao Qingtao <qingtao.cao@windriver.com>
  8 * 		Benjamin Walsh <benjamin.walsh@windriver.com>
  9 * 		Hu Yongqi <yongqi.hu@windriver.com>
 10 */
 11
 12#ifndef _AMD8111_EDAC_H_
 13#define _AMD8111_EDAC_H_
 14
 15/************************************************************
 16 *	PCI Bridge Status and Command Register, DevA:0x04
 17 ************************************************************/
 18#define REG_PCI_STSCMD	0x04
 19enum pci_stscmd_bits {
 20	PCI_STSCMD_SSE		= BIT(30),
 21	PCI_STSCMD_RMA		= BIT(29),
 22	PCI_STSCMD_RTA		= BIT(28),
 23	PCI_STSCMD_SERREN	= BIT(8),
 24	PCI_STSCMD_CLEAR_MASK	= (PCI_STSCMD_SSE |
 25				   PCI_STSCMD_RMA |
 26				   PCI_STSCMD_RTA)
 27};
 28
 29/************************************************************
 30 *	PCI Bridge Memory Base-Limit Register, DevA:0x1c
 31 ************************************************************/
 32#define REG_MEM_LIM     0x1c
 33enum mem_limit_bits {
 34	MEM_LIMIT_DPE   = BIT(31),
 35	MEM_LIMIT_RSE   = BIT(30),
 36	MEM_LIMIT_RMA   = BIT(29),
 37	MEM_LIMIT_RTA   = BIT(28),
 38	MEM_LIMIT_STA   = BIT(27),
 39	MEM_LIMIT_MDPE  = BIT(24),
 40	MEM_LIMIT_CLEAR_MASK  = (MEM_LIMIT_DPE |
 41				 MEM_LIMIT_RSE |
 42				 MEM_LIMIT_RMA |
 43				 MEM_LIMIT_RTA |
 44				 MEM_LIMIT_STA |
 45				 MEM_LIMIT_MDPE)
 46};
 47
 48/************************************************************
 49 *	HyperTransport Link Control Register, DevA:0xc4
 50 ************************************************************/
 51#define REG_HT_LINK	0xc4
 52enum ht_link_bits {
 53	HT_LINK_LKFAIL	= BIT(4),
 54	HT_LINK_CRCFEN	= BIT(1),
 55	HT_LINK_CLEAR_MASK = (HT_LINK_LKFAIL)
 56};
 57
 58/************************************************************
 59 *	PCI Bridge Interrupt and Bridge Control, DevA:0x3c
 60 ************************************************************/
 61#define REG_PCI_INTBRG_CTRL	0x3c
 62enum pci_intbrg_ctrl_bits {
 63	PCI_INTBRG_CTRL_DTSERREN	= BIT(27),
 64	PCI_INTBRG_CTRL_DTSTAT		= BIT(26),
 65	PCI_INTBRG_CTRL_MARSP		= BIT(21),
 66	PCI_INTBRG_CTRL_SERREN		= BIT(17),
 67	PCI_INTBRG_CTRL_PEREN		= BIT(16),
 68	PCI_INTBRG_CTRL_CLEAR_MASK	= (PCI_INTBRG_CTRL_DTSTAT),
 69	PCI_INTBRG_CTRL_POLL_MASK	= (PCI_INTBRG_CTRL_DTSERREN |
 70					   PCI_INTBRG_CTRL_MARSP |
 71					   PCI_INTBRG_CTRL_SERREN)
 72};
 73
 74/************************************************************
 75 *		I/O Control 1 Register, DevB:0x40
 76 ************************************************************/
 77#define REG_IO_CTRL_1 0x40
 78enum io_ctrl_1_bits {
 79	IO_CTRL_1_NMIONERR	= BIT(7),
 80	IO_CTRL_1_LPC_ERR	= BIT(6),
 81	IO_CTRL_1_PW2LPC	= BIT(1),
 82	IO_CTRL_1_CLEAR_MASK	= (IO_CTRL_1_LPC_ERR | IO_CTRL_1_PW2LPC)
 83};
 84
 85/************************************************************
 86 *		Legacy I/O Space Registers
 87 ************************************************************/
 88#define REG_AT_COMPAT 0x61
 89enum at_compat_bits {
 90	AT_COMPAT_SERR		= BIT(7),
 91	AT_COMPAT_IOCHK		= BIT(6),
 92	AT_COMPAT_CLRIOCHK	= BIT(3),
 93	AT_COMPAT_CLRSERR	= BIT(2),
 94};
 95
 96struct amd8111_dev_info {
 97	u16 err_dev;	/* PCI Device ID */
 98	struct pci_dev *dev;
 99	int edac_idx;	/* device index */
100	char *ctl_name;
101	struct edac_device_ctl_info *edac_dev;
102	void (*init)(struct amd8111_dev_info *dev_info);
103	void (*exit)(struct amd8111_dev_info *dev_info);
104	void (*check)(struct edac_device_ctl_info *edac_dev);
105};
106
107struct amd8111_pci_info {
108	u16 err_dev;	/* PCI Device ID */
109	struct pci_dev *dev;
110	int edac_idx;	/* pci index */
111	const char *ctl_name;
112	struct edac_pci_ctl_info *edac_dev;
113	void (*init)(struct amd8111_pci_info *dev_info);
114	void (*exit)(struct amd8111_pci_info *dev_info);
115	void (*check)(struct edac_pci_ctl_info *edac_dev);
116};
117
118#endif /* _AMD8111_EDAC_H_ */
v6.8
  1/* SPDX-License-Identifier: GPL-2.0-only */
  2/*
  3 * amd8111_edac.h, EDAC defs for AMD8111 hypertransport chip
  4 *
  5 * Copyright (c) 2008 Wind River Systems, Inc.
  6 *
  7 * Authors:	Cao Qingtao <qingtao.cao@windriver.com>
  8 * 		Benjamin Walsh <benjamin.walsh@windriver.com>
  9 * 		Hu Yongqi <yongqi.hu@windriver.com>
 10 */
 11
 12#ifndef _AMD8111_EDAC_H_
 13#define _AMD8111_EDAC_H_
 14
 15/************************************************************
 16 *	PCI Bridge Status and Command Register, DevA:0x04
 17 ************************************************************/
 18#define REG_PCI_STSCMD	0x04
 19enum pci_stscmd_bits {
 20	PCI_STSCMD_SSE		= BIT(30),
 21	PCI_STSCMD_RMA		= BIT(29),
 22	PCI_STSCMD_RTA		= BIT(28),
 23	PCI_STSCMD_SERREN	= BIT(8),
 24	PCI_STSCMD_CLEAR_MASK	= (PCI_STSCMD_SSE |
 25				   PCI_STSCMD_RMA |
 26				   PCI_STSCMD_RTA)
 27};
 28
 29/************************************************************
 30 *	PCI Bridge Memory Base-Limit Register, DevA:0x1c
 31 ************************************************************/
 32#define REG_MEM_LIM     0x1c
 33enum mem_limit_bits {
 34	MEM_LIMIT_DPE   = BIT(31),
 35	MEM_LIMIT_RSE   = BIT(30),
 36	MEM_LIMIT_RMA   = BIT(29),
 37	MEM_LIMIT_RTA   = BIT(28),
 38	MEM_LIMIT_STA   = BIT(27),
 39	MEM_LIMIT_MDPE  = BIT(24),
 40	MEM_LIMIT_CLEAR_MASK  = (MEM_LIMIT_DPE |
 41				 MEM_LIMIT_RSE |
 42				 MEM_LIMIT_RMA |
 43				 MEM_LIMIT_RTA |
 44				 MEM_LIMIT_STA |
 45				 MEM_LIMIT_MDPE)
 46};
 47
 48/************************************************************
 49 *	HyperTransport Link Control Register, DevA:0xc4
 50 ************************************************************/
 51#define REG_HT_LINK	0xc4
 52enum ht_link_bits {
 53	HT_LINK_LKFAIL	= BIT(4),
 54	HT_LINK_CRCFEN	= BIT(1),
 55	HT_LINK_CLEAR_MASK = (HT_LINK_LKFAIL)
 56};
 57
 58/************************************************************
 59 *	PCI Bridge Interrupt and Bridge Control, DevA:0x3c
 60 ************************************************************/
 61#define REG_PCI_INTBRG_CTRL	0x3c
 62enum pci_intbrg_ctrl_bits {
 63	PCI_INTBRG_CTRL_DTSERREN	= BIT(27),
 64	PCI_INTBRG_CTRL_DTSTAT		= BIT(26),
 65	PCI_INTBRG_CTRL_MARSP		= BIT(21),
 66	PCI_INTBRG_CTRL_SERREN		= BIT(17),
 67	PCI_INTBRG_CTRL_PEREN		= BIT(16),
 68	PCI_INTBRG_CTRL_CLEAR_MASK	= (PCI_INTBRG_CTRL_DTSTAT),
 69	PCI_INTBRG_CTRL_POLL_MASK	= (PCI_INTBRG_CTRL_DTSERREN |
 70					   PCI_INTBRG_CTRL_MARSP |
 71					   PCI_INTBRG_CTRL_SERREN)
 72};
 73
 74/************************************************************
 75 *		I/O Control 1 Register, DevB:0x40
 76 ************************************************************/
 77#define REG_IO_CTRL_1 0x40
 78enum io_ctrl_1_bits {
 79	IO_CTRL_1_NMIONERR	= BIT(7),
 80	IO_CTRL_1_LPC_ERR	= BIT(6),
 81	IO_CTRL_1_PW2LPC	= BIT(1),
 82	IO_CTRL_1_CLEAR_MASK	= (IO_CTRL_1_LPC_ERR | IO_CTRL_1_PW2LPC)
 83};
 84
 85/************************************************************
 86 *		Legacy I/O Space Registers
 87 ************************************************************/
 88#define REG_AT_COMPAT 0x61
 89enum at_compat_bits {
 90	AT_COMPAT_SERR		= BIT(7),
 91	AT_COMPAT_IOCHK		= BIT(6),
 92	AT_COMPAT_CLRIOCHK	= BIT(3),
 93	AT_COMPAT_CLRSERR	= BIT(2),
 94};
 95
 96struct amd8111_dev_info {
 97	u16 err_dev;	/* PCI Device ID */
 98	struct pci_dev *dev;
 99	int edac_idx;	/* device index */
100	char *ctl_name;
101	struct edac_device_ctl_info *edac_dev;
102	void (*init)(struct amd8111_dev_info *dev_info);
103	void (*exit)(struct amd8111_dev_info *dev_info);
104	void (*check)(struct edac_device_ctl_info *edac_dev);
105};
106
107struct amd8111_pci_info {
108	u16 err_dev;	/* PCI Device ID */
109	struct pci_dev *dev;
110	int edac_idx;	/* pci index */
111	const char *ctl_name;
112	struct edac_pci_ctl_info *edac_dev;
113	void (*init)(struct amd8111_pci_info *dev_info);
114	void (*exit)(struct amd8111_pci_info *dev_info);
115	void (*check)(struct edac_pci_ctl_info *edac_dev);
116};
117
118#endif /* _AMD8111_EDAC_H_ */