#define CTL_MTR                0x00000200
 #define CTL_CLK_M      0x000000ff
 
-#define CLK_100K_DIV   84
-#define CLK_400K_DIV   21
-
 static inline void reg_write(struct pasemi_smbus *smbus, int reg, int val)
 {
        dev_dbg(smbus->dev, "smbus write reg %lx val %08x\n",
 
 static void pasemi_reset(struct pasemi_smbus *smbus)
 {
-       reg_write(smbus, REG_CTL, (CTL_MTR | CTL_MRR |
-                 (CLK_100K_DIV & CTL_CLK_M)));
+       u32 val = (CTL_MTR | CTL_MRR | (smbus->clk_div & CTL_CLK_M));
+
+       reg_write(smbus, REG_CTL, val);
 }
 
 static void pasemi_smb_clear(struct pasemi_smbus *smbus)
 
 
 #include "i2c-pasemi-core.h"
 
+#define CLK_100K_DIV   84
+#define CLK_400K_DIV   21
+
 static struct pci_driver pasemi_smb_pci_driver;
 
 static int pasemi_smb_pci_probe(struct pci_dev *dev,
        smbus->dev = &dev->dev;
        smbus->base = pci_resource_start(dev, 0);
        smbus->size = pci_resource_len(dev, 0);
+       smbus->clk_div = CLK_100K_DIV;
 
        if (!request_region(smbus->base, smbus->size,
                            pasemi_smb_pci_driver.name)) {