|
@@ -317,6 +317,12 @@ int i2c_dw_init(struct dw_i2c_dev *dev)
|
|
|
47, /* tLOW = 4.7 us */
|
|
|
3, /* tf = 0.3 us */
|
|
|
0); /* No offset */
|
|
|
+
|
|
|
+ /* Allow platforms to specify the ideal HCNT and LCNT values */
|
|
|
+ if (dev->ss_hcnt && dev->ss_lcnt) {
|
|
|
+ hcnt = dev->ss_hcnt;
|
|
|
+ lcnt = dev->ss_lcnt;
|
|
|
+ }
|
|
|
dw_writel(dev, hcnt, DW_IC_SS_SCL_HCNT);
|
|
|
dw_writel(dev, lcnt, DW_IC_SS_SCL_LCNT);
|
|
|
dev_dbg(dev->dev, "Standard-mode HCNT:LCNT = %d:%d\n", hcnt, lcnt);
|
|
@@ -331,6 +337,11 @@ int i2c_dw_init(struct dw_i2c_dev *dev)
|
|
|
13, /* tLOW = 1.3 us */
|
|
|
3, /* tf = 0.3 us */
|
|
|
0); /* No offset */
|
|
|
+
|
|
|
+ if (dev->fs_hcnt && dev->fs_lcnt) {
|
|
|
+ hcnt = dev->fs_hcnt;
|
|
|
+ lcnt = dev->fs_lcnt;
|
|
|
+ }
|
|
|
dw_writel(dev, hcnt, DW_IC_FS_SCL_HCNT);
|
|
|
dw_writel(dev, lcnt, DW_IC_FS_SCL_LCNT);
|
|
|
dev_dbg(dev->dev, "Fast-mode HCNT:LCNT = %d:%d\n", hcnt, lcnt);
|