浏览代码

i2c: algo: pca: Fix mode selection for PCA9665

The code currently always selects turbo mode for PCA9665, no matter which
clock frequency is configured. This is because it compares the clock frequency
against constants reflecting (boundary / 100). Compare against real boundary
frequencies to fix the problem.

Signed-off-by: Thomas Kavanagh <tkavanagh@juniper.net>
Signed-off-by: Guenter Roeck <groeck@juniper.net>
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
Thomas Kavanagh 12 年之前
父节点
当前提交
5f71a3ef37
共有 1 个文件被更改,包括 3 次插入3 次删除
  1. 3 3
      drivers/i2c/algos/i2c-algo-pca.c

+ 3 - 3
drivers/i2c/algos/i2c-algo-pca.c

@@ -476,17 +476,17 @@ static int pca_init(struct i2c_adapter *adap)
 		/* To avoid integer overflow, use clock/100 for calculations */
 		/* To avoid integer overflow, use clock/100 for calculations */
 		clock = pca_clock(pca_data) / 100;
 		clock = pca_clock(pca_data) / 100;
 
 
-		if (pca_data->i2c_clock > 10000) {
+		if (pca_data->i2c_clock > 1000000) {
 			mode = I2C_PCA_MODE_TURBO;
 			mode = I2C_PCA_MODE_TURBO;
 			min_tlow = 14;
 			min_tlow = 14;
 			min_thi  = 5;
 			min_thi  = 5;
 			raise_fall_time = 22; /* Raise 11e-8s, Fall 11e-8s */
 			raise_fall_time = 22; /* Raise 11e-8s, Fall 11e-8s */
-		} else if (pca_data->i2c_clock > 4000) {
+		} else if (pca_data->i2c_clock > 400000) {
 			mode = I2C_PCA_MODE_FASTP;
 			mode = I2C_PCA_MODE_FASTP;
 			min_tlow = 17;
 			min_tlow = 17;
 			min_thi  = 9;
 			min_thi  = 9;
 			raise_fall_time = 22; /* Raise 11e-8s, Fall 11e-8s */
 			raise_fall_time = 22; /* Raise 11e-8s, Fall 11e-8s */
-		} else if (pca_data->i2c_clock > 1000) {
+		} else if (pca_data->i2c_clock > 100000) {
 			mode = I2C_PCA_MODE_FAST;
 			mode = I2C_PCA_MODE_FAST;
 			min_tlow = 44;
 			min_tlow = 44;
 			min_thi  = 20;
 			min_thi  = 20;