OSDN Git Service

misc: at25: Make use of device property API
authorMika Westerberg <mika.westerberg@linux.intel.com>
Tue, 21 Oct 2014 11:33:56 +0000 (13:33 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Tue, 4 Nov 2014 20:58:21 +0000 (21:58 +0100)
Make use of device property API in this driver so that both DT and ACPI
based systems can use this driver.

In addition we hard-code the name of the chip to be "at25" for the
reason that there is no common mechanism to fetch name of the firmware
node. The only existing user (arch/arm/boot/dts/phy3250.dts) uses the
same name so it should continue to work.

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Acked-by: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/misc/eeprom/at25.c

index 634f729..0a1af93 100644 (file)
@@ -18,7 +18,7 @@
 
 #include <linux/spi/spi.h>
 #include <linux/spi/eeprom.h>
-#include <linux/of.h>
+#include <linux/property.h>
 
 /*
  * NOTE: this is an *EEPROM* driver.  The vagaries of product naming
@@ -301,35 +301,33 @@ static ssize_t at25_mem_write(struct memory_accessor *mem, const char *buf,
 
 /*-------------------------------------------------------------------------*/
 
-static int at25_np_to_chip(struct device *dev,
-                          struct device_node *np,
-                          struct spi_eeprom *chip)
+static int at25_fw_to_chip(struct device *dev, struct spi_eeprom *chip)
 {
        u32 val;
 
        memset(chip, 0, sizeof(*chip));
-       strncpy(chip->name, np->name, sizeof(chip->name));
+       strncpy(chip->name, "at25", sizeof(chip->name));
 
-       if (of_property_read_u32(np, "size", &val) == 0 ||
-           of_property_read_u32(np, "at25,byte-len", &val) == 0) {
+       if (device_property_read_u32(dev, "size", &val) == 0 ||
+           device_property_read_u32(dev, "at25,byte-len", &val) == 0) {
                chip->byte_len = val;
        } else {
                dev_err(dev, "Error: missing \"size\" property\n");
                return -ENODEV;
        }
 
-       if (of_property_read_u32(np, "pagesize", &val) == 0 ||
-           of_property_read_u32(np, "at25,page-size", &val) == 0) {
+       if (device_property_read_u32(dev, "pagesize", &val) == 0 ||
+           device_property_read_u32(dev, "at25,page-size", &val) == 0) {
                chip->page_size = (u16)val;
        } else {
                dev_err(dev, "Error: missing \"pagesize\" property\n");
                return -ENODEV;
        }
 
-       if (of_property_read_u32(np, "at25,addr-mode", &val) == 0) {
+       if (device_property_read_u32(dev, "at25,addr-mode", &val) == 0) {
                chip->flags = (u16)val;
        } else {
-               if (of_property_read_u32(np, "address-width", &val)) {
+               if (device_property_read_u32(dev, "address-width", &val)) {
                        dev_err(dev,
                                "Error: missing \"address-width\" property\n");
                        return -ENODEV;
@@ -350,7 +348,7 @@ static int at25_np_to_chip(struct device *dev,
                                val);
                        return -ENODEV;
                }
-               if (of_find_property(np, "read-only", NULL))
+               if (device_property_present(dev, "read-only"))
                        chip->flags |= EE_READONLY;
        }
        return 0;
@@ -360,21 +358,15 @@ static int at25_probe(struct spi_device *spi)
 {
        struct at25_data        *at25 = NULL;
        struct spi_eeprom       chip;
-       struct device_node      *np = spi->dev.of_node;
        int                     err;
        int                     sr;
        int                     addrlen;
 
        /* Chip description */
        if (!spi->dev.platform_data) {
-               if (np) {
-                       err = at25_np_to_chip(&spi->dev, np, &chip);
-                       if (err)
-                               return err;
-               } else {
-                       dev_err(&spi->dev, "Error: no chip description\n");
-                       return -ENODEV;
-               }
+               err = at25_fw_to_chip(&spi->dev, &chip);
+               if (err)
+                       return err;
        } else
                chip = *(struct spi_eeprom *)spi->dev.platform_data;