Re: [PATCH v11 char-misc-next 2/2] misc: microchip: pci1xxxx: Add support to read and write into PCI1XXXX EEPROM via NVMEM sysfs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

@@ -219,6 +348,22 @@ static int pci1xxxx_otp_eeprom_probe(struct
auxiliary_device *aux_dev,
 		return -ENOMEM;

 	priv->pdev = aux_dev;
+	priv->nvmem_config_eeprom.type = NVMEM_TYPE_EEPROM;
+	priv->nvmem_config_eeprom.name = EEPROM_NAME;
+	priv->nvmem_config_eeprom.dev = &aux_dev->dev;
+	priv->nvmem_config_eeprom.owner = THIS_MODULE;
+	priv->nvmem_config_eeprom.reg_read = pci1xxxx_eeprom_read;
+	priv->nvmem_config_eeprom.reg_write = pci1xxxx_eeprom_write;
+	priv->nvmem_config_eeprom.priv = priv;
+	priv->nvmem_config_eeprom.stride = 1;
+	priv->nvmem_config_eeprom.word_size = 1;
+	priv->nvmem_config_eeprom.size = EEPROM_SIZE_BYTES;
+
+	priv->nvmem_eeprom = devm_nvmem_register(&aux_dev->dev,
+						 &priv->nvmem_config_eeprom);
+	if (!priv->nvmem_eeprom)
+		return -ENOMEM;
+
 	priv->nvmem_config_otp.type = NVMEM_TYPE_OTP;
 	priv->nvmem_config_otp.name = OTP_NAME;
 	priv->nvmem_config_otp.dev = &aux_dev->dev;
@@ -258,6 +403,9 @@ static int pci1xxxx_otp_eeprom_probe(struct
auxiliary_device *aux_dev,

 	dev_set_drvdata(&aux_dev->dev, priv);

+	if (is_eeprom_responsive(priv))
+		priv->is_eeprom_present = true;

What's this? The eeprom isn't there (or in whatever state), then you
still register the nvmem device, but read and write doesn't do anything
useful. You shouldn't register the device in the first place if it
is not functional.

-michael



[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux