Skip to contentSkip to conversation

mfd: arizona: Add convience defines for micd_rate/micd_bias_starttime

PATCH Applied Charles Keepax 2 participants 5 messages May 25, 2015 – May 27, 2015

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/2 mfd: arizona: Add convience defines for micd_rate/micd_bias_starttime

---
 include/dt-bindings/mfd/arizona.h |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)
include/dt-bindings/mfd/arizona.h +14 -0
index c7af7c7..5556099 100644
@@ -90,4 +90,18 @@
 #define ARIZONA_INMODE_SE   1
 #define ARIZONA_INMODE_DMIC 2
 
+#define ARIZONA_MICD_TIME_CONTINUOUS                 0
+#define ARIZONA_MICD_TIME_250US                      1
+#define ARIZONA_MICD_TIME_500US                      2
+#define ARIZONA_MICD_TIME_1MS                        3
+#define ARIZONA_MICD_TIME_2MS                        4
+#define ARIZONA_MICD_TIME_4MS                        5
+#define ARIZONA_MICD_TIME_8MS                        6
+#define ARIZONA_MICD_TIME_16MS                       7
+#define ARIZONA_MICD_TIME_32MS                       8
+#define ARIZONA_MICD_TIME_64MS                       9
+#define ARIZONA_MICD_TIME_128MS                      10
+#define ARIZONA_MICD_TIME_256MS                      11
+#define ARIZONA_MICD_TIME_512MS                      12
+
 #endif
Signature · 1 line
1.7.2.5
#1 lore raw

PATCH 2/2 mfd: arizona: Add DT/ACPI u32 helper functions

Add helpers to read u32's and arrays of u32's from device tree or ACPI using the new device properties API.

---
 drivers/mfd/arizona-core.c       |   39 ++++++++++++++++++++++++++++++++++++++
 include/linux/mfd/arizona/core.h |    5 ++++
 2 files changed, 44 insertions(+), 0 deletions(-)
drivers/mfd/arizona-core.c +39 -0
index bebf58a..fb55769 100644
@@ -20,6 +20,7 @@
 #include <linux/of_device.h>
 #include <linux/of_gpio.h>
 #include <linux/pm_runtime.h>
+#include <linux/property.h>
 #include <linux/regmap.h>
 #include <linux/regulator/consumer.h>
 #include <linux/regulator/machine.h>
@@ -746,6 +747,44 @@ int arizona_of_get_named_gpio(struct arizona *arizona, const char *prop,
 }
 EXPORT_SYMBOL_GPL(arizona_of_get_named_gpio);
 
+int arizona_device_read_u32_array(struct arizona *arizona,
+				  const char *prop, bool mandatory,
+				  u32 *data, size_t num)
+{
+	int ret;
+
+	ret = device_property_read_u32_array(arizona->dev, prop, data, num);
+	switch (ret) {
+	case 0:
+		break;
+	case -EINVAL:
+		if (!mandatory)
+			break;
+
+		dev_err(arizona->dev, "Mandatory property %s is missing\n",
+			prop);
+		break;
+	default:
+		dev_err(arizona->dev, "Property %s is malformed: %d\n",
+			prop, ret);
+		break;
+	}
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(arizona_device_read_u32_array);
+
+unsigned int arizona_device_read_u32(struct arizona *arizona,
+				     const char *prop, bool mandatory)
+{
+	u32 data = 0;
+
+	arizona_device_read_u32_array(arizona, prop, mandatory, &data, 1);
+
+	return data;
+}
+EXPORT_SYMBOL_GPL(arizona_device_read_u32);
+
 static int arizona_of_get_core_pdata(struct arizona *arizona)
 {
 	struct arizona_pdata *pdata = &arizona->pdata;
include/linux/mfd/arizona/core.h +5 -0
index 847bdaf..1c3d39d 100644
@@ -160,5 +160,10 @@ int wm8997_patch(struct arizona *arizona);
 
 extern int arizona_of_get_named_gpio(struct arizona *arizona, const char *prop,
 				     bool mandatory);
+extern int arizona_device_read_u32_array(struct arizona *arizona,
+					 const char *prop, bool mandatory,
+					 u32 *data, size_t num);
+extern unsigned int arizona_device_read_u32(struct arizona *arizona,
+					    const char *prop, bool mandatory);
 
 #endif
Signature · 1 line
1.7.2.5
#2 lore raw

Re: [PATCH 2/2] mfd: arizona: Add DT/ACPI u32 helper functions

Quoted 8 lines · Charles Keepax

Add helpers to read u32's and arrays of u32's from device tree or ACPI using the new device properties API.

---
 drivers/mfd/arizona-core.c       |   39 ++++++++++++++++++++++++++++++++++++++
 include/linux/mfd/arizona/core.h |    5 ++++
 2 files changed, 44 insertions(+), 0 deletions(-)

Me no likey!

There are 100's of 'required' and 'optional' properties in the kernel and it's normally the decision to early return or not that seals the fate of a given driver. I'm not happy for platforms to start adding their own variants.

If you really do think these kinds of "helpers" add value, then make them generic, so everyone can make use of them. Personally, I'm dubious however.

Quoted 72 lines
drivers/mfd/arizona-core.c +39 -0
index bebf58a..fb55769 100644
@@ -20,6 +20,7 @@
 #include <linux/of_device.h>
 #include <linux/of_gpio.h>
 #include <linux/pm_runtime.h>
+#include <linux/property.h>
 #include <linux/regmap.h>
 #include <linux/regulator/consumer.h>
 #include <linux/regulator/machine.h>
@@ -746,6 +747,44 @@ int arizona_of_get_named_gpio(struct arizona *arizona, const char *prop,
 }
 EXPORT_SYMBOL_GPL(arizona_of_get_named_gpio);
 
+int arizona_device_read_u32_array(struct arizona *arizona,
+				  const char *prop, bool mandatory,
+				  u32 *data, size_t num)
+{
+	int ret;
+
+	ret = device_property_read_u32_array(arizona->dev, prop, data, num);
+	switch (ret) {
+	case 0:
+		break;
+	case -EINVAL:
+		if (!mandatory)
+			break;
+
+		dev_err(arizona->dev, "Mandatory property %s is missing\n",
+			prop);
+		break;
+	default:
+		dev_err(arizona->dev, "Property %s is malformed: %d\n",
+			prop, ret);
+		break;
+	}
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(arizona_device_read_u32_array);
+
+unsigned int arizona_device_read_u32(struct arizona *arizona,
+				     const char *prop, bool mandatory)
+{
+	u32 data = 0;
+
+	arizona_device_read_u32_array(arizona, prop, mandatory, &data, 1);
+
+	return data;
+}
+EXPORT_SYMBOL_GPL(arizona_device_read_u32);
+
 static int arizona_of_get_core_pdata(struct arizona *arizona)
 {
 	struct arizona_pdata *pdata = &arizona->pdata;
include/linux/mfd/arizona/core.h +5 -0
index 847bdaf..1c3d39d 100644
@@ -160,5 +160,10 @@ int wm8997_patch(struct arizona *arizona);
 
 extern int arizona_of_get_named_gpio(struct arizona *arizona, const char *prop,
 				     bool mandatory);
+extern int arizona_device_read_u32_array(struct arizona *arizona,
+					 const char *prop, bool mandatory,
+					 u32 *data, size_t num);
+extern unsigned int arizona_device_read_u32(struct arizona *arizona,
+					    const char *prop, bool mandatory);
 
 #endif
Signature · 4 lines
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
#3 lore raw

Re: [PATCH 2/2] mfd: arizona: Add DT/ACPI u32 helper functions

Quoted 13 lines · Lee Jones
Quoted 8 lines · Charles Keepax

Add helpers to read u32's and arrays of u32's from device tree or ACPI using the new device properties API.

---
 drivers/mfd/arizona-core.c       |   39 ++++++++++++++++++++++++++++++++++++++
 include/linux/mfd/arizona/core.h |    5 ++++
 2 files changed, 44 insertions(+), 0 deletions(-)

Me no likey!

Quoted 8 lines

There are 100's of 'required' and 'optional' properties in the kernel and it's normally the decision to early return or not that seals the fate of a given driver. I'm not happy for platforms to start adding their own variants.

If you really do think these kinds of "helpers" add value, then make them generic, so everyone can make use of them. Personally, I'm dubious however.

Thats cool I don't really have any problem with dropping this patch and doing the necessary checking where appropriate.

Thanks,
Charles

Applied
#4 lore raw
In reply to Charles Keepax
Quoted 4 lines · Charles Keepax
---
 include/dt-bindings/mfd/arizona.h |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

Applied, thanks.

Quoted 23 lines
include/dt-bindings/mfd/arizona.h +14 -0
index c7af7c7..5556099 100644
@@ -90,4 +90,18 @@
 #define ARIZONA_INMODE_SE   1
 #define ARIZONA_INMODE_DMIC 2
 
+#define ARIZONA_MICD_TIME_CONTINUOUS                 0
+#define ARIZONA_MICD_TIME_250US                      1
+#define ARIZONA_MICD_TIME_500US                      2
+#define ARIZONA_MICD_TIME_1MS                        3
+#define ARIZONA_MICD_TIME_2MS                        4
+#define ARIZONA_MICD_TIME_4MS                        5
+#define ARIZONA_MICD_TIME_8MS                        6
+#define ARIZONA_MICD_TIME_16MS                       7
+#define ARIZONA_MICD_TIME_32MS                       8
+#define ARIZONA_MICD_TIME_64MS                       9
+#define ARIZONA_MICD_TIME_128MS                      10
+#define ARIZONA_MICD_TIME_256MS                      11
+#define ARIZONA_MICD_TIME_512MS                      12
+
 #endif
Signature · 4 lines
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog