Commit 58cd9e03 authored by Wolfram Sang's avatar Wolfram Sang
Browse files

Merge tag 'at24-fixes-for-v6.9-rc6' of...

Merge tag 'at24-fixes-for-v6.9-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/brgl/linux into i2c/for-current

at24 fixes for v6.9-rc6

- move the nvmem registration after the test one-byte read to improve the
  situation with a race condition in nvmem
- fix the DT schema for ST M24C64-D
parents ed30a4a5 f42c9702
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -68,14 +68,10 @@ properties:
                  pattern: cs16$
              - items:
                  pattern: c32$
              - items:
                  pattern: c32d-wl$
              - items:
                  pattern: cs32$
              - items:
                  pattern: c64$
              - items:
                  pattern: c64d-wl$
              - items:
                  pattern: cs64$
              - items:
@@ -136,6 +132,7 @@ properties:
              - renesas,r1ex24128
              - samsung,s524ad0xd1
          - const: atmel,24c128
      - pattern: '^atmel,24c(32|64)d-wl$' # Actual vendor is st

  label:
    description: Descriptive name of the EEPROM.
+9 −9
Original line number Diff line number Diff line
@@ -758,15 +758,6 @@ static int at24_probe(struct i2c_client *client)
	}
	pm_runtime_enable(dev);

	at24->nvmem = devm_nvmem_register(dev, &nvmem_config);
	if (IS_ERR(at24->nvmem)) {
		pm_runtime_disable(dev);
		if (!pm_runtime_status_suspended(dev))
			regulator_disable(at24->vcc_reg);
		return dev_err_probe(dev, PTR_ERR(at24->nvmem),
				     "failed to register nvmem\n");
	}

	/*
	 * Perform a one-byte test read to verify that the chip is functional,
	 * unless powering on the device is to be avoided during probe (i.e.
@@ -782,6 +773,15 @@ static int at24_probe(struct i2c_client *client)
		}
	}

	at24->nvmem = devm_nvmem_register(dev, &nvmem_config);
	if (IS_ERR(at24->nvmem)) {
		pm_runtime_disable(dev);
		if (!pm_runtime_status_suspended(dev))
			regulator_disable(at24->vcc_reg);
		return dev_err_probe(dev, PTR_ERR(at24->nvmem),
				     "failed to register nvmem\n");
	}

	/* If this a SPD EEPROM, probe for DDR3 thermal sensor */
	if (cdata == &at24_data_spd)
		at24_probe_temp_sensor(client);