xref: /linux/drivers/i2c/busses/i2c-piix4.h (revision c771600c6af14749609b49565ffb4cac2959710d)
1650e2c39SShyam Sundar S K /* SPDX-License-Identifier: GPL-2.0-or-later */
2650e2c39SShyam Sundar S K /*
3650e2c39SShyam Sundar S K  * PIIX4/SB800 SMBus Interfaces
4650e2c39SShyam Sundar S K  *
5650e2c39SShyam Sundar S K  * Copyright (c) 2024, Advanced Micro Devices, Inc.
6650e2c39SShyam Sundar S K  * All Rights Reserved.
7650e2c39SShyam Sundar S K  *
8650e2c39SShyam Sundar S K  * Authors: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
9650e2c39SShyam Sundar S K  *	    Sanket Goswami <Sanket.Goswami@amd.com>
10650e2c39SShyam Sundar S K  */
11650e2c39SShyam Sundar S K 
12650e2c39SShyam Sundar S K #ifndef I2C_PIIX4_H
13650e2c39SShyam Sundar S K #define I2C_PIIX4_H
14650e2c39SShyam Sundar S K 
15650e2c39SShyam Sundar S K #include <linux/types.h>
16650e2c39SShyam Sundar S K 
17650e2c39SShyam Sundar S K /* PIIX4 SMBus address offsets */
18650e2c39SShyam Sundar S K #define SMBHSTSTS	(0x00 + piix4_smba)
19650e2c39SShyam Sundar S K #define SMBHSLVSTS	(0x01 + piix4_smba)
20650e2c39SShyam Sundar S K #define SMBHSTCNT	(0x02 + piix4_smba)
21650e2c39SShyam Sundar S K #define SMBHSTCMD	(0x03 + piix4_smba)
22650e2c39SShyam Sundar S K #define SMBHSTADD	(0x04 + piix4_smba)
23650e2c39SShyam Sundar S K #define SMBHSTDAT0	(0x05 + piix4_smba)
24650e2c39SShyam Sundar S K #define SMBHSTDAT1	(0x06 + piix4_smba)
25650e2c39SShyam Sundar S K #define SMBBLKDAT	(0x07 + piix4_smba)
26650e2c39SShyam Sundar S K #define SMBSLVCNT	(0x08 + piix4_smba)
27650e2c39SShyam Sundar S K #define SMBSHDWCMD	(0x09 + piix4_smba)
28650e2c39SShyam Sundar S K #define SMBSLVEVT	(0x0A + piix4_smba)
29650e2c39SShyam Sundar S K #define SMBSLVDAT	(0x0C + piix4_smba)
30650e2c39SShyam Sundar S K 
31650e2c39SShyam Sundar S K /* PIIX4 constants */
32650e2c39SShyam Sundar S K #define PIIX4_BLOCK_DATA	0x14
33650e2c39SShyam Sundar S K 
34650e2c39SShyam Sundar S K struct sb800_mmio_cfg {
35650e2c39SShyam Sundar S K 	void __iomem *addr;
36650e2c39SShyam Sundar S K 	bool use_mmio;
37650e2c39SShyam Sundar S K };
38650e2c39SShyam Sundar S K 
39*05d98004SShyam Sundar S K int piix4_sb800_port_sel(u8 port, struct sb800_mmio_cfg *mmio_cfg);
40*05d98004SShyam Sundar S K int piix4_transaction(struct i2c_adapter *piix4_adapter, unsigned short piix4_smba);
41*05d98004SShyam Sundar S K int piix4_sb800_region_request(struct device *dev, struct sb800_mmio_cfg *mmio_cfg);
42*05d98004SShyam Sundar S K void piix4_sb800_region_release(struct device *dev, struct sb800_mmio_cfg *mmio_cfg);
43*05d98004SShyam Sundar S K 
44650e2c39SShyam Sundar S K #endif /* I2C_PIIX4_H */
45