Skip to content

Commit fd664ab

Browse files
svenpeter42wsakernel
authored andcommitted
i2c: pasemi: Allow to configure bus frequency
Right now the bus frequency has always been hardcoded as 100 KHz with the specific reference clock used in the PASemi PCI controllers. Make this configurable to prepare for the platform driver. Reviewed-by: Arnd Bergmann <[email protected]> Signed-off-by: Sven Peter <[email protected]> Acked-by: Olof Johansson <[email protected]> Tested-by: Christian Zigotzky <[email protected]> Signed-off-by: Wolfram Sang <[email protected]>
1 parent 1a62668 commit fd664ab

File tree

3 files changed

+8
-5
lines changed

3 files changed

+8
-5
lines changed

drivers/i2c/busses/i2c-pasemi-core.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,6 @@
3939
#define CTL_MTR 0x00000200
4040
#define CTL_CLK_M 0x000000ff
4141

42-
#define CLK_100K_DIV 84
43-
#define CLK_400K_DIV 21
44-
4542
static inline void reg_write(struct pasemi_smbus *smbus, int reg, int val)
4643
{
4744
dev_dbg(smbus->dev, "smbus write reg %lx val %08x\n",
@@ -63,8 +60,9 @@ static inline int reg_read(struct pasemi_smbus *smbus, int reg)
6360

6461
static void pasemi_reset(struct pasemi_smbus *smbus)
6562
{
66-
reg_write(smbus, REG_CTL, (CTL_MTR | CTL_MRR |
67-
(CLK_100K_DIV & CTL_CLK_M)));
63+
u32 val = (CTL_MTR | CTL_MRR | (smbus->clk_div & CTL_CLK_M));
64+
65+
reg_write(smbus, REG_CTL, val);
6866
}
6967

7068
static void pasemi_smb_clear(struct pasemi_smbus *smbus)

drivers/i2c/busses/i2c-pasemi-core.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ struct pasemi_smbus {
1414
void __iomem *ioaddr;
1515
unsigned long base;
1616
int size;
17+
unsigned int clk_div;
1718
};
1819

1920
int pasemi_i2c_common_probe(struct pasemi_smbus *smbus);

drivers/i2c/busses/i2c-pasemi-pci.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717

1818
#include "i2c-pasemi-core.h"
1919

20+
#define CLK_100K_DIV 84
21+
#define CLK_400K_DIV 21
22+
2023
static struct pci_driver pasemi_smb_pci_driver;
2124

2225
static int pasemi_smb_pci_probe(struct pci_dev *dev,
@@ -35,6 +38,7 @@ static int pasemi_smb_pci_probe(struct pci_dev *dev,
3538
smbus->dev = &dev->dev;
3639
smbus->base = pci_resource_start(dev, 0);
3740
smbus->size = pci_resource_len(dev, 0);
41+
smbus->clk_div = CLK_100K_DIV;
3842

3943
if (!request_region(smbus->base, smbus->size,
4044
pasemi_smb_pci_driver.name)) {

0 commit comments

Comments
 (0)