Skip to content

Commit 05d9800

Browse files
Shyam Sundar S KAndi Shyti
authored andcommitted
i2c: piix4: Export i2c_piix4 driver functions as library
Export the following i2c_piix4 driver functions as a library so that the AMD ASF driver can utilize these core functionalities from the i2c_piix4 driver: - piix4_sb800_region_request(): Request access to a specific SMBus region on the SB800 chipset. - piix4_sb800_region_release(): Release the previously requested SMBus region on the SB800 chipset. - piix4_transaction(): Handle SMBus transactions between the SMBus controller and connected devices. - piix4_sb800_port_sel(): Select the appropriate SMBus port on the SB800 chipset. By making these functions available as a library, enable the AMD ASF driver to leverage the established mechanisms in the i2c_piix4 driver, promoting code reuse and consistency across different drivers. Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Co-developed-by: Sanket Goswami <Sanket.Goswami@amd.com> Signed-off-by: Sanket Goswami <Sanket.Goswami@amd.com> Signed-off-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com> Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
1 parent 650e2c3 commit 05d9800

2 files changed

Lines changed: 13 additions & 6 deletions

File tree

drivers/i2c/busses/i2c-piix4.c

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,7 @@ struct i2c_piix4_adapdata {
156156
struct sb800_mmio_cfg mmio_cfg;
157157
};
158158

159-
static int piix4_sb800_region_request(struct device *dev,
160-
struct sb800_mmio_cfg *mmio_cfg)
159+
int piix4_sb800_region_request(struct device *dev, struct sb800_mmio_cfg *mmio_cfg)
161160
{
162161
if (mmio_cfg->use_mmio) {
163162
void __iomem *addr;
@@ -195,9 +194,9 @@ static int piix4_sb800_region_request(struct device *dev,
195194

196195
return 0;
197196
}
197+
EXPORT_SYMBOL_NS_GPL(piix4_sb800_region_request, PIIX4_SMBUS);
198198

199-
static void piix4_sb800_region_release(struct device *dev,
200-
struct sb800_mmio_cfg *mmio_cfg)
199+
void piix4_sb800_region_release(struct device *dev, struct sb800_mmio_cfg *mmio_cfg)
201200
{
202201
if (mmio_cfg->use_mmio) {
203202
iounmap(mmio_cfg->addr);
@@ -208,6 +207,7 @@ static void piix4_sb800_region_release(struct device *dev,
208207

209208
release_region(SB800_PIIX4_SMB_IDX, SB800_PIIX4_SMB_MAP_SIZE);
210209
}
210+
EXPORT_SYMBOL_NS_GPL(piix4_sb800_region_release, PIIX4_SMBUS);
211211

212212
static bool piix4_sb800_use_mmio(struct pci_dev *PIIX4_dev)
213213
{
@@ -517,7 +517,7 @@ static int piix4_setup_aux(struct pci_dev *PIIX4_dev,
517517
return piix4_smba;
518518
}
519519

520-
static int piix4_transaction(struct i2c_adapter *piix4_adapter, unsigned short piix4_smba)
520+
int piix4_transaction(struct i2c_adapter *piix4_adapter, unsigned short piix4_smba)
521521
{
522522
int temp;
523523
int result = 0;
@@ -590,6 +590,7 @@ static int piix4_transaction(struct i2c_adapter *piix4_adapter, unsigned short p
590590
inb_p(SMBHSTDAT1));
591591
return result;
592592
}
593+
EXPORT_SYMBOL_NS_GPL(piix4_transaction, PIIX4_SMBUS);
593594

594595
/* Return negative errno on error. */
595596
static s32 piix4_access(struct i2c_adapter * adap, u16 addr,
@@ -743,7 +744,7 @@ static void piix4_imc_wakeup(void)
743744
release_region(KERNCZ_IMC_IDX, 2);
744745
}
745746

746-
static int piix4_sb800_port_sel(u8 port, struct sb800_mmio_cfg *mmio_cfg)
747+
int piix4_sb800_port_sel(u8 port, struct sb800_mmio_cfg *mmio_cfg)
747748
{
748749
u8 smba_en_lo, val;
749750

@@ -765,6 +766,7 @@ static int piix4_sb800_port_sel(u8 port, struct sb800_mmio_cfg *mmio_cfg)
765766

766767
return (smba_en_lo & piix4_port_mask_sb800);
767768
}
769+
EXPORT_SYMBOL_NS_GPL(piix4_sb800_port_sel, PIIX4_SMBUS);
768770

769771
/*
770772
* Handles access to multiple SMBus ports on the SB800.

drivers/i2c/busses/i2c-piix4.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,9 @@ struct sb800_mmio_cfg {
3636
bool use_mmio;
3737
};
3838

39+
int piix4_sb800_port_sel(u8 port, struct sb800_mmio_cfg *mmio_cfg);
40+
int piix4_transaction(struct i2c_adapter *piix4_adapter, unsigned short piix4_smba);
41+
int piix4_sb800_region_request(struct device *dev, struct sb800_mmio_cfg *mmio_cfg);
42+
void piix4_sb800_region_release(struct device *dev, struct sb800_mmio_cfg *mmio_cfg);
43+
3944
#endif /* I2C_PIIX4_H */

0 commit comments

Comments
 (0)