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