Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0bdc6fd2 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull i2c fix from Wolfram Sang:
 "A regression fix for I2C that would be great to have in rc2"

* 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
  i2c: designware: don't infer timings described by ACPI from clock rate
parents d4c6cd15 9d640843
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
@@ -96,6 +96,7 @@ static int dw_i2c_acpi_configure(struct platform_device *pdev)
	struct dw_i2c_dev *dev = platform_get_drvdata(pdev);
	acpi_handle handle = ACPI_HANDLE(&pdev->dev);
	const struct acpi_device_id *id;
	u32 ss_ht, fp_ht, hs_ht, fs_ht;
	struct acpi_device *adev;
	const char *uid;

@@ -107,23 +108,24 @@ static int dw_i2c_acpi_configure(struct platform_device *pdev)
	 * Try to get SDA hold time and *CNT values from an ACPI method for
	 * selected speed modes.
	 */
	dw_i2c_acpi_params(pdev, "SSCN", &dev->ss_hcnt, &dev->ss_lcnt, &ss_ht);
	dw_i2c_acpi_params(pdev, "FPCN", &dev->fp_hcnt, &dev->fp_lcnt, &fp_ht);
	dw_i2c_acpi_params(pdev, "HSCN", &dev->hs_hcnt, &dev->hs_lcnt, &hs_ht);
	dw_i2c_acpi_params(pdev, "FMCN", &dev->fs_hcnt, &dev->fs_lcnt, &fs_ht);

	switch (dev->clk_freq) {
	case 100000:
		dw_i2c_acpi_params(pdev, "SSCN", &dev->ss_hcnt, &dev->ss_lcnt,
				   &dev->sda_hold_time);
		dev->sda_hold_time = ss_ht;
		break;
	case 1000000:
		dw_i2c_acpi_params(pdev, "FPCN", &dev->fp_hcnt, &dev->fp_lcnt,
				   &dev->sda_hold_time);
		dev->sda_hold_time = fp_ht;
		break;
	case 3400000:
		dw_i2c_acpi_params(pdev, "HSCN", &dev->hs_hcnt, &dev->hs_lcnt,
				   &dev->sda_hold_time);
		dev->sda_hold_time = hs_ht;
		break;
	case 400000:
	default:
		dw_i2c_acpi_params(pdev, "FMCN", &dev->fs_hcnt, &dev->fs_lcnt,
				   &dev->sda_hold_time);
		dev->sda_hold_time = fs_ht;
		break;
	}