devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW
@ 2017-12-07 21:10 Sinan Kaya
  2017-12-07 21:10 ` [PATCH V7 1/7] Documentation: DT: qcom_hidma: Bump HW revision for the " Sinan Kaya
                   ` (8 more replies)
  0 siblings, 9 replies; 18+ messages in thread
From: Sinan Kaya @ 2017-12-07 21:10 UTC (permalink / raw)
  To: dmaengine-u79uwXL29TY76Z2rM5mHXA, timur-sgV2jX0FEOL9JmXXK+q4OQ,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-acpi-u79uwXL29TY76Z2rM5mHXA,
	sakari.ailus-VuQAYsv1563Yd54FQh9/CA
  Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Sinan Kaya

Introduce new ACPI and OF device ids for thw HW along with the helper
functions.

Changes from v6:
* add const to the device callback parameter in fwnode.
* reorganize the callbacks in the code
* rename get_match_data() as device_get_match_data()
* place pointer checks into acpi_get_match_data()

Sinan Kaya (7):
  Documentation: DT: qcom_hidma: Bump HW revision for the bugfixed HW
  ACPI / bus: Introduce acpi_get_match_data() function
  device property: Introduce a common API to fetch device match data
  OF: properties: Implement get_match_data() callback
  ACPI: properties: Implement get_match_data() callback
  dmaengine: qcom_hidma: Add support for the new revision
  dmaengine: qcom_hidma: Add identity register support

 .../devicetree/bindings/dma/qcom_hidma_mgmt.txt    |  4 +--
 drivers/acpi/bus.c                                 | 18 ++++++++++
 drivers/acpi/property.c                            |  8 +++++
 drivers/base/property.c                            |  7 ++++
 drivers/dma/qcom/hidma.c                           | 41 ++++++++++------------
 drivers/of/property.c                              |  8 +++++
 include/linux/acpi.h                               |  6 ++++
 include/linux/fwnode.h                             |  4 +++
 include/linux/property.h                           |  2 ++
 9 files changed, 74 insertions(+), 24 deletions(-)

-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [PATCH V7 1/7] Documentation: DT: qcom_hidma: Bump HW revision for the bugfixed HW
  2017-12-07 21:10 [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW Sinan Kaya
@ 2017-12-07 21:10 ` Sinan Kaya
  2017-12-07 21:10 ` [PATCH V7 2/7] ACPI / bus: Introduce acpi_get_match_data() function Sinan Kaya
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Sinan Kaya @ 2017-12-07 21:10 UTC (permalink / raw)
  To: dmaengine, timur, devicetree, linux-acpi, sakari.ailus
  Cc: linux-arm-msm, linux-arm-kernel, Sinan Kaya, Vinod Koul,
	Rob Herring, Mark Rutland, open list

A new version of the HIDMA IP has been released with bug fixes. Bumping the
hardware version to differentiate from others.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
Reviewed-by: Rob Herring <robh@kernel.org>
---
 Documentation/devicetree/bindings/dma/qcom_hidma_mgmt.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/dma/qcom_hidma_mgmt.txt b/Documentation/devicetree/bindings/dma/qcom_hidma_mgmt.txt
index 55492c2..5d93d6d 100644
--- a/Documentation/devicetree/bindings/dma/qcom_hidma_mgmt.txt
+++ b/Documentation/devicetree/bindings/dma/qcom_hidma_mgmt.txt
@@ -47,8 +47,8 @@ When the OS is not in control of the management interface (i.e. it's a guest),
 the channel nodes appear on their own, not under a management node.
 
 Required properties:
-- compatible: must contain "qcom,hidma-1.0" for initial HW or "qcom,hidma-1.1"
-for MSI capable HW.
+- compatible: must contain "qcom,hidma-1.0" for initial HW or
+  "qcom,hidma-1.1"/"qcom,hidma-1.2" for MSI capable HW.
 - reg: Addresses for the transfer and event channel
 - interrupts: Should contain the event interrupt
 - desc-count: Number of asynchronous requests this channel can handle
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH V7 2/7] ACPI / bus: Introduce acpi_get_match_data() function
  2017-12-07 21:10 [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW Sinan Kaya
  2017-12-07 21:10 ` [PATCH V7 1/7] Documentation: DT: qcom_hidma: Bump HW revision for the " Sinan Kaya
@ 2017-12-07 21:10 ` Sinan Kaya
  2017-12-08 14:51   ` Rafael J. Wysocki
  2017-12-07 21:10 ` [PATCH V7 3/7] device property: Introduce a common API to fetch device match data Sinan Kaya
                   ` (6 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Sinan Kaya @ 2017-12-07 21:10 UTC (permalink / raw)
  To: dmaengine, timur, devicetree, linux-acpi, sakari.ailus
  Cc: linux-arm-msm, linux-arm-kernel, Sinan Kaya, Rafael J. Wysocki,
	Len Brown, open list

OF has of_device_get_match_data() function to extract driver specific data
structure. Add a similar function for ACPI.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/acpi/bus.c   | 18 ++++++++++++++++++
 include/linux/acpi.h |  6 ++++++
 2 files changed, 24 insertions(+)

diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index 4d0979e..f87ed3b 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -785,6 +785,24 @@ const struct acpi_device_id *acpi_match_device(const struct acpi_device_id *ids,
 }
 EXPORT_SYMBOL_GPL(acpi_match_device);
 
+void *acpi_get_match_data(const struct device *dev)
+{
+	const struct acpi_device_id *match;
+
+	if (!dev->driver)
+		return NULL;
+
+	if (!dev->driver->acpi_match_table)
+		return NULL;
+
+	match = acpi_match_device(dev->driver->acpi_match_table, dev);
+	if (!match)
+		return NULL;
+
+	return (void *)match->driver_data;
+}
+EXPORT_SYMBOL_GPL(acpi_get_match_data);
+
 int acpi_match_device_ids(struct acpi_device *device,
 			  const struct acpi_device_id *ids)
 {
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 502af53..a927260 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -584,6 +584,7 @@ extern int acpi_nvs_for_each_region(int (*func)(__u64, __u64, void *),
 const struct acpi_device_id *acpi_match_device(const struct acpi_device_id *ids,
 					       const struct device *dev);
 
+void *acpi_get_match_data(const struct device *dev);
 extern bool acpi_driver_match_device(struct device *dev,
 				     const struct device_driver *drv);
 int acpi_device_uevent_modalias(struct device *, struct kobj_uevent_env *);
@@ -755,6 +756,11 @@ static inline const struct acpi_device_id *acpi_match_device(
 	return NULL;
 }
 
+static inline void *acpi_get_match_data(const struct device *dev)
+{
+	return NULL;
+}
+
 static inline bool acpi_driver_match_device(struct device *dev,
 					    const struct device_driver *drv)
 {
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH V7 3/7] device property: Introduce a common API to fetch device match data
  2017-12-07 21:10 [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW Sinan Kaya
  2017-12-07 21:10 ` [PATCH V7 1/7] Documentation: DT: qcom_hidma: Bump HW revision for the " Sinan Kaya
  2017-12-07 21:10 ` [PATCH V7 2/7] ACPI / bus: Introduce acpi_get_match_data() function Sinan Kaya
@ 2017-12-07 21:10 ` Sinan Kaya
  2017-12-07 21:10 ` [PATCH V7 4/7] OF: properties: Implement get_match_data() callback Sinan Kaya
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Sinan Kaya @ 2017-12-07 21:10 UTC (permalink / raw)
  To: dmaengine, timur, devicetree, linux-acpi, sakari.ailus
  Cc: linux-arm-msm, linux-arm-kernel, Sinan Kaya, Greg Kroah-Hartman,
	Rafael J. Wysocki, Len Brown, Mika Westerberg, Dmitry Torokhov,
	Rob Herring, Kieran Bingham, open list

There is an OF/ACPI function to obtain the driver data. We want to hide
OF/ACPI details from the device drivers and abstract following the device
family of functions.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
Reviewed-by: Rob Herring <robh@kernel.org>
Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/base/property.c  | 7 +++++++
 include/linux/fwnode.h   | 4 ++++
 include/linux/property.h | 2 ++
 3 files changed, 13 insertions(+)

diff --git a/drivers/base/property.c b/drivers/base/property.c
index 7ed99c1..ee704a8 100644
--- a/drivers/base/property.c
+++ b/drivers/base/property.c
@@ -1335,3 +1335,10 @@ int fwnode_graph_parse_endpoint(const struct fwnode_handle *fwnode,
 	return fwnode_call_int_op(fwnode, graph_parse_endpoint, endpoint);
 }
 EXPORT_SYMBOL(fwnode_graph_parse_endpoint);
+
+void *device_get_match_data(struct device *dev)
+{
+	return fwnode_call_ptr_op(dev_fwnode(dev), device_get_match_data,
+				  dev);
+}
+EXPORT_SYMBOL_GPL(device_get_match_data);
diff --git a/include/linux/fwnode.h b/include/linux/fwnode.h
index 0c35b6c..e2b4b22 100644
--- a/include/linux/fwnode.h
+++ b/include/linux/fwnode.h
@@ -15,6 +15,7 @@
 #include <linux/types.h>
 
 struct fwnode_operations;
+struct device;
 
 struct fwnode_handle {
 	struct fwnode_handle *secondary;
@@ -51,6 +52,7 @@ struct fwnode_reference_args {
  * struct fwnode_operations - Operations for fwnode interface
  * @get: Get a reference to an fwnode.
  * @put: Put a reference to an fwnode.
+ * @device_get_match_data: Return the device driver match data.
  * @property_present: Return true if a property is present.
  * @property_read_integer_array: Read an array of integer properties. Return
  *				 zero on success, a negative error code
@@ -71,6 +73,8 @@ struct fwnode_operations {
 	void (*get)(struct fwnode_handle *fwnode);
 	void (*put)(struct fwnode_handle *fwnode);
 	bool (*device_is_available)(const struct fwnode_handle *fwnode);
+	void *(*device_get_match_data)(const struct fwnode_handle *fwnode,
+				       const struct device *dev);
 	bool (*property_present)(const struct fwnode_handle *fwnode,
 				 const char *propname);
 	int (*property_read_int_array)(const struct fwnode_handle *fwnode,
diff --git a/include/linux/property.h b/include/linux/property.h
index 6bebee1..01fa55b 100644
--- a/include/linux/property.h
+++ b/include/linux/property.h
@@ -275,6 +275,8 @@ int device_add_properties(struct device *dev,
 
 enum dev_dma_attr device_get_dma_attr(struct device *dev);
 
+void *device_get_match_data(struct device *dev);
+
 int device_get_phy_mode(struct device *dev);
 
 void *device_get_mac_address(struct device *dev, char *addr, int alen);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH V7 4/7] OF: properties: Implement get_match_data() callback
  2017-12-07 21:10 [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW Sinan Kaya
                   ` (2 preceding siblings ...)
  2017-12-07 21:10 ` [PATCH V7 3/7] device property: Introduce a common API to fetch device match data Sinan Kaya
@ 2017-12-07 21:10 ` Sinan Kaya
  2017-12-07 21:10 ` [PATCH V7 5/7] ACPI: " Sinan Kaya
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Sinan Kaya @ 2017-12-07 21:10 UTC (permalink / raw)
  To: dmaengine, timur, devicetree, linux-acpi, sakari.ailus
  Cc: linux-arm-msm, open list, Sinan Kaya, Rob Herring, Frank Rowand,
	linux-arm-kernel

Now that we have a get_match_data() callback as part of the firmware node,
implement the OF specific piece for it.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
Reviewed-by: Rob Herring <robh@kernel.org>
Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/of/property.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/of/property.c b/drivers/of/property.c
index 264c355..543e059 100644
--- a/drivers/of/property.c
+++ b/drivers/of/property.c
@@ -981,10 +981,18 @@ static int of_fwnode_graph_parse_endpoint(const struct fwnode_handle *fwnode,
 	return 0;
 }
 
+static void *
+of_fwnode_device_get_match_data(const struct fwnode_handle *fwnode,
+				const struct device *dev)
+{
+	return (void *)of_device_get_match_data(dev);
+}
+
 const struct fwnode_operations of_fwnode_ops = {
 	.get = of_fwnode_get,
 	.put = of_fwnode_put,
 	.device_is_available = of_fwnode_device_is_available,
+	.device_get_match_data = of_fwnode_device_get_match_data,
 	.property_present = of_fwnode_property_present,
 	.property_read_int_array = of_fwnode_property_read_int_array,
 	.property_read_string_array = of_fwnode_property_read_string_array,
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH V7 5/7] ACPI: properties: Implement get_match_data() callback
  2017-12-07 21:10 [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW Sinan Kaya
                   ` (3 preceding siblings ...)
  2017-12-07 21:10 ` [PATCH V7 4/7] OF: properties: Implement get_match_data() callback Sinan Kaya
@ 2017-12-07 21:10 ` Sinan Kaya
  2017-12-08 14:51   ` Rafael J. Wysocki
  2017-12-07 21:10 ` [PATCH V7 6/7] dmaengine: qcom_hidma: Add support for the new revision Sinan Kaya
                   ` (3 subsequent siblings)
  8 siblings, 1 reply; 18+ messages in thread
From: Sinan Kaya @ 2017-12-07 21:10 UTC (permalink / raw)
  To: dmaengine, timur, devicetree, linux-acpi, sakari.ailus
  Cc: linux-arm-msm, linux-arm-kernel, Sinan Kaya, Rafael J. Wysocki,
	Len Brown, open list

Now that we have a get_match_data() callback as part of the firmware node,
implement the ACPI specific piece for it.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/acpi/property.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c
index e26ea20..466d150 100644
--- a/drivers/acpi/property.c
+++ b/drivers/acpi/property.c
@@ -1271,9 +1271,17 @@ static int acpi_fwnode_graph_parse_endpoint(const struct fwnode_handle *fwnode,
 	return 0;
 }
 
+static void *
+acpi_fwnode_device_get_match_data(const struct fwnode_handle *fwnode,
+				  const struct device *dev)
+{
+	return acpi_get_match_data(dev);
+}
+
 #define DECLARE_ACPI_FWNODE_OPS(ops) \
 	const struct fwnode_operations ops = {				\
 		.device_is_available = acpi_fwnode_device_is_available, \
+		.device_get_match_data = acpi_fwnode_device_get_match_data, \
 		.property_present = acpi_fwnode_property_present,	\
 		.property_read_int_array =				\
 			acpi_fwnode_property_read_int_array,		\
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH V7 6/7] dmaengine: qcom_hidma: Add support for the new revision
  2017-12-07 21:10 [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW Sinan Kaya
                   ` (4 preceding siblings ...)
  2017-12-07 21:10 ` [PATCH V7 5/7] ACPI: " Sinan Kaya
@ 2017-12-07 21:10 ` Sinan Kaya
  2017-12-07 21:10 ` [PATCH V7 7/7] dmaengine: qcom_hidma: Add identity register support Sinan Kaya
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 18+ messages in thread
From: Sinan Kaya @ 2017-12-07 21:10 UTC (permalink / raw)
  To: dmaengine, timur, devicetree, linux-acpi, sakari.ailus
  Cc: linux-arm-msm, linux-arm-kernel, Sinan Kaya, Andy Gross,
	David Brown, Vinod Koul, Dan Williams,
	open list:ARM/QUALCOMM SUPPORT, open list

Add support for probing the newer HW and also organize MSI capable hardware
into an array for maintenance reasons.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/dma/qcom/hidma.c | 34 +++++++++++++---------------------
 1 file changed, 13 insertions(+), 21 deletions(-)

diff --git a/drivers/dma/qcom/hidma.c b/drivers/dma/qcom/hidma.c
index e366985..c146c6d 100644
--- a/drivers/dma/qcom/hidma.c
+++ b/drivers/dma/qcom/hidma.c
@@ -50,6 +50,7 @@
 #include <linux/slab.h>
 #include <linux/spinlock.h>
 #include <linux/of_dma.h>
+#include <linux/of_device.h>
 #include <linux/property.h>
 #include <linux/delay.h>
 #include <linux/acpi.h>
@@ -104,6 +105,9 @@ static void hidma_free(struct hidma_dev *dmadev)
 module_param(nr_desc_prm, uint, 0644);
 MODULE_PARM_DESC(nr_desc_prm, "number of descriptors (default: 0)");
 
+enum hidma_cap {
+	HIDMA_MSI_CAP = 1,
+};
 
 /* process completed descriptors */
 static void hidma_process_completed(struct hidma_chan *mchan)
@@ -736,25 +740,12 @@ static int hidma_request_msi(struct hidma_dev *dmadev,
 #endif
 }
 
-static bool hidma_msi_capable(struct device *dev)
+static bool hidma_test_capability(struct device *dev, enum hidma_cap test_cap)
 {
-	struct acpi_device *adev = ACPI_COMPANION(dev);
-	const char *of_compat;
-	int ret = -EINVAL;
-
-	if (!adev || acpi_disabled) {
-		ret = device_property_read_string(dev, "compatible",
-						  &of_compat);
-		if (ret)
-			return false;
+	enum hidma_cap cap;
 
-		ret = strcmp(of_compat, "qcom,hidma-1.1");
-	} else {
-#ifdef CONFIG_ACPI
-		ret = strcmp(acpi_device_hid(adev), "QCOM8062");
-#endif
-	}
-	return ret == 0;
+	cap = (enum hidma_cap) device_get_match_data(dev);
+	return cap ? ((cap & test_cap) > 0) : 0;
 }
 
 static int hidma_probe(struct platform_device *pdev)
@@ -834,8 +825,7 @@ static int hidma_probe(struct platform_device *pdev)
 	 * Determine the MSI capability of the platform. Old HW doesn't
 	 * support MSI.
 	 */
-	msi = hidma_msi_capable(&pdev->dev);
-
+	msi = hidma_test_capability(&pdev->dev, HIDMA_MSI_CAP);
 	device_property_read_u32(&pdev->dev, "desc-count",
 				 &dmadev->nr_descriptors);
 
@@ -953,7 +943,8 @@ static int hidma_remove(struct platform_device *pdev)
 #if IS_ENABLED(CONFIG_ACPI)
 static const struct acpi_device_id hidma_acpi_ids[] = {
 	{"QCOM8061"},
-	{"QCOM8062"},
+	{"QCOM8062", HIDMA_MSI_CAP},
+	{"QCOM8063", HIDMA_MSI_CAP},
 	{},
 };
 MODULE_DEVICE_TABLE(acpi, hidma_acpi_ids);
@@ -961,7 +952,8 @@ static int hidma_remove(struct platform_device *pdev)
 
 static const struct of_device_id hidma_match[] = {
 	{.compatible = "qcom,hidma-1.0",},
-	{.compatible = "qcom,hidma-1.1",},
+	{.compatible = "qcom,hidma-1.1", .data = (void *)(HIDMA_MSI_CAP),},
+	{.compatible = "qcom,hidma-1.2", .data = (void *)(HIDMA_MSI_CAP),},
 	{},
 };
 MODULE_DEVICE_TABLE(of, hidma_match);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [PATCH V7 7/7] dmaengine: qcom_hidma: Add identity register support
  2017-12-07 21:10 [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW Sinan Kaya
                   ` (5 preceding siblings ...)
  2017-12-07 21:10 ` [PATCH V7 6/7] dmaengine: qcom_hidma: Add support for the new revision Sinan Kaya
@ 2017-12-07 21:10 ` Sinan Kaya
  2017-12-08 13:48 ` [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW Rafael J. Wysocki
  2017-12-12  5:38 ` Vinod Koul
  8 siblings, 0 replies; 18+ messages in thread
From: Sinan Kaya @ 2017-12-07 21:10 UTC (permalink / raw)
  To: dmaengine, timur, devicetree, linux-acpi, sakari.ailus
  Cc: linux-arm-msm, linux-arm-kernel, Sinan Kaya, Andy Gross,
	David Brown, Vinod Koul, Dan Williams,
	open list:ARM/QUALCOMM SUPPORT, open list

The location for destination event channel register has been relocated from
offset 0x28 to 0x40. Update the code accordingly.

Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
---
 drivers/dma/qcom/hidma.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/drivers/dma/qcom/hidma.c b/drivers/dma/qcom/hidma.c
index c146c6d..963cc52 100644
--- a/drivers/dma/qcom/hidma.c
+++ b/drivers/dma/qcom/hidma.c
@@ -107,6 +107,7 @@ static void hidma_free(struct hidma_dev *dmadev)
 
 enum hidma_cap {
 	HIDMA_MSI_CAP = 1,
+	HIDMA_IDENTITY_CAP,
 };
 
 /* process completed descriptors */
@@ -838,7 +839,10 @@ static int hidma_probe(struct platform_device *pdev)
 	if (!dmadev->nr_descriptors)
 		dmadev->nr_descriptors = HIDMA_NR_DEFAULT_DESC;
 
-	dmadev->chidx = readl(dmadev->dev_trca + 0x28);
+	if (hidma_test_capability(&pdev->dev, HIDMA_IDENTITY_CAP))
+		dmadev->chidx = readl(dmadev->dev_trca + 0x40);
+	else
+		dmadev->chidx = readl(dmadev->dev_trca + 0x28);
 
 	/* Set DMA mask to 64 bits. */
 	rc = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
@@ -944,7 +948,7 @@ static int hidma_remove(struct platform_device *pdev)
 static const struct acpi_device_id hidma_acpi_ids[] = {
 	{"QCOM8061"},
 	{"QCOM8062", HIDMA_MSI_CAP},
-	{"QCOM8063", HIDMA_MSI_CAP},
+	{"QCOM8063", (HIDMA_MSI_CAP | HIDMA_IDENTITY_CAP)},
 	{},
 };
 MODULE_DEVICE_TABLE(acpi, hidma_acpi_ids);
@@ -953,7 +957,8 @@ static int hidma_remove(struct platform_device *pdev)
 static const struct of_device_id hidma_match[] = {
 	{.compatible = "qcom,hidma-1.0",},
 	{.compatible = "qcom,hidma-1.1", .data = (void *)(HIDMA_MSI_CAP),},
-	{.compatible = "qcom,hidma-1.2", .data = (void *)(HIDMA_MSI_CAP),},
+	{.compatible = "qcom,hidma-1.2",
+	 .data = (void *)(HIDMA_MSI_CAP | HIDMA_IDENTITY_CAP),},
 	{},
 };
 MODULE_DEVICE_TABLE(of, hidma_match);
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* Re: [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW
  2017-12-07 21:10 [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW Sinan Kaya
                   ` (6 preceding siblings ...)
  2017-12-07 21:10 ` [PATCH V7 7/7] dmaengine: qcom_hidma: Add identity register support Sinan Kaya
@ 2017-12-08 13:48 ` Rafael J. Wysocki
  2017-12-08 14:44   ` Sinan Kaya
  2017-12-12  5:38 ` Vinod Koul
  8 siblings, 1 reply; 18+ messages in thread
From: Rafael J. Wysocki @ 2017-12-08 13:48 UTC (permalink / raw)
  To: Sinan Kaya
  Cc: dmaengine, Timur Tabi, devicetree, ACPI Devel Maling List,
	Sakari Ailus, linux-arm-msm, linux-arm-kernel

On Thu, Dec 7, 2017 at 10:10 PM, Sinan Kaya <okaya@codeaurora.org> wrote:
> Introduce new ACPI and OF device ids for thw HW along with the helper
> functions.
>
> Changes from v6:
> * add const to the device callback parameter in fwnode.
> * reorganize the callbacks in the code
> * rename get_match_data() as device_get_match_data()
> * place pointer checks into acpi_get_match_data()
>
> Sinan Kaya (7):
>   Documentation: DT: qcom_hidma: Bump HW revision for the bugfixed HW
>   ACPI / bus: Introduce acpi_get_match_data() function
>   device property: Introduce a common API to fetch device match data
>   OF: properties: Implement get_match_data() callback
>   ACPI: properties: Implement get_match_data() callback
>   dmaengine: qcom_hidma: Add support for the new revision
>   dmaengine: qcom_hidma: Add identity register support
>
>  .../devicetree/bindings/dma/qcom_hidma_mgmt.txt    |  4 +--
>  drivers/acpi/bus.c                                 | 18 ++++++++++
>  drivers/acpi/property.c                            |  8 +++++
>  drivers/base/property.c                            |  7 ++++
>  drivers/dma/qcom/hidma.c                           | 41 ++++++++++------------
>  drivers/of/property.c                              |  8 +++++
>  include/linux/acpi.h                               |  6 ++++
>  include/linux/fwnode.h                             |  4 +++
>  include/linux/property.h                           |  2 ++
>  9 files changed, 74 insertions(+), 24 deletions(-)
>
> --

The series is fine by me, by how do you want to route it?

Thanks,
Rafael

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW
  2017-12-08 13:48 ` [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW Rafael J. Wysocki
@ 2017-12-08 14:44   ` Sinan Kaya
  2017-12-10 16:39     ` Vinod Koul
  0 siblings, 1 reply; 18+ messages in thread
From: Sinan Kaya @ 2017-12-08 14:44 UTC (permalink / raw)
  To: Rafael J. Wysocki, Vinod Koul
  Cc: dmaengine, Timur Tabi, devicetree, ACPI Devel Maling List,
	Sakari Ailus, linux-arm-msm, linux-arm-kernel

On 12/8/2017 8:48 AM, Rafael J. Wysocki wrote:
> The series is fine by me, by how do you want to route it?

Probably through the DMA engine route as it has pieces that didn't get any
review from Vinod yet.

Vinod,

Do you have any preference?

Sinan

-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH V7 2/7] ACPI / bus: Introduce acpi_get_match_data() function
  2017-12-07 21:10 ` [PATCH V7 2/7] ACPI / bus: Introduce acpi_get_match_data() function Sinan Kaya
@ 2017-12-08 14:51   ` Rafael J. Wysocki
  0 siblings, 0 replies; 18+ messages in thread
From: Rafael J. Wysocki @ 2017-12-08 14:51 UTC (permalink / raw)
  To: Sinan Kaya
  Cc: dmaengine, Timur Tabi, devicetree, ACPI Devel Maling List,
	Sakari Ailus, linux-arm-msm, linux-arm-kernel, Rafael J. Wysocki,
	Len Brown, open list

On Thu, Dec 7, 2017 at 10:10 PM, Sinan Kaya <okaya@codeaurora.org> wrote:
> OF has of_device_get_match_data() function to extract driver specific data
> structure. Add a similar function for ACPI.
>
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> ---
>  drivers/acpi/bus.c   | 18 ++++++++++++++++++
>  include/linux/acpi.h |  6 ++++++
>  2 files changed, 24 insertions(+)
>
> diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
> index 4d0979e..f87ed3b 100644
> --- a/drivers/acpi/bus.c
> +++ b/drivers/acpi/bus.c
> @@ -785,6 +785,24 @@ const struct acpi_device_id *acpi_match_device(const struct acpi_device_id *ids,
>  }
>  EXPORT_SYMBOL_GPL(acpi_match_device);
>
> +void *acpi_get_match_data(const struct device *dev)
> +{
> +       const struct acpi_device_id *match;
> +
> +       if (!dev->driver)
> +               return NULL;
> +
> +       if (!dev->driver->acpi_match_table)
> +               return NULL;

You can safely check dev->driver and this in the same statement (as
long as the first check to be made is on the left).

> +
> +       match = acpi_match_device(dev->driver->acpi_match_table, dev);
> +       if (!match)
> +               return NULL;
> +
> +       return (void *)match->driver_data;
> +}
> +EXPORT_SYMBOL_GPL(acpi_get_match_data);
> +
>  int acpi_match_device_ids(struct acpi_device *device,
>                           const struct acpi_device_id *ids)
>  {
> diff --git a/include/linux/acpi.h b/include/linux/acpi.h
> index 502af53..a927260 100644
> --- a/include/linux/acpi.h
> +++ b/include/linux/acpi.h
> @@ -584,6 +584,7 @@ extern int acpi_nvs_for_each_region(int (*func)(__u64, __u64, void *),
>  const struct acpi_device_id *acpi_match_device(const struct acpi_device_id *ids,
>                                                const struct device *dev);
>
> +void *acpi_get_match_data(const struct device *dev);
>  extern bool acpi_driver_match_device(struct device *dev,
>                                      const struct device_driver *drv);
>  int acpi_device_uevent_modalias(struct device *, struct kobj_uevent_env *);
> @@ -755,6 +756,11 @@ static inline const struct acpi_device_id *acpi_match_device(
>         return NULL;
>  }
>
> +static inline void *acpi_get_match_data(const struct device *dev)
> +{
> +       return NULL;
> +}
> +
>  static inline bool acpi_driver_match_device(struct device *dev,
>                                             const struct device_driver *drv)
>  {
> --

But anyway

Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH V7 5/7] ACPI: properties: Implement get_match_data() callback
  2017-12-07 21:10 ` [PATCH V7 5/7] ACPI: " Sinan Kaya
@ 2017-12-08 14:51   ` Rafael J. Wysocki
  0 siblings, 0 replies; 18+ messages in thread
From: Rafael J. Wysocki @ 2017-12-08 14:51 UTC (permalink / raw)
  To: Sinan Kaya
  Cc: dmaengine, Timur Tabi, devicetree, ACPI Devel Maling List,
	Sakari Ailus, linux-arm-msm, linux-arm-kernel, Rafael J. Wysocki,
	Len Brown, open list

On Thu, Dec 7, 2017 at 10:10 PM, Sinan Kaya <okaya@codeaurora.org> wrote:
> Now that we have a get_match_data() callback as part of the firmware node,
> implement the ACPI specific piece for it.
>
> Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
> Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
>  drivers/acpi/property.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
>
> diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c
> index e26ea20..466d150 100644
> --- a/drivers/acpi/property.c
> +++ b/drivers/acpi/property.c
> @@ -1271,9 +1271,17 @@ static int acpi_fwnode_graph_parse_endpoint(const struct fwnode_handle *fwnode,
>         return 0;
>  }
>
> +static void *
> +acpi_fwnode_device_get_match_data(const struct fwnode_handle *fwnode,
> +                                 const struct device *dev)
> +{
> +       return acpi_get_match_data(dev);
> +}
> +
>  #define DECLARE_ACPI_FWNODE_OPS(ops) \
>         const struct fwnode_operations ops = {                          \
>                 .device_is_available = acpi_fwnode_device_is_available, \
> +               .device_get_match_data = acpi_fwnode_device_get_match_data, \
>                 .property_present = acpi_fwnode_property_present,       \
>                 .property_read_int_array =                              \
>                         acpi_fwnode_property_read_int_array,            \
> --

Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW
  2017-12-08 14:44   ` Sinan Kaya
@ 2017-12-10 16:39     ` Vinod Koul
  0 siblings, 0 replies; 18+ messages in thread
From: Vinod Koul @ 2017-12-10 16:39 UTC (permalink / raw)
  To: Sinan Kaya
  Cc: Rafael J. Wysocki, dmaengine, Timur Tabi, devicetree,
	ACPI Devel Maling List, Sakari Ailus, linux-arm-msm,
	linux-arm-kernel

On Fri, Dec 08, 2017 at 09:44:46AM -0500, Sinan Kaya wrote:
> On 12/8/2017 8:48 AM, Rafael J. Wysocki wrote:
> > The series is fine by me, by how do you want to route it?
> 
> Probably through the DMA engine route as it has pieces that didn't get any
> review from Vinod yet.
> 
> Vinod,
> 
> Do you have any preference?

Yeah sure sounds okay to me as DMA parts are dependent on these.
Rafael if you need an immutable tag to pull this, let me know.

Thanks
-- 
~Vinod

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW
  2017-12-07 21:10 [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW Sinan Kaya
                   ` (7 preceding siblings ...)
  2017-12-08 13:48 ` [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW Rafael J. Wysocki
@ 2017-12-12  5:38 ` Vinod Koul
  2017-12-12 12:36   ` Rafael J. Wysocki
  8 siblings, 1 reply; 18+ messages in thread
From: Vinod Koul @ 2017-12-12  5:38 UTC (permalink / raw)
  To: Sinan Kaya
  Cc: dmaengine, timur, devicetree, linux-acpi, sakari.ailus,
	linux-arm-msm, linux-arm-kernel

On Thu, Dec 07, 2017 at 04:10:24PM -0500, Sinan Kaya wrote:
> Introduce new ACPI and OF device ids for thw HW along with the helper
> functions.
> 
> Changes from v6:
> * add const to the device callback parameter in fwnode.
> * reorganize the callbacks in the code
> * rename get_match_data() as device_get_match_data()
> * place pointer checks into acpi_get_match_data()

This fails for me at 3rd patch. I am on -rc1 is there a dependency?

-- 
~Vinod

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW
  2017-12-12  5:38 ` Vinod Koul
@ 2017-12-12 12:36   ` Rafael J. Wysocki
  2017-12-13  0:09     ` Sinan Kaya
  0 siblings, 1 reply; 18+ messages in thread
From: Rafael J. Wysocki @ 2017-12-12 12:36 UTC (permalink / raw)
  To: Vinod Koul
  Cc: Sinan Kaya, dmaengine, Timur Tabi, devicetree,
	ACPI Devel Maling List, Sakari Ailus, linux-arm-msm,
	linux-arm-kernel

On Tue, Dec 12, 2017 at 6:38 AM, Vinod Koul <vinod.koul@intel.com> wrote:
> On Thu, Dec 07, 2017 at 04:10:24PM -0500, Sinan Kaya wrote:
>> Introduce new ACPI and OF device ids for thw HW along with the helper
>> functions.
>>
>> Changes from v6:
>> * add const to the device callback parameter in fwnode.
>> * reorganize the callbacks in the code
>> * rename get_match_data() as device_get_match_data()
>> * place pointer checks into acpi_get_match_data()
>
> This fails for me at 3rd patch. I am on -rc1 is there a dependency?

There shouldn't be any.

According to git, all changes to the files touched by the [3/7] are in
-rc1 already.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW
  2017-12-12 12:36   ` Rafael J. Wysocki
@ 2017-12-13  0:09     ` Sinan Kaya
  2017-12-13  0:44       ` Sinan Kaya
  0 siblings, 1 reply; 18+ messages in thread
From: Sinan Kaya @ 2017-12-13  0:09 UTC (permalink / raw)
  To: Rafael J. Wysocki, Vinod Koul
  Cc: dmaengine, Timur Tabi, devicetree, ACPI Devel Maling List,
	Sakari Ailus, linux-arm-msm, linux-arm-kernel

On 12/12/2017 7:36 AM, Rafael J. Wysocki wrote:
> On Tue, Dec 12, 2017 at 6:38 AM, Vinod Koul <vinod.koul@intel.com> wrote:
>> On Thu, Dec 07, 2017 at 04:10:24PM -0500, Sinan Kaya wrote:
>>> Introduce new ACPI and OF device ids for thw HW along with the helper
>>> functions.
>>>
>>> Changes from v6:
>>> * add const to the device callback parameter in fwnode.
>>> * reorganize the callbacks in the code
>>> * rename get_match_data() as device_get_match_data()
>>> * place pointer checks into acpi_get_match_data()
>>
>> This fails for me at 3rd patch. I am on -rc1 is there a dependency?
> 
> There shouldn't be any.
> 
> According to git, all changes to the files touched by the [3/7] are in
> -rc1 already.
> 

Let me know if you were able to resolve the conflict. I can rebase against
a development tree if you can point me to there.

-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW
  2017-12-13  0:09     ` Sinan Kaya
@ 2017-12-13  0:44       ` Sinan Kaya
  2017-12-13  3:19         ` Vinod Koul
  0 siblings, 1 reply; 18+ messages in thread
From: Sinan Kaya @ 2017-12-13  0:44 UTC (permalink / raw)
  To: Rafael J. Wysocki, Vinod Koul
  Cc: dmaengine, Timur Tabi, devicetree, ACPI Devel Maling List,
	Sakari Ailus, linux-arm-msm, linux-arm-kernel

On 12/12/2017 7:09 PM, Sinan Kaya wrote:
> On 12/12/2017 7:36 AM, Rafael J. Wysocki wrote:
>> On Tue, Dec 12, 2017 at 6:38 AM, Vinod Koul <vinod.koul@intel.com> wrote:
>>> On Thu, Dec 07, 2017 at 04:10:24PM -0500, Sinan Kaya wrote:
>>>> Introduce new ACPI and OF device ids for thw HW along with the helper
>>>> functions.
>>>>
>>>> Changes from v6:
>>>> * add const to the device callback parameter in fwnode.
>>>> * reorganize the callbacks in the code
>>>> * rename get_match_data() as device_get_match_data()
>>>> * place pointer checks into acpi_get_match_data()
>>>
>>> This fails for me at 3rd patch. I am on -rc1 is there a dependency?
>>
>> There shouldn't be any.
>>
>> According to git, all changes to the files touched by the [3/7] are in
>> -rc1 already.
>>
> 
> Let me know if you were able to resolve the conflict. I can rebase against
> a development tree if you can point me to there.
> 

Apparently, my patches were based of 4.14 kernel. 

I just rebased to 4.15-rc1.

I can post a new version. Let me know.

-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.

^ permalink raw reply	[flat|nested] 18+ messages in thread

* Re: [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW
  2017-12-13  0:44       ` Sinan Kaya
@ 2017-12-13  3:19         ` Vinod Koul
  0 siblings, 0 replies; 18+ messages in thread
From: Vinod Koul @ 2017-12-13  3:19 UTC (permalink / raw)
  To: Sinan Kaya
  Cc: Rafael J. Wysocki, dmaengine, Timur Tabi, devicetree,
	ACPI Devel Maling List, Sakari Ailus, linux-arm-msm,
	linux-arm-kernel

On Tue, Dec 12, 2017 at 07:44:27PM -0500, Sinan Kaya wrote:
> On 12/12/2017 7:09 PM, Sinan Kaya wrote:
> > On 12/12/2017 7:36 AM, Rafael J. Wysocki wrote:
> >> On Tue, Dec 12, 2017 at 6:38 AM, Vinod Koul <vinod.koul@intel.com> wrote:
> >>> On Thu, Dec 07, 2017 at 04:10:24PM -0500, Sinan Kaya wrote:
> >>>> Introduce new ACPI and OF device ids for thw HW along with the helper
> >>>> functions.
> >>>>
> >>>> Changes from v6:
> >>>> * add const to the device callback parameter in fwnode.
> >>>> * reorganize the callbacks in the code
> >>>> * rename get_match_data() as device_get_match_data()
> >>>> * place pointer checks into acpi_get_match_data()
> >>>
> >>> This fails for me at 3rd patch. I am on -rc1 is there a dependency?
> >>
> >> There shouldn't be any.
> >>
> >> According to git, all changes to the files touched by the [3/7] are in
> >> -rc1 already.
> >>
> > 
> > Let me know if you were able to resolve the conflict. I can rebase against
> > a development tree if you can point me to there.
> > 
> 
> Apparently, my patches were based of 4.14 kernel. 
> 
> I just rebased to 4.15-rc1.
> 
> I can post a new version. Let me know.

Sure that should help

-- 
~Vinod

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2017-12-13  3:19 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-07 21:10 [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW Sinan Kaya
2017-12-07 21:10 ` [PATCH V7 1/7] Documentation: DT: qcom_hidma: Bump HW revision for the " Sinan Kaya
2017-12-07 21:10 ` [PATCH V7 2/7] ACPI / bus: Introduce acpi_get_match_data() function Sinan Kaya
2017-12-08 14:51   ` Rafael J. Wysocki
2017-12-07 21:10 ` [PATCH V7 3/7] device property: Introduce a common API to fetch device match data Sinan Kaya
2017-12-07 21:10 ` [PATCH V7 4/7] OF: properties: Implement get_match_data() callback Sinan Kaya
2017-12-07 21:10 ` [PATCH V7 5/7] ACPI: " Sinan Kaya
2017-12-08 14:51   ` Rafael J. Wysocki
2017-12-07 21:10 ` [PATCH V7 6/7] dmaengine: qcom_hidma: Add support for the new revision Sinan Kaya
2017-12-07 21:10 ` [PATCH V7 7/7] dmaengine: qcom_hidma: Add identity register support Sinan Kaya
2017-12-08 13:48 ` [PATCH V7 0/7] dmaengine: qcom_hidma: add support for bugfixed HW Rafael J. Wysocki
2017-12-08 14:44   ` Sinan Kaya
2017-12-10 16:39     ` Vinod Koul
2017-12-12  5:38 ` Vinod Koul
2017-12-12 12:36   ` Rafael J. Wysocki
2017-12-13  0:09     ` Sinan Kaya
2017-12-13  0:44       ` Sinan Kaya
2017-12-13  3:19         ` Vinod Koul

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).