All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support
@ 2015-10-12 19:46 ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-12 19:46 UTC (permalink / raw)
  To: corbet, ssantosh, linux-doc, linux-kernel, linux-arm-kernel,
	robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, linux,
	devicetree, arnd

This patch series enable accumulator queue support for K2 SoCs. Accumulator
queues are a type of qmss queue that is monitored by the PDSP firmware and
accumulated. Host is interrupted by PDSP firmware when packets become
available in a ring buffer shared between the host and PDSP.

There was an issue raised when merging the original patch set at
 (1) https://lkml.org/lkml/2015/9/4/681
	[PATCH v1 1/2] soc: ti: display firmware file name as part of boot log
 (2) https://lkml.org/lkml/2015/9/4/680
	[PATCH v1 2/2] ARM: dts: keystone: enable accumulator channels

This series fixes the issues raised against above patch set. Key issues
addressed.

	- Remove the firmware filename from DT and add it to the driver.
	  Use a name ks2_qmss_pdsp_acc48.bin. The idea is this can be a
	  soft link pointing to the real firmware file in file system.

	- Move the description of the driver design from DT document to one
	  under Documentation/arm/keystone/knav-qmss.txt. Update the this
	  document with location of acc firmware available under
	  linux-firmware.git.

Additionally added accumulator queue support optional so that lack of
firmware in the file system will not cause other queue types not available
due to driver probe failure.

Murali Karicheri (4):
  Documentation: dt: soc: move driver description to a separate document
  soc: ti: add firmware file name as part of the driver
  ARM: dts: keystone: enable accumulator channels
  soc: ti: qmss: make acc queue support optional in the driver

 Documentation/arm/keystone/knav-qmss.txt           | 56 ++++++++++++++++++
 .../bindings/soc/ti/keystone-navigator-qmss.txt    | 21 ++-----
 arch/arm/boot/dts/k2e-netcp.dtsi                   | 23 ++++++++
 arch/arm/boot/dts/k2hk-netcp.dtsi                  | 24 ++++++++
 arch/arm/boot/dts/k2l-netcp.dtsi                   | 23 ++++++++
 drivers/soc/ti/knav_qmss.h                         |  3 +-
 drivers/soc/ti/knav_qmss_acc.c                     | 10 +++-
 drivers/soc/ti/knav_qmss_queue.c                   | 67 ++++++++++++++--------
 8 files changed, 183 insertions(+), 44 deletions(-)
 create mode 100644 Documentation/arm/keystone/knav-qmss.txt

-- 
1.9.1


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

* [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support
@ 2015-10-12 19:46 ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-12 19:46 UTC (permalink / raw)
  To: corbet, ssantosh, linux-doc, linux-kernel, linux-arm-kernel,
	robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, linux,
	devicetree, arnd

This patch series enable accumulator queue support for K2 SoCs. Accumulator
queues are a type of qmss queue that is monitored by the PDSP firmware and
accumulated. Host is interrupted by PDSP firmware when packets become
available in a ring buffer shared between the host and PDSP.

There was an issue raised when merging the original patch set at
 (1) https://lkml.org/lkml/2015/9/4/681
	[PATCH v1 1/2] soc: ti: display firmware file name as part of boot log
 (2) https://lkml.org/lkml/2015/9/4/680
	[PATCH v1 2/2] ARM: dts: keystone: enable accumulator channels

This series fixes the issues raised against above patch set. Key issues
addressed.

	- Remove the firmware filename from DT and add it to the driver.
	  Use a name ks2_qmss_pdsp_acc48.bin. The idea is this can be a
	  soft link pointing to the real firmware file in file system.

	- Move the description of the driver design from DT document to one
	  under Documentation/arm/keystone/knav-qmss.txt. Update the this
	  document with location of acc firmware available under
	  linux-firmware.git.

Additionally added accumulator queue support optional so that lack of
firmware in the file system will not cause other queue types not available
due to driver probe failure.

Murali Karicheri (4):
  Documentation: dt: soc: move driver description to a separate document
  soc: ti: add firmware file name as part of the driver
  ARM: dts: keystone: enable accumulator channels
  soc: ti: qmss: make acc queue support optional in the driver

 Documentation/arm/keystone/knav-qmss.txt           | 56 ++++++++++++++++++
 .../bindings/soc/ti/keystone-navigator-qmss.txt    | 21 ++-----
 arch/arm/boot/dts/k2e-netcp.dtsi                   | 23 ++++++++
 arch/arm/boot/dts/k2hk-netcp.dtsi                  | 24 ++++++++
 arch/arm/boot/dts/k2l-netcp.dtsi                   | 23 ++++++++
 drivers/soc/ti/knav_qmss.h                         |  3 +-
 drivers/soc/ti/knav_qmss_acc.c                     | 10 +++-
 drivers/soc/ti/knav_qmss_queue.c                   | 67 ++++++++++++++--------
 8 files changed, 183 insertions(+), 44 deletions(-)
 create mode 100644 Documentation/arm/keystone/knav-qmss.txt

-- 
1.9.1

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

* [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support
@ 2015-10-12 19:46 ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-12 19:46 UTC (permalink / raw)
  To: linux-arm-kernel

This patch series enable accumulator queue support for K2 SoCs. Accumulator
queues are a type of qmss queue that is monitored by the PDSP firmware and
accumulated. Host is interrupted by PDSP firmware when packets become
available in a ring buffer shared between the host and PDSP.

There was an issue raised when merging the original patch set at
 (1) https://lkml.org/lkml/2015/9/4/681
	[PATCH v1 1/2] soc: ti: display firmware file name as part of boot log
 (2) https://lkml.org/lkml/2015/9/4/680
	[PATCH v1 2/2] ARM: dts: keystone: enable accumulator channels

This series fixes the issues raised against above patch set. Key issues
addressed.

	- Remove the firmware filename from DT and add it to the driver.
	  Use a name ks2_qmss_pdsp_acc48.bin. The idea is this can be a
	  soft link pointing to the real firmware file in file system.

	- Move the description of the driver design from DT document to one
	  under Documentation/arm/keystone/knav-qmss.txt. Update the this
	  document with location of acc firmware available under
	  linux-firmware.git.

Additionally added accumulator queue support optional so that lack of
firmware in the file system will not cause other queue types not available
due to driver probe failure.

Murali Karicheri (4):
  Documentation: dt: soc: move driver description to a separate document
  soc: ti: add firmware file name as part of the driver
  ARM: dts: keystone: enable accumulator channels
  soc: ti: qmss: make acc queue support optional in the driver

 Documentation/arm/keystone/knav-qmss.txt           | 56 ++++++++++++++++++
 .../bindings/soc/ti/keystone-navigator-qmss.txt    | 21 ++-----
 arch/arm/boot/dts/k2e-netcp.dtsi                   | 23 ++++++++
 arch/arm/boot/dts/k2hk-netcp.dtsi                  | 24 ++++++++
 arch/arm/boot/dts/k2l-netcp.dtsi                   | 23 ++++++++
 drivers/soc/ti/knav_qmss.h                         |  3 +-
 drivers/soc/ti/knav_qmss_acc.c                     | 10 +++-
 drivers/soc/ti/knav_qmss_queue.c                   | 67 ++++++++++++++--------
 8 files changed, 183 insertions(+), 44 deletions(-)
 create mode 100644 Documentation/arm/keystone/knav-qmss.txt

-- 
1.9.1

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

* [PATCH 1/4] Documentation: dt: soc: move driver description to a separate document
  2015-10-12 19:46 ` Murali Karicheri
  (?)
@ 2015-10-12 19:46   ` Murali Karicheri
  -1 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-12 19:46 UTC (permalink / raw)
  To: corbet, ssantosh, linux-doc, linux-kernel, linux-arm-kernel,
	robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, linux,
	devicetree, arnd

Currently the DT bindings have details about the driver as well. This
patch moves this to a separate document for knav qmss driver so that
driver detail update can be done as needed without polluting the DT
bindings description.

Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
---
 Documentation/arm/keystone/knav-qmss.txt           | 24 ++++++++++++++++++++++
 .../bindings/soc/ti/keystone-navigator-qmss.txt    | 20 ++++--------------
 2 files changed, 28 insertions(+), 16 deletions(-)
 create mode 100644 Documentation/arm/keystone/knav-qmss.txt

diff --git a/Documentation/arm/keystone/knav-qmss.txt b/Documentation/arm/keystone/knav-qmss.txt
new file mode 100644
index 0000000..79946d1
--- /dev/null
+++ b/Documentation/arm/keystone/knav-qmss.txt
@@ -0,0 +1,24 @@
+* Texas Instruments Keystone Navigator Queue Management SubSystem driver
+
+Driver source code path
+  drivers/soc/ti/knav_qmss.c
+  drivers/soc/ti/knav_qmss_acc.c
+
+The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
+the main hardware sub system which forms the backbone of the Keystone
+multi-core Navigator. QMSS consist of queue managers, packed-data structure
+processors(PDSP), linking RAM, descriptor pools and infrastructure
+Packet DMA.
+The Queue Manager is a hardware module that is responsible for accelerating
+management of the packet queues. Packets are queued/de-queued by writing or
+reading descriptor address to a particular memory mapped location. The PDSPs
+perform QMSS related functions like accumulation, QoS, or event management.
+Linking RAM registers are used to link the descriptors which are stored in
+descriptor RAM. Descriptor RAM is configurable as internal or external memory.
+The QMSS driver manages the PDSP setups, linking RAM regions,
+queue pool management (allocation, push, pop and notify) and descriptor
+pool management.
+
+knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
+allocate descriptor pools, map the descriptors, push/pop to queues etc. For
+details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
diff --git a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
index d8e8cdb..2cecea1 100644
--- a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
+++ b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
@@ -1,20 +1,8 @@
-* Texas Instruments Keystone Navigator Queue Management SubSystem driver
-
-The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
-the main hardware sub system which forms the backbone of the Keystone
-multi-core Navigator. QMSS consist of queue managers, packed-data structure
-processors(PDSP), linking RAM, descriptor pools and infrastructure
-Packet DMA.
-The Queue Manager is a hardware module that is responsible for accelerating
-management of the packet queues. Packets are queued/de-queued by writing or
-reading descriptor address to a particular memory mapped location. The PDSPs
-perform QMSS related functions like accumulation, QoS, or event management.
-Linking RAM registers are used to link the descriptors which are stored in
-descriptor RAM. Descriptor RAM is configurable as internal or external memory.
-The QMSS driver manages the PDSP setups, linking RAM regions,
-queue pool management (allocation, push, pop and notify) and descriptor
-pool management.
+* Texas Instruments Keystone Navigator (knav) Queue Management SubSystem driver
+  DT bindings
 
+For details of the driver, please refer to
+Documentation/arm/keystone/knav-qmss.txt
 
 Required properties:
 - compatible	: Must be "ti,keystone-navigator-qmss";
-- 
1.9.1


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

* [PATCH 1/4] Documentation: dt: soc: move driver description to a separate document
@ 2015-10-12 19:46   ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-12 19:46 UTC (permalink / raw)
  To: corbet, ssantosh, linux-doc, linux-kernel, linux-arm-kernel,
	robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, linux,
	devicetree, arnd

Currently the DT bindings have details about the driver as well. This
patch moves this to a separate document for knav qmss driver so that
driver detail update can be done as needed without polluting the DT
bindings description.

Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
---
 Documentation/arm/keystone/knav-qmss.txt           | 24 ++++++++++++++++++++++
 .../bindings/soc/ti/keystone-navigator-qmss.txt    | 20 ++++--------------
 2 files changed, 28 insertions(+), 16 deletions(-)
 create mode 100644 Documentation/arm/keystone/knav-qmss.txt

diff --git a/Documentation/arm/keystone/knav-qmss.txt b/Documentation/arm/keystone/knav-qmss.txt
new file mode 100644
index 0000000..79946d1
--- /dev/null
+++ b/Documentation/arm/keystone/knav-qmss.txt
@@ -0,0 +1,24 @@
+* Texas Instruments Keystone Navigator Queue Management SubSystem driver
+
+Driver source code path
+  drivers/soc/ti/knav_qmss.c
+  drivers/soc/ti/knav_qmss_acc.c
+
+The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
+the main hardware sub system which forms the backbone of the Keystone
+multi-core Navigator. QMSS consist of queue managers, packed-data structure
+processors(PDSP), linking RAM, descriptor pools and infrastructure
+Packet DMA.
+The Queue Manager is a hardware module that is responsible for accelerating
+management of the packet queues. Packets are queued/de-queued by writing or
+reading descriptor address to a particular memory mapped location. The PDSPs
+perform QMSS related functions like accumulation, QoS, or event management.
+Linking RAM registers are used to link the descriptors which are stored in
+descriptor RAM. Descriptor RAM is configurable as internal or external memory.
+The QMSS driver manages the PDSP setups, linking RAM regions,
+queue pool management (allocation, push, pop and notify) and descriptor
+pool management.
+
+knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
+allocate descriptor pools, map the descriptors, push/pop to queues etc. For
+details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
diff --git a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
index d8e8cdb..2cecea1 100644
--- a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
+++ b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
@@ -1,20 +1,8 @@
-* Texas Instruments Keystone Navigator Queue Management SubSystem driver
-
-The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
-the main hardware sub system which forms the backbone of the Keystone
-multi-core Navigator. QMSS consist of queue managers, packed-data structure
-processors(PDSP), linking RAM, descriptor pools and infrastructure
-Packet DMA.
-The Queue Manager is a hardware module that is responsible for accelerating
-management of the packet queues. Packets are queued/de-queued by writing or
-reading descriptor address to a particular memory mapped location. The PDSPs
-perform QMSS related functions like accumulation, QoS, or event management.
-Linking RAM registers are used to link the descriptors which are stored in
-descriptor RAM. Descriptor RAM is configurable as internal or external memory.
-The QMSS driver manages the PDSP setups, linking RAM regions,
-queue pool management (allocation, push, pop and notify) and descriptor
-pool management.
+* Texas Instruments Keystone Navigator (knav) Queue Management SubSystem driver
+  DT bindings
 
+For details of the driver, please refer to
+Documentation/arm/keystone/knav-qmss.txt
 
 Required properties:
 - compatible	: Must be "ti,keystone-navigator-qmss";
-- 
1.9.1


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

* [PATCH 1/4] Documentation: dt: soc: move driver description to a separate document
@ 2015-10-12 19:46   ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-12 19:46 UTC (permalink / raw)
  To: linux-arm-kernel

Currently the DT bindings have details about the driver as well. This
patch moves this to a separate document for knav qmss driver so that
driver detail update can be done as needed without polluting the DT
bindings description.

Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
---
 Documentation/arm/keystone/knav-qmss.txt           | 24 ++++++++++++++++++++++
 .../bindings/soc/ti/keystone-navigator-qmss.txt    | 20 ++++--------------
 2 files changed, 28 insertions(+), 16 deletions(-)
 create mode 100644 Documentation/arm/keystone/knav-qmss.txt

diff --git a/Documentation/arm/keystone/knav-qmss.txt b/Documentation/arm/keystone/knav-qmss.txt
new file mode 100644
index 0000000..79946d1
--- /dev/null
+++ b/Documentation/arm/keystone/knav-qmss.txt
@@ -0,0 +1,24 @@
+* Texas Instruments Keystone Navigator Queue Management SubSystem driver
+
+Driver source code path
+  drivers/soc/ti/knav_qmss.c
+  drivers/soc/ti/knav_qmss_acc.c
+
+The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
+the main hardware sub system which forms the backbone of the Keystone
+multi-core Navigator. QMSS consist of queue managers, packed-data structure
+processors(PDSP), linking RAM, descriptor pools and infrastructure
+Packet DMA.
+The Queue Manager is a hardware module that is responsible for accelerating
+management of the packet queues. Packets are queued/de-queued by writing or
+reading descriptor address to a particular memory mapped location. The PDSPs
+perform QMSS related functions like accumulation, QoS, or event management.
+Linking RAM registers are used to link the descriptors which are stored in
+descriptor RAM. Descriptor RAM is configurable as internal or external memory.
+The QMSS driver manages the PDSP setups, linking RAM regions,
+queue pool management (allocation, push, pop and notify) and descriptor
+pool management.
+
+knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
+allocate descriptor pools, map the descriptors, push/pop to queues etc. For
+details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
diff --git a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
index d8e8cdb..2cecea1 100644
--- a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
+++ b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
@@ -1,20 +1,8 @@
-* Texas Instruments Keystone Navigator Queue Management SubSystem driver
-
-The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
-the main hardware sub system which forms the backbone of the Keystone
-multi-core Navigator. QMSS consist of queue managers, packed-data structure
-processors(PDSP), linking RAM, descriptor pools and infrastructure
-Packet DMA.
-The Queue Manager is a hardware module that is responsible for accelerating
-management of the packet queues. Packets are queued/de-queued by writing or
-reading descriptor address to a particular memory mapped location. The PDSPs
-perform QMSS related functions like accumulation, QoS, or event management.
-Linking RAM registers are used to link the descriptors which are stored in
-descriptor RAM. Descriptor RAM is configurable as internal or external memory.
-The QMSS driver manages the PDSP setups, linking RAM regions,
-queue pool management (allocation, push, pop and notify) and descriptor
-pool management.
+* Texas Instruments Keystone Navigator (knav) Queue Management SubSystem driver
+  DT bindings
 
+For details of the driver, please refer to
+Documentation/arm/keystone/knav-qmss.txt
 
 Required properties:
 - compatible	: Must be "ti,keystone-navigator-qmss";
-- 
1.9.1

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

* [PATCH v2 2/4] soc: ti: add firmware file name as part of the driver
  2015-10-12 19:46 ` Murali Karicheri
  (?)
@ 2015-10-12 19:46   ` Murali Karicheri
  -1 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-12 19:46 UTC (permalink / raw)
  To: corbet, ssantosh, linux-doc, linux-kernel, linux-arm-kernel,
	robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, linux,
	devicetree, arnd

Currently firmware file name is included in the DTS. This is not scalable
as user has to change the DTS if they need upgrade to a new firmware.
Instead, add the firmware file name in the driver itself. As long as there
is no API change, new firmware upgrade is easy and require no driver
change. User is expected to copy the firmware image to the file system
and add a sym link to the new firmware for doing an upgrade. Driver add
a array of firmware file names to search for the available firmware blobs.
This scheme also prepare the driver for future changes to API if ever
happens. In such case it is assumed that driver needs to change to
accommodate the new firmware and new firmware file name will get added to
the array.

Also update the DT document to remove the firmware attribute and add
description about firmware in the driver documentation.

Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
---
 - v2. Moved firmware file name from DT to driver code.
 Documentation/arm/keystone/knav-qmss.txt           | 26 ++++++++++++
 .../bindings/soc/ti/keystone-navigator-qmss.txt    |  1 -
 drivers/soc/ti/knav_qmss.h                         |  1 -
 drivers/soc/ti/knav_qmss_queue.c                   | 47 +++++++++++++---------
 4 files changed, 54 insertions(+), 21 deletions(-)

diff --git a/Documentation/arm/keystone/knav-qmss.txt b/Documentation/arm/keystone/knav-qmss.txt
index 79946d1..da34a5b 100644
--- a/Documentation/arm/keystone/knav-qmss.txt
+++ b/Documentation/arm/keystone/knav-qmss.txt
@@ -22,3 +22,29 @@ pool management.
 knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
 allocate descriptor pools, map the descriptors, push/pop to queues etc. For
 details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
+
+DT documentation is available at
+Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
+
+Accumulator QMSS queues using PDSP firmware
+============================================
+The QMSS PDSP firmware support accumulator channel that can monitor a single
+queue or multiple contiguous queues. drivers/soc/ti/knav_qmss_acc.c is the
+driver that interface with the accumulator PDSP. This configures
+accumulator channels defined in DTS (example in DT documentation) to monitor
+1 or 32 queues per channel. More description on the firmware is available in
+CPPI/QMSS Low Level Driver document (docs/CPPI_QMSS_LLD_SDS.pdf) at
+	git://git.ti.com/keystone-rtos/qmss-lld.git
+
+k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin firmware supports upto 48 accumulator
+channels. This firmware is available under ti-keystone folder of
+firmware.git at
+   git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
+
+To use copy the firmware image to lib/firmware folder of the initramfs or
+ubifs file system and provide a sym link to k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin
+in the file system and boot up the kernel. User would see
+
+ "firmware file ks2_qmss_pdsp_acc48.bin downloaded for PDSP"
+
+in the boot up log if loading of firmware to PDSP is successful.
diff --git a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
index 2cecea1..aac8c36 100644
--- a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
+++ b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
@@ -209,7 +209,6 @@ qmss: qmss@2a40000 {
 		#size-cells = <1>;
 		ranges;
 		pdsp0@0x2a10000 {
-			firmware = "keystone/qmss_pdsp_acc48_k2_le_1_0_0_8.fw";
 			reg = <0x2a10000 0x1000>,
 			      <0x2a0f000 0x100>,
 			      <0x2a0c000 0x3c8>,
diff --git a/drivers/soc/ti/knav_qmss.h b/drivers/soc/ti/knav_qmss.h
index 51da234..c31b8d8 100644
--- a/drivers/soc/ti/knav_qmss.h
+++ b/drivers/soc/ti/knav_qmss.h
@@ -135,7 +135,6 @@ struct knav_pdsp_info {
 	};
 	void __iomem					*intd;
 	u32 __iomem					*iram;
-	const char					*firmware;
 	u32						id;
 	struct list_head				list;
 };
diff --git a/drivers/soc/ti/knav_qmss_queue.c b/drivers/soc/ti/knav_qmss_queue.c
index 6d8646d..06d9de8 100644
--- a/drivers/soc/ti/knav_qmss_queue.c
+++ b/drivers/soc/ti/knav_qmss_queue.c
@@ -68,6 +68,12 @@ static DEFINE_MUTEX(knav_dev_lock);
 	     idx < (kdev)->num_queues_in_use;			\
 	     idx++, inst = knav_queue_idx_to_inst(kdev, idx))
 
+/* All firmware file names end up here. List the firmware file names below.
+ * Newest followed by older ones. Search is done from start of the array
+ * until a firmware file is found.
+ */
+const char *knav_acc_firmwares[] = {"ks2_qmss_pdsp_acc48.bin"};
+
 /**
  * knav_queue_notify: qmss queue notfier call
  *
@@ -1439,7 +1445,6 @@ static int knav_queue_init_pdsps(struct knav_device *kdev,
 	struct device *dev = kdev->dev;
 	struct knav_pdsp_info *pdsp;
 	struct device_node *child;
-	int ret;
 
 	for_each_child_of_node(pdsps, child) {
 		pdsp = devm_kzalloc(dev, sizeof(*pdsp), GFP_KERNEL);
@@ -1448,17 +1453,6 @@ static int knav_queue_init_pdsps(struct knav_device *kdev,
 			return -ENOMEM;
 		}
 		pdsp->name = knav_queue_find_name(child);
-		ret = of_property_read_string(child, "firmware",
-					      &pdsp->firmware);
-		if (ret < 0 || !pdsp->firmware) {
-			dev_err(dev, "unknown firmware for pdsp %s\n",
-				pdsp->name);
-			devm_kfree(dev, pdsp);
-			continue;
-		}
-		dev_dbg(dev, "pdsp name %s fw name :%s\n", pdsp->name,
-			pdsp->firmware);
-
 		pdsp->iram =
 			knav_queue_map_reg(kdev, child,
 					   KNAV_QUEUE_PDSP_IRAM_REG_INDEX);
@@ -1489,9 +1483,9 @@ static int knav_queue_init_pdsps(struct knav_device *kdev,
 		}
 		of_property_read_u32(child, "id", &pdsp->id);
 		list_add_tail(&pdsp->list, &kdev->pdsps);
-		dev_dbg(dev, "added pdsp %s: command %p, iram %p, regs %p, intd %p, firmware %s\n",
+		dev_dbg(dev, "added pdsp %s: command %p, iram %p, regs %p, intd %p\n",
 			pdsp->name, pdsp->command, pdsp->iram, pdsp->regs,
-			pdsp->intd, pdsp->firmware);
+			pdsp->intd);
 	}
 	return 0;
 }
@@ -1518,14 +1512,29 @@ static int knav_queue_load_pdsp(struct knav_device *kdev,
 {
 	int i, ret, fwlen;
 	const struct firmware *fw;
+	bool found = false;
 	u32 *fwdata;
 
-	ret = request_firmware(&fw, pdsp->firmware, kdev->dev);
-	if (ret) {
-		dev_err(kdev->dev, "failed to get firmware %s for pdsp %s\n",
-			pdsp->firmware, pdsp->name);
-		return ret;
+	for (i = 0; i < ARRAY_SIZE(knav_acc_firmwares); i++) {
+		if (knav_acc_firmwares[i]) {
+			ret = request_firmware(&fw,
+					       knav_acc_firmwares[i],
+					       kdev->dev);
+			if (!ret) {
+				found = true;
+				break;
+			}
+		}
+	}
+
+	if (!found) {
+		dev_err(kdev->dev, "failed to get firmware for pdsp\n");
+		return -ENODEV;
 	}
+
+	dev_info(kdev->dev, "firmware file %s downloaded for PDSP\n",
+		 knav_acc_firmwares[i]);
+
 	writel_relaxed(pdsp->id + 1, pdsp->command + 0x18);
 	/* download the firmware */
 	fwdata = (u32 *)fw->data;
-- 
1.9.1


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

* [PATCH v2 2/4] soc: ti: add firmware file name as part of the driver
@ 2015-10-12 19:46   ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-12 19:46 UTC (permalink / raw)
  To: corbet, ssantosh, linux-doc, linux-kernel, linux-arm-kernel,
	robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, linux,
	devicetree, arnd

Currently firmware file name is included in the DTS. This is not scalable
as user has to change the DTS if they need upgrade to a new firmware.
Instead, add the firmware file name in the driver itself. As long as there
is no API change, new firmware upgrade is easy and require no driver
change. User is expected to copy the firmware image to the file system
and add a sym link to the new firmware for doing an upgrade. Driver add
a array of firmware file names to search for the available firmware blobs.
This scheme also prepare the driver for future changes to API if ever
happens. In such case it is assumed that driver needs to change to
accommodate the new firmware and new firmware file name will get added to
the array.

Also update the DT document to remove the firmware attribute and add
description about firmware in the driver documentation.

Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
---
 - v2. Moved firmware file name from DT to driver code.
 Documentation/arm/keystone/knav-qmss.txt           | 26 ++++++++++++
 .../bindings/soc/ti/keystone-navigator-qmss.txt    |  1 -
 drivers/soc/ti/knav_qmss.h                         |  1 -
 drivers/soc/ti/knav_qmss_queue.c                   | 47 +++++++++++++---------
 4 files changed, 54 insertions(+), 21 deletions(-)

diff --git a/Documentation/arm/keystone/knav-qmss.txt b/Documentation/arm/keystone/knav-qmss.txt
index 79946d1..da34a5b 100644
--- a/Documentation/arm/keystone/knav-qmss.txt
+++ b/Documentation/arm/keystone/knav-qmss.txt
@@ -22,3 +22,29 @@ pool management.
 knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
 allocate descriptor pools, map the descriptors, push/pop to queues etc. For
 details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
+
+DT documentation is available at
+Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
+
+Accumulator QMSS queues using PDSP firmware
+============================================
+The QMSS PDSP firmware support accumulator channel that can monitor a single
+queue or multiple contiguous queues. drivers/soc/ti/knav_qmss_acc.c is the
+driver that interface with the accumulator PDSP. This configures
+accumulator channels defined in DTS (example in DT documentation) to monitor
+1 or 32 queues per channel. More description on the firmware is available in
+CPPI/QMSS Low Level Driver document (docs/CPPI_QMSS_LLD_SDS.pdf) at
+	git://git.ti.com/keystone-rtos/qmss-lld.git
+
+k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin firmware supports upto 48 accumulator
+channels. This firmware is available under ti-keystone folder of
+firmware.git at
+   git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
+
+To use copy the firmware image to lib/firmware folder of the initramfs or
+ubifs file system and provide a sym link to k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin
+in the file system and boot up the kernel. User would see
+
+ "firmware file ks2_qmss_pdsp_acc48.bin downloaded for PDSP"
+
+in the boot up log if loading of firmware to PDSP is successful.
diff --git a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
index 2cecea1..aac8c36 100644
--- a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
+++ b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
@@ -209,7 +209,6 @@ qmss: qmss@2a40000 {
 		#size-cells = <1>;
 		ranges;
 		pdsp0@0x2a10000 {
-			firmware = "keystone/qmss_pdsp_acc48_k2_le_1_0_0_8.fw";
 			reg = <0x2a10000 0x1000>,
 			      <0x2a0f000 0x100>,
 			      <0x2a0c000 0x3c8>,
diff --git a/drivers/soc/ti/knav_qmss.h b/drivers/soc/ti/knav_qmss.h
index 51da234..c31b8d8 100644
--- a/drivers/soc/ti/knav_qmss.h
+++ b/drivers/soc/ti/knav_qmss.h
@@ -135,7 +135,6 @@ struct knav_pdsp_info {
 	};
 	void __iomem					*intd;
 	u32 __iomem					*iram;
-	const char					*firmware;
 	u32						id;
 	struct list_head				list;
 };
diff --git a/drivers/soc/ti/knav_qmss_queue.c b/drivers/soc/ti/knav_qmss_queue.c
index 6d8646d..06d9de8 100644
--- a/drivers/soc/ti/knav_qmss_queue.c
+++ b/drivers/soc/ti/knav_qmss_queue.c
@@ -68,6 +68,12 @@ static DEFINE_MUTEX(knav_dev_lock);
 	     idx < (kdev)->num_queues_in_use;			\
 	     idx++, inst = knav_queue_idx_to_inst(kdev, idx))
 
+/* All firmware file names end up here. List the firmware file names below.
+ * Newest followed by older ones. Search is done from start of the array
+ * until a firmware file is found.
+ */
+const char *knav_acc_firmwares[] = {"ks2_qmss_pdsp_acc48.bin"};
+
 /**
  * knav_queue_notify: qmss queue notfier call
  *
@@ -1439,7 +1445,6 @@ static int knav_queue_init_pdsps(struct knav_device *kdev,
 	struct device *dev = kdev->dev;
 	struct knav_pdsp_info *pdsp;
 	struct device_node *child;
-	int ret;
 
 	for_each_child_of_node(pdsps, child) {
 		pdsp = devm_kzalloc(dev, sizeof(*pdsp), GFP_KERNEL);
@@ -1448,17 +1453,6 @@ static int knav_queue_init_pdsps(struct knav_device *kdev,
 			return -ENOMEM;
 		}
 		pdsp->name = knav_queue_find_name(child);
-		ret = of_property_read_string(child, "firmware",
-					      &pdsp->firmware);
-		if (ret < 0 || !pdsp->firmware) {
-			dev_err(dev, "unknown firmware for pdsp %s\n",
-				pdsp->name);
-			devm_kfree(dev, pdsp);
-			continue;
-		}
-		dev_dbg(dev, "pdsp name %s fw name :%s\n", pdsp->name,
-			pdsp->firmware);
-
 		pdsp->iram =
 			knav_queue_map_reg(kdev, child,
 					   KNAV_QUEUE_PDSP_IRAM_REG_INDEX);
@@ -1489,9 +1483,9 @@ static int knav_queue_init_pdsps(struct knav_device *kdev,
 		}
 		of_property_read_u32(child, "id", &pdsp->id);
 		list_add_tail(&pdsp->list, &kdev->pdsps);
-		dev_dbg(dev, "added pdsp %s: command %p, iram %p, regs %p, intd %p, firmware %s\n",
+		dev_dbg(dev, "added pdsp %s: command %p, iram %p, regs %p, intd %p\n",
 			pdsp->name, pdsp->command, pdsp->iram, pdsp->regs,
-			pdsp->intd, pdsp->firmware);
+			pdsp->intd);
 	}
 	return 0;
 }
@@ -1518,14 +1512,29 @@ static int knav_queue_load_pdsp(struct knav_device *kdev,
 {
 	int i, ret, fwlen;
 	const struct firmware *fw;
+	bool found = false;
 	u32 *fwdata;
 
-	ret = request_firmware(&fw, pdsp->firmware, kdev->dev);
-	if (ret) {
-		dev_err(kdev->dev, "failed to get firmware %s for pdsp %s\n",
-			pdsp->firmware, pdsp->name);
-		return ret;
+	for (i = 0; i < ARRAY_SIZE(knav_acc_firmwares); i++) {
+		if (knav_acc_firmwares[i]) {
+			ret = request_firmware(&fw,
+					       knav_acc_firmwares[i],
+					       kdev->dev);
+			if (!ret) {
+				found = true;
+				break;
+			}
+		}
+	}
+
+	if (!found) {
+		dev_err(kdev->dev, "failed to get firmware for pdsp\n");
+		return -ENODEV;
 	}
+
+	dev_info(kdev->dev, "firmware file %s downloaded for PDSP\n",
+		 knav_acc_firmwares[i]);
+
 	writel_relaxed(pdsp->id + 1, pdsp->command + 0x18);
 	/* download the firmware */
 	fwdata = (u32 *)fw->data;
-- 
1.9.1

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

* [PATCH v2 2/4] soc: ti: add firmware file name as part of the driver
@ 2015-10-12 19:46   ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-12 19:46 UTC (permalink / raw)
  To: linux-arm-kernel

Currently firmware file name is included in the DTS. This is not scalable
as user has to change the DTS if they need upgrade to a new firmware.
Instead, add the firmware file name in the driver itself. As long as there
is no API change, new firmware upgrade is easy and require no driver
change. User is expected to copy the firmware image to the file system
and add a sym link to the new firmware for doing an upgrade. Driver add
a array of firmware file names to search for the available firmware blobs.
This scheme also prepare the driver for future changes to API if ever
happens. In such case it is assumed that driver needs to change to
accommodate the new firmware and new firmware file name will get added to
the array.

Also update the DT document to remove the firmware attribute and add
description about firmware in the driver documentation.

Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
---
 - v2. Moved firmware file name from DT to driver code.
 Documentation/arm/keystone/knav-qmss.txt           | 26 ++++++++++++
 .../bindings/soc/ti/keystone-navigator-qmss.txt    |  1 -
 drivers/soc/ti/knav_qmss.h                         |  1 -
 drivers/soc/ti/knav_qmss_queue.c                   | 47 +++++++++++++---------
 4 files changed, 54 insertions(+), 21 deletions(-)

diff --git a/Documentation/arm/keystone/knav-qmss.txt b/Documentation/arm/keystone/knav-qmss.txt
index 79946d1..da34a5b 100644
--- a/Documentation/arm/keystone/knav-qmss.txt
+++ b/Documentation/arm/keystone/knav-qmss.txt
@@ -22,3 +22,29 @@ pool management.
 knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
 allocate descriptor pools, map the descriptors, push/pop to queues etc. For
 details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
+
+DT documentation is available at
+Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
+
+Accumulator QMSS queues using PDSP firmware
+============================================
+The QMSS PDSP firmware support accumulator channel that can monitor a single
+queue or multiple contiguous queues. drivers/soc/ti/knav_qmss_acc.c is the
+driver that interface with the accumulator PDSP. This configures
+accumulator channels defined in DTS (example in DT documentation) to monitor
+1 or 32 queues per channel. More description on the firmware is available in
+CPPI/QMSS Low Level Driver document (docs/CPPI_QMSS_LLD_SDS.pdf) at
+	git://git.ti.com/keystone-rtos/qmss-lld.git
+
+k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin firmware supports upto 48 accumulator
+channels. This firmware is available under ti-keystone folder of
+firmware.git at
+   git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
+
+To use copy the firmware image to lib/firmware folder of the initramfs or
+ubifs file system and provide a sym link to k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin
+in the file system and boot up the kernel. User would see
+
+ "firmware file ks2_qmss_pdsp_acc48.bin downloaded for PDSP"
+
+in the boot up log if loading of firmware to PDSP is successful.
diff --git a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
index 2cecea1..aac8c36 100644
--- a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
+++ b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
@@ -209,7 +209,6 @@ qmss: qmss at 2a40000 {
 		#size-cells = <1>;
 		ranges;
 		pdsp0 at 0x2a10000 {
-			firmware = "keystone/qmss_pdsp_acc48_k2_le_1_0_0_8.fw";
 			reg = <0x2a10000 0x1000>,
 			      <0x2a0f000 0x100>,
 			      <0x2a0c000 0x3c8>,
diff --git a/drivers/soc/ti/knav_qmss.h b/drivers/soc/ti/knav_qmss.h
index 51da234..c31b8d8 100644
--- a/drivers/soc/ti/knav_qmss.h
+++ b/drivers/soc/ti/knav_qmss.h
@@ -135,7 +135,6 @@ struct knav_pdsp_info {
 	};
 	void __iomem					*intd;
 	u32 __iomem					*iram;
-	const char					*firmware;
 	u32						id;
 	struct list_head				list;
 };
diff --git a/drivers/soc/ti/knav_qmss_queue.c b/drivers/soc/ti/knav_qmss_queue.c
index 6d8646d..06d9de8 100644
--- a/drivers/soc/ti/knav_qmss_queue.c
+++ b/drivers/soc/ti/knav_qmss_queue.c
@@ -68,6 +68,12 @@ static DEFINE_MUTEX(knav_dev_lock);
 	     idx < (kdev)->num_queues_in_use;			\
 	     idx++, inst = knav_queue_idx_to_inst(kdev, idx))
 
+/* All firmware file names end up here. List the firmware file names below.
+ * Newest followed by older ones. Search is done from start of the array
+ * until a firmware file is found.
+ */
+const char *knav_acc_firmwares[] = {"ks2_qmss_pdsp_acc48.bin"};
+
 /**
  * knav_queue_notify: qmss queue notfier call
  *
@@ -1439,7 +1445,6 @@ static int knav_queue_init_pdsps(struct knav_device *kdev,
 	struct device *dev = kdev->dev;
 	struct knav_pdsp_info *pdsp;
 	struct device_node *child;
-	int ret;
 
 	for_each_child_of_node(pdsps, child) {
 		pdsp = devm_kzalloc(dev, sizeof(*pdsp), GFP_KERNEL);
@@ -1448,17 +1453,6 @@ static int knav_queue_init_pdsps(struct knav_device *kdev,
 			return -ENOMEM;
 		}
 		pdsp->name = knav_queue_find_name(child);
-		ret = of_property_read_string(child, "firmware",
-					      &pdsp->firmware);
-		if (ret < 0 || !pdsp->firmware) {
-			dev_err(dev, "unknown firmware for pdsp %s\n",
-				pdsp->name);
-			devm_kfree(dev, pdsp);
-			continue;
-		}
-		dev_dbg(dev, "pdsp name %s fw name :%s\n", pdsp->name,
-			pdsp->firmware);
-
 		pdsp->iram =
 			knav_queue_map_reg(kdev, child,
 					   KNAV_QUEUE_PDSP_IRAM_REG_INDEX);
@@ -1489,9 +1483,9 @@ static int knav_queue_init_pdsps(struct knav_device *kdev,
 		}
 		of_property_read_u32(child, "id", &pdsp->id);
 		list_add_tail(&pdsp->list, &kdev->pdsps);
-		dev_dbg(dev, "added pdsp %s: command %p, iram %p, regs %p, intd %p, firmware %s\n",
+		dev_dbg(dev, "added pdsp %s: command %p, iram %p, regs %p, intd %p\n",
 			pdsp->name, pdsp->command, pdsp->iram, pdsp->regs,
-			pdsp->intd, pdsp->firmware);
+			pdsp->intd);
 	}
 	return 0;
 }
@@ -1518,14 +1512,29 @@ static int knav_queue_load_pdsp(struct knav_device *kdev,
 {
 	int i, ret, fwlen;
 	const struct firmware *fw;
+	bool found = false;
 	u32 *fwdata;
 
-	ret = request_firmware(&fw, pdsp->firmware, kdev->dev);
-	if (ret) {
-		dev_err(kdev->dev, "failed to get firmware %s for pdsp %s\n",
-			pdsp->firmware, pdsp->name);
-		return ret;
+	for (i = 0; i < ARRAY_SIZE(knav_acc_firmwares); i++) {
+		if (knav_acc_firmwares[i]) {
+			ret = request_firmware(&fw,
+					       knav_acc_firmwares[i],
+					       kdev->dev);
+			if (!ret) {
+				found = true;
+				break;
+			}
+		}
+	}
+
+	if (!found) {
+		dev_err(kdev->dev, "failed to get firmware for pdsp\n");
+		return -ENODEV;
 	}
+
+	dev_info(kdev->dev, "firmware file %s downloaded for PDSP\n",
+		 knav_acc_firmwares[i]);
+
 	writel_relaxed(pdsp->id + 1, pdsp->command + 0x18);
 	/* download the firmware */
 	fwdata = (u32 *)fw->data;
-- 
1.9.1

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

* [PATCH v2 3/4] ARM: dts: keystone: enable accumulator channels
  2015-10-12 19:46 ` Murali Karicheri
  (?)
@ 2015-10-12 19:46   ` Murali Karicheri
  -1 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-12 19:46 UTC (permalink / raw)
  To: corbet, ssantosh, linux-doc, linux-kernel, linux-arm-kernel,
	robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, linux,
	devicetree, arnd

Add low priority accumulator channel that can monitor multiple QMSS
queues. User for example could use the accumular queue for Netcp
Rx completion. While at it, also add an extra line end of each top
level node in DTS to make it more readable.

Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
---
 - firmware name removed in v2
 arch/arm/boot/dts/k2e-netcp.dtsi  | 23 +++++++++++++++++++++++
 arch/arm/boot/dts/k2hk-netcp.dtsi | 24 ++++++++++++++++++++++++
 arch/arm/boot/dts/k2l-netcp.dtsi  | 23 +++++++++++++++++++++++
 3 files changed, 70 insertions(+)

diff --git a/arch/arm/boot/dts/k2e-netcp.dtsi b/arch/arm/boot/dts/k2e-netcp.dtsi
index b13b3c9..ac990f6 100644
--- a/arch/arm/boot/dts/k2e-netcp.dtsi
+++ b/arch/arm/boot/dts/k2e-netcp.dtsi
@@ -72,7 +72,17 @@ qmss: qmss@2a40000 {
 				qalloc-by-id;
 			};
 		};
+		accumulator {
+			acc-low-0 {
+				qrange = <480 32>;
+				accumulator = <0 47 16 2 50>;
+				interrupts = <0 226 0xf01>;
+				multi-queue;
+				qalloc-by-id;
+			};
+		};
 	};
+
 	descriptor-regions {
 		#address-cells = <1>;
 		#size-cells = <1>;
@@ -83,6 +93,19 @@ qmss: qmss@2a40000 {
 			link-index = <0x4000>;
 		};
 	};
+
+	pdsps {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		pdsp0@0x2a10000 {
+			reg = <0x2a10000 0x1000    /*iram */
+			       0x2a0f000 0x100     /*reg*/
+			       0x2a0c000 0x3c8	   /*intd */
+			       0x2a20000 0x4000>;  /*cmd*/
+			id = <0>;
+		};
+	};
 }; /* qmss */
 
 knav_dmas: knav_dmas@0 {
diff --git a/arch/arm/boot/dts/k2hk-netcp.dtsi b/arch/arm/boot/dts/k2hk-netcp.dtsi
index 77a32c3..f86d6dd 100644
--- a/arch/arm/boot/dts/k2hk-netcp.dtsi
+++ b/arch/arm/boot/dts/k2hk-netcp.dtsi
@@ -47,6 +47,7 @@ qmss: qmss@2a40000 {
 				    "region", "push", "pop";
 		};
 	};
+
 	queue-pools {
 		qpend {
 			qpend-0 {
@@ -88,7 +89,17 @@ qmss: qmss@2a40000 {
 				qalloc-by-id;
 			};
 		};
+		accumulator {
+			acc-low-0 {
+				qrange = <480 32>;
+				accumulator = <0 47 16 2 50>;
+				interrupts = <0 226 0xf01>;
+				multi-queue;
+				qalloc-by-id;
+			};
+		};
 	};
+
 	descriptor-regions {
 		#address-cells = <1>;
 		#size-cells = <1>;
@@ -99,6 +110,19 @@ qmss: qmss@2a40000 {
 			link-index = <0x4000>;
 		};
 	};
+
+	pdsps {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		pdsp0@0x2a10000 {
+			reg = <0x2a10000 0x1000    /*iram */
+			       0x2a0f000 0x100     /*reg*/
+			       0x2a0c000 0x3c8	   /*intd */
+			       0x2a20000 0x4000>;  /*cmd*/
+			id = <0>;
+		};
+	};
 }; /* qmss */
 
 knav_dmas: knav_dmas@0 {
diff --git a/arch/arm/boot/dts/k2l-netcp.dtsi b/arch/arm/boot/dts/k2l-netcp.dtsi
index 6b95284..01aef23 100644
--- a/arch/arm/boot/dts/k2l-netcp.dtsi
+++ b/arch/arm/boot/dts/k2l-netcp.dtsi
@@ -72,7 +72,16 @@ qmss: qmss@2a40000 {
 				qalloc-by-id;
 			};
 		};
+		accumulator {
+			acc-low-0 {
+				qrange = <480 32>;
+				accumulator = <0 47 16 2 50>;
+				interrupts = <0 226 0xf01>;
+				multi-queue;
+			};
+		};
 	};
+
 	descriptor-regions {
 		#address-cells = <1>;
 		#size-cells = <1>;
@@ -83,6 +92,20 @@ qmss: qmss@2a40000 {
 			link-index = <0x4000>;
 		};
 	};
+
+	pdsps {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		pdsp0@0x2a10000 {
+			reg = <0x2a10000 0x1000    /*iram */
+			       0x2a0f000 0x100     /*reg*/
+			       0x2a0c000 0x3c8	   /*intd */
+			       0x2a20000 0x4000>;  /*cmd*/
+			id = <0>;
+		};
+	};
+
 }; /* qmss */
 
 knav_dmas: knav_dmas@0 {
-- 
1.9.1


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

* [PATCH v2 3/4] ARM: dts: keystone: enable accumulator channels
@ 2015-10-12 19:46   ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-12 19:46 UTC (permalink / raw)
  To: corbet, ssantosh, linux-doc, linux-kernel, linux-arm-kernel,
	robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, linux,
	devicetree, arnd

Add low priority accumulator channel that can monitor multiple QMSS
queues. User for example could use the accumular queue for Netcp
Rx completion. While at it, also add an extra line end of each top
level node in DTS to make it more readable.

Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
---
 - firmware name removed in v2
 arch/arm/boot/dts/k2e-netcp.dtsi  | 23 +++++++++++++++++++++++
 arch/arm/boot/dts/k2hk-netcp.dtsi | 24 ++++++++++++++++++++++++
 arch/arm/boot/dts/k2l-netcp.dtsi  | 23 +++++++++++++++++++++++
 3 files changed, 70 insertions(+)

diff --git a/arch/arm/boot/dts/k2e-netcp.dtsi b/arch/arm/boot/dts/k2e-netcp.dtsi
index b13b3c9..ac990f6 100644
--- a/arch/arm/boot/dts/k2e-netcp.dtsi
+++ b/arch/arm/boot/dts/k2e-netcp.dtsi
@@ -72,7 +72,17 @@ qmss: qmss@2a40000 {
 				qalloc-by-id;
 			};
 		};
+		accumulator {
+			acc-low-0 {
+				qrange = <480 32>;
+				accumulator = <0 47 16 2 50>;
+				interrupts = <0 226 0xf01>;
+				multi-queue;
+				qalloc-by-id;
+			};
+		};
 	};
+
 	descriptor-regions {
 		#address-cells = <1>;
 		#size-cells = <1>;
@@ -83,6 +93,19 @@ qmss: qmss@2a40000 {
 			link-index = <0x4000>;
 		};
 	};
+
+	pdsps {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		pdsp0@0x2a10000 {
+			reg = <0x2a10000 0x1000    /*iram */
+			       0x2a0f000 0x100     /*reg*/
+			       0x2a0c000 0x3c8	   /*intd */
+			       0x2a20000 0x4000>;  /*cmd*/
+			id = <0>;
+		};
+	};
 }; /* qmss */
 
 knav_dmas: knav_dmas@0 {
diff --git a/arch/arm/boot/dts/k2hk-netcp.dtsi b/arch/arm/boot/dts/k2hk-netcp.dtsi
index 77a32c3..f86d6dd 100644
--- a/arch/arm/boot/dts/k2hk-netcp.dtsi
+++ b/arch/arm/boot/dts/k2hk-netcp.dtsi
@@ -47,6 +47,7 @@ qmss: qmss@2a40000 {
 				    "region", "push", "pop";
 		};
 	};
+
 	queue-pools {
 		qpend {
 			qpend-0 {
@@ -88,7 +89,17 @@ qmss: qmss@2a40000 {
 				qalloc-by-id;
 			};
 		};
+		accumulator {
+			acc-low-0 {
+				qrange = <480 32>;
+				accumulator = <0 47 16 2 50>;
+				interrupts = <0 226 0xf01>;
+				multi-queue;
+				qalloc-by-id;
+			};
+		};
 	};
+
 	descriptor-regions {
 		#address-cells = <1>;
 		#size-cells = <1>;
@@ -99,6 +110,19 @@ qmss: qmss@2a40000 {
 			link-index = <0x4000>;
 		};
 	};
+
+	pdsps {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		pdsp0@0x2a10000 {
+			reg = <0x2a10000 0x1000    /*iram */
+			       0x2a0f000 0x100     /*reg*/
+			       0x2a0c000 0x3c8	   /*intd */
+			       0x2a20000 0x4000>;  /*cmd*/
+			id = <0>;
+		};
+	};
 }; /* qmss */
 
 knav_dmas: knav_dmas@0 {
diff --git a/arch/arm/boot/dts/k2l-netcp.dtsi b/arch/arm/boot/dts/k2l-netcp.dtsi
index 6b95284..01aef23 100644
--- a/arch/arm/boot/dts/k2l-netcp.dtsi
+++ b/arch/arm/boot/dts/k2l-netcp.dtsi
@@ -72,7 +72,16 @@ qmss: qmss@2a40000 {
 				qalloc-by-id;
 			};
 		};
+		accumulator {
+			acc-low-0 {
+				qrange = <480 32>;
+				accumulator = <0 47 16 2 50>;
+				interrupts = <0 226 0xf01>;
+				multi-queue;
+			};
+		};
 	};
+
 	descriptor-regions {
 		#address-cells = <1>;
 		#size-cells = <1>;
@@ -83,6 +92,20 @@ qmss: qmss@2a40000 {
 			link-index = <0x4000>;
 		};
 	};
+
+	pdsps {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		pdsp0@0x2a10000 {
+			reg = <0x2a10000 0x1000    /*iram */
+			       0x2a0f000 0x100     /*reg*/
+			       0x2a0c000 0x3c8	   /*intd */
+			       0x2a20000 0x4000>;  /*cmd*/
+			id = <0>;
+		};
+	};
+
 }; /* qmss */
 
 knav_dmas: knav_dmas@0 {
-- 
1.9.1

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

* [PATCH v2 3/4] ARM: dts: keystone: enable accumulator channels
@ 2015-10-12 19:46   ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-12 19:46 UTC (permalink / raw)
  To: linux-arm-kernel

Add low priority accumulator channel that can monitor multiple QMSS
queues. User for example could use the accumular queue for Netcp
Rx completion. While at it, also add an extra line end of each top
level node in DTS to make it more readable.

Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
---
 - firmware name removed in v2
 arch/arm/boot/dts/k2e-netcp.dtsi  | 23 +++++++++++++++++++++++
 arch/arm/boot/dts/k2hk-netcp.dtsi | 24 ++++++++++++++++++++++++
 arch/arm/boot/dts/k2l-netcp.dtsi  | 23 +++++++++++++++++++++++
 3 files changed, 70 insertions(+)

diff --git a/arch/arm/boot/dts/k2e-netcp.dtsi b/arch/arm/boot/dts/k2e-netcp.dtsi
index b13b3c9..ac990f6 100644
--- a/arch/arm/boot/dts/k2e-netcp.dtsi
+++ b/arch/arm/boot/dts/k2e-netcp.dtsi
@@ -72,7 +72,17 @@ qmss: qmss at 2a40000 {
 				qalloc-by-id;
 			};
 		};
+		accumulator {
+			acc-low-0 {
+				qrange = <480 32>;
+				accumulator = <0 47 16 2 50>;
+				interrupts = <0 226 0xf01>;
+				multi-queue;
+				qalloc-by-id;
+			};
+		};
 	};
+
 	descriptor-regions {
 		#address-cells = <1>;
 		#size-cells = <1>;
@@ -83,6 +93,19 @@ qmss: qmss at 2a40000 {
 			link-index = <0x4000>;
 		};
 	};
+
+	pdsps {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		pdsp0 at 0x2a10000 {
+			reg = <0x2a10000 0x1000    /*iram */
+			       0x2a0f000 0x100     /*reg*/
+			       0x2a0c000 0x3c8	   /*intd */
+			       0x2a20000 0x4000>;  /*cmd*/
+			id = <0>;
+		};
+	};
 }; /* qmss */
 
 knav_dmas: knav_dmas at 0 {
diff --git a/arch/arm/boot/dts/k2hk-netcp.dtsi b/arch/arm/boot/dts/k2hk-netcp.dtsi
index 77a32c3..f86d6dd 100644
--- a/arch/arm/boot/dts/k2hk-netcp.dtsi
+++ b/arch/arm/boot/dts/k2hk-netcp.dtsi
@@ -47,6 +47,7 @@ qmss: qmss at 2a40000 {
 				    "region", "push", "pop";
 		};
 	};
+
 	queue-pools {
 		qpend {
 			qpend-0 {
@@ -88,7 +89,17 @@ qmss: qmss at 2a40000 {
 				qalloc-by-id;
 			};
 		};
+		accumulator {
+			acc-low-0 {
+				qrange = <480 32>;
+				accumulator = <0 47 16 2 50>;
+				interrupts = <0 226 0xf01>;
+				multi-queue;
+				qalloc-by-id;
+			};
+		};
 	};
+
 	descriptor-regions {
 		#address-cells = <1>;
 		#size-cells = <1>;
@@ -99,6 +110,19 @@ qmss: qmss at 2a40000 {
 			link-index = <0x4000>;
 		};
 	};
+
+	pdsps {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		pdsp0 at 0x2a10000 {
+			reg = <0x2a10000 0x1000    /*iram */
+			       0x2a0f000 0x100     /*reg*/
+			       0x2a0c000 0x3c8	   /*intd */
+			       0x2a20000 0x4000>;  /*cmd*/
+			id = <0>;
+		};
+	};
 }; /* qmss */
 
 knav_dmas: knav_dmas at 0 {
diff --git a/arch/arm/boot/dts/k2l-netcp.dtsi b/arch/arm/boot/dts/k2l-netcp.dtsi
index 6b95284..01aef23 100644
--- a/arch/arm/boot/dts/k2l-netcp.dtsi
+++ b/arch/arm/boot/dts/k2l-netcp.dtsi
@@ -72,7 +72,16 @@ qmss: qmss at 2a40000 {
 				qalloc-by-id;
 			};
 		};
+		accumulator {
+			acc-low-0 {
+				qrange = <480 32>;
+				accumulator = <0 47 16 2 50>;
+				interrupts = <0 226 0xf01>;
+				multi-queue;
+			};
+		};
 	};
+
 	descriptor-regions {
 		#address-cells = <1>;
 		#size-cells = <1>;
@@ -83,6 +92,20 @@ qmss: qmss at 2a40000 {
 			link-index = <0x4000>;
 		};
 	};
+
+	pdsps {
+		#address-cells = <1>;
+		#size-cells = <1>;
+		ranges;
+		pdsp0 at 0x2a10000 {
+			reg = <0x2a10000 0x1000    /*iram */
+			       0x2a0f000 0x100     /*reg*/
+			       0x2a0c000 0x3c8	   /*intd */
+			       0x2a20000 0x4000>;  /*cmd*/
+			id = <0>;
+		};
+	};
+
 }; /* qmss */
 
 knav_dmas: knav_dmas at 0 {
-- 
1.9.1

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

* [PATCH 4/4] soc: ti: qmss: make acc queue support optional in the driver
  2015-10-12 19:46 ` Murali Karicheri
  (?)
@ 2015-10-12 19:46   ` Murali Karicheri
  -1 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-12 19:46 UTC (permalink / raw)
  To: corbet, ssantosh, linux-doc, linux-kernel, linux-arm-kernel,
	robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, linux,
	devicetree, arnd

acc channels are available only if accumulator PDSP is loaded and
running in the SoC. As this requires firmware and user may not have
firmware in the file system, make the accumulator queue support
available in qmss driver optional. To use accumulator queus user needs
to add firmware to the file system and boot up kernel.

Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
---
 - v2 : new patch added
 Documentation/arm/keystone/knav-qmss.txt |  6 ++++++
 drivers/soc/ti/knav_qmss.h               |  2 ++
 drivers/soc/ti/knav_qmss_acc.c           | 10 ++++++++--
 drivers/soc/ti/knav_qmss_queue.c         | 20 +++++++++++++++-----
 4 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/Documentation/arm/keystone/knav-qmss.txt b/Documentation/arm/keystone/knav-qmss.txt
index da34a5b..fcdb9fd 100644
--- a/Documentation/arm/keystone/knav-qmss.txt
+++ b/Documentation/arm/keystone/knav-qmss.txt
@@ -48,3 +48,9 @@ in the file system and boot up the kernel. User would see
  "firmware file ks2_qmss_pdsp_acc48.bin downloaded for PDSP"
 
 in the boot up log if loading of firmware to PDSP is successful.
+
+Use of accumulated queues requires the firmware image to be present in the
+file system. The driver doesn't acc queues to the supported queue range if
+PDSP is not running in the SoC. The API call fails if there is a queue open
+request to an acc queue and PDSP is not running. So make sure to copy firmware
+to file system before using these queue types.
diff --git a/drivers/soc/ti/knav_qmss.h b/drivers/soc/ti/knav_qmss.h
index c31b8d8..6ff936c 100644
--- a/drivers/soc/ti/knav_qmss.h
+++ b/drivers/soc/ti/knav_qmss.h
@@ -137,6 +137,8 @@ struct knav_pdsp_info {
 	u32 __iomem					*iram;
 	u32						id;
 	struct list_head				list;
+	bool						loaded;
+	bool						started;
 };
 
 struct knav_qmgr_info {
diff --git a/drivers/soc/ti/knav_qmss_acc.c b/drivers/soc/ti/knav_qmss_acc.c
index b98fe56..d2d48f2 100644
--- a/drivers/soc/ti/knav_qmss_acc.c
+++ b/drivers/soc/ti/knav_qmss_acc.c
@@ -486,8 +486,8 @@ struct knav_range_ops knav_acc_range_ops = {
  * Return 0 on success or error
  */
 int knav_init_acc_range(struct knav_device *kdev,
-				struct device_node *node,
-				struct knav_range_info *range)
+			struct device_node *node,
+			struct knav_range_info *range)
 {
 	struct knav_acc_channel *acc;
 	struct knav_pdsp_info *pdsp;
@@ -530,6 +530,12 @@ int knav_init_acc_range(struct knav_device *kdev,
 		return -EINVAL;
 	}
 
+	if (!pdsp->started) {
+		dev_err(kdev->dev, "pdsp id %d not started for range %s\n",
+			info->pdsp_id, range->name);
+		return -ENODEV;
+	}
+
 	info->pdsp = pdsp;
 	channels = range->num_queues;
 	if (of_get_property(node, "multi-queue", NULL)) {
diff --git a/drivers/soc/ti/knav_qmss_queue.c b/drivers/soc/ti/knav_qmss_queue.c
index 06d9de8..f3a0b6a 100644
--- a/drivers/soc/ti/knav_qmss_queue.c
+++ b/drivers/soc/ti/knav_qmss_queue.c
@@ -1504,6 +1504,8 @@ static int knav_queue_stop_pdsp(struct knav_device *kdev,
 		dev_err(kdev->dev, "timed out on pdsp %s stop\n", pdsp->name);
 		return ret;
 	}
+	pdsp->loaded = false;
+	pdsp->started = false;
 	return 0;
 }
 
@@ -1592,16 +1594,24 @@ static int knav_queue_start_pdsps(struct knav_device *kdev)
 	int ret;
 
 	knav_queue_stop_pdsps(kdev);
-	/* now load them all */
+	/* now load them all. We return success even if pdsp
+	 * is not loaded as acc channels are optional on having
+	 * firmware availability in the system. We set the loaded
+	 * and stated flag and when initialize the acc range, check
+	 * it and init the range only if pdsp is started.
+	 */
 	for_each_pdsp(kdev, pdsp) {
 		ret = knav_queue_load_pdsp(kdev, pdsp);
-		if (ret < 0)
-			return ret;
+		if (!ret)
+			pdsp->loaded = true;
 	}
 
 	for_each_pdsp(kdev, pdsp) {
-		ret = knav_queue_start_pdsp(kdev, pdsp);
-		WARN_ON(ret);
+		if (pdsp->loaded) {
+			ret = knav_queue_start_pdsp(kdev, pdsp);
+			if (!ret)
+				pdsp->started = true;
+		}
 	}
 	return 0;
 }
-- 
1.9.1


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

* [PATCH 4/4] soc: ti: qmss: make acc queue support optional in the driver
@ 2015-10-12 19:46   ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-12 19:46 UTC (permalink / raw)
  To: corbet, ssantosh, linux-doc, linux-kernel, linux-arm-kernel,
	robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, linux,
	devicetree, arnd

acc channels are available only if accumulator PDSP is loaded and
running in the SoC. As this requires firmware and user may not have
firmware in the file system, make the accumulator queue support
available in qmss driver optional. To use accumulator queus user needs
to add firmware to the file system and boot up kernel.

Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
---
 - v2 : new patch added
 Documentation/arm/keystone/knav-qmss.txt |  6 ++++++
 drivers/soc/ti/knav_qmss.h               |  2 ++
 drivers/soc/ti/knav_qmss_acc.c           | 10 ++++++++--
 drivers/soc/ti/knav_qmss_queue.c         | 20 +++++++++++++++-----
 4 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/Documentation/arm/keystone/knav-qmss.txt b/Documentation/arm/keystone/knav-qmss.txt
index da34a5b..fcdb9fd 100644
--- a/Documentation/arm/keystone/knav-qmss.txt
+++ b/Documentation/arm/keystone/knav-qmss.txt
@@ -48,3 +48,9 @@ in the file system and boot up the kernel. User would see
  "firmware file ks2_qmss_pdsp_acc48.bin downloaded for PDSP"
 
 in the boot up log if loading of firmware to PDSP is successful.
+
+Use of accumulated queues requires the firmware image to be present in the
+file system. The driver doesn't acc queues to the supported queue range if
+PDSP is not running in the SoC. The API call fails if there is a queue open
+request to an acc queue and PDSP is not running. So make sure to copy firmware
+to file system before using these queue types.
diff --git a/drivers/soc/ti/knav_qmss.h b/drivers/soc/ti/knav_qmss.h
index c31b8d8..6ff936c 100644
--- a/drivers/soc/ti/knav_qmss.h
+++ b/drivers/soc/ti/knav_qmss.h
@@ -137,6 +137,8 @@ struct knav_pdsp_info {
 	u32 __iomem					*iram;
 	u32						id;
 	struct list_head				list;
+	bool						loaded;
+	bool						started;
 };
 
 struct knav_qmgr_info {
diff --git a/drivers/soc/ti/knav_qmss_acc.c b/drivers/soc/ti/knav_qmss_acc.c
index b98fe56..d2d48f2 100644
--- a/drivers/soc/ti/knav_qmss_acc.c
+++ b/drivers/soc/ti/knav_qmss_acc.c
@@ -486,8 +486,8 @@ struct knav_range_ops knav_acc_range_ops = {
  * Return 0 on success or error
  */
 int knav_init_acc_range(struct knav_device *kdev,
-				struct device_node *node,
-				struct knav_range_info *range)
+			struct device_node *node,
+			struct knav_range_info *range)
 {
 	struct knav_acc_channel *acc;
 	struct knav_pdsp_info *pdsp;
@@ -530,6 +530,12 @@ int knav_init_acc_range(struct knav_device *kdev,
 		return -EINVAL;
 	}
 
+	if (!pdsp->started) {
+		dev_err(kdev->dev, "pdsp id %d not started for range %s\n",
+			info->pdsp_id, range->name);
+		return -ENODEV;
+	}
+
 	info->pdsp = pdsp;
 	channels = range->num_queues;
 	if (of_get_property(node, "multi-queue", NULL)) {
diff --git a/drivers/soc/ti/knav_qmss_queue.c b/drivers/soc/ti/knav_qmss_queue.c
index 06d9de8..f3a0b6a 100644
--- a/drivers/soc/ti/knav_qmss_queue.c
+++ b/drivers/soc/ti/knav_qmss_queue.c
@@ -1504,6 +1504,8 @@ static int knav_queue_stop_pdsp(struct knav_device *kdev,
 		dev_err(kdev->dev, "timed out on pdsp %s stop\n", pdsp->name);
 		return ret;
 	}
+	pdsp->loaded = false;
+	pdsp->started = false;
 	return 0;
 }
 
@@ -1592,16 +1594,24 @@ static int knav_queue_start_pdsps(struct knav_device *kdev)
 	int ret;
 
 	knav_queue_stop_pdsps(kdev);
-	/* now load them all */
+	/* now load them all. We return success even if pdsp
+	 * is not loaded as acc channels are optional on having
+	 * firmware availability in the system. We set the loaded
+	 * and stated flag and when initialize the acc range, check
+	 * it and init the range only if pdsp is started.
+	 */
 	for_each_pdsp(kdev, pdsp) {
 		ret = knav_queue_load_pdsp(kdev, pdsp);
-		if (ret < 0)
-			return ret;
+		if (!ret)
+			pdsp->loaded = true;
 	}
 
 	for_each_pdsp(kdev, pdsp) {
-		ret = knav_queue_start_pdsp(kdev, pdsp);
-		WARN_ON(ret);
+		if (pdsp->loaded) {
+			ret = knav_queue_start_pdsp(kdev, pdsp);
+			if (!ret)
+				pdsp->started = true;
+		}
 	}
 	return 0;
 }
-- 
1.9.1


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

* [PATCH 4/4] soc: ti: qmss: make acc queue support optional in the driver
@ 2015-10-12 19:46   ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-12 19:46 UTC (permalink / raw)
  To: linux-arm-kernel

acc channels are available only if accumulator PDSP is loaded and
running in the SoC. As this requires firmware and user may not have
firmware in the file system, make the accumulator queue support
available in qmss driver optional. To use accumulator queus user needs
to add firmware to the file system and boot up kernel.

Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
---
 - v2 : new patch added
 Documentation/arm/keystone/knav-qmss.txt |  6 ++++++
 drivers/soc/ti/knav_qmss.h               |  2 ++
 drivers/soc/ti/knav_qmss_acc.c           | 10 ++++++++--
 drivers/soc/ti/knav_qmss_queue.c         | 20 +++++++++++++++-----
 4 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/Documentation/arm/keystone/knav-qmss.txt b/Documentation/arm/keystone/knav-qmss.txt
index da34a5b..fcdb9fd 100644
--- a/Documentation/arm/keystone/knav-qmss.txt
+++ b/Documentation/arm/keystone/knav-qmss.txt
@@ -48,3 +48,9 @@ in the file system and boot up the kernel. User would see
  "firmware file ks2_qmss_pdsp_acc48.bin downloaded for PDSP"
 
 in the boot up log if loading of firmware to PDSP is successful.
+
+Use of accumulated queues requires the firmware image to be present in the
+file system. The driver doesn't acc queues to the supported queue range if
+PDSP is not running in the SoC. The API call fails if there is a queue open
+request to an acc queue and PDSP is not running. So make sure to copy firmware
+to file system before using these queue types.
diff --git a/drivers/soc/ti/knav_qmss.h b/drivers/soc/ti/knav_qmss.h
index c31b8d8..6ff936c 100644
--- a/drivers/soc/ti/knav_qmss.h
+++ b/drivers/soc/ti/knav_qmss.h
@@ -137,6 +137,8 @@ struct knav_pdsp_info {
 	u32 __iomem					*iram;
 	u32						id;
 	struct list_head				list;
+	bool						loaded;
+	bool						started;
 };
 
 struct knav_qmgr_info {
diff --git a/drivers/soc/ti/knav_qmss_acc.c b/drivers/soc/ti/knav_qmss_acc.c
index b98fe56..d2d48f2 100644
--- a/drivers/soc/ti/knav_qmss_acc.c
+++ b/drivers/soc/ti/knav_qmss_acc.c
@@ -486,8 +486,8 @@ struct knav_range_ops knav_acc_range_ops = {
  * Return 0 on success or error
  */
 int knav_init_acc_range(struct knav_device *kdev,
-				struct device_node *node,
-				struct knav_range_info *range)
+			struct device_node *node,
+			struct knav_range_info *range)
 {
 	struct knav_acc_channel *acc;
 	struct knav_pdsp_info *pdsp;
@@ -530,6 +530,12 @@ int knav_init_acc_range(struct knav_device *kdev,
 		return -EINVAL;
 	}
 
+	if (!pdsp->started) {
+		dev_err(kdev->dev, "pdsp id %d not started for range %s\n",
+			info->pdsp_id, range->name);
+		return -ENODEV;
+	}
+
 	info->pdsp = pdsp;
 	channels = range->num_queues;
 	if (of_get_property(node, "multi-queue", NULL)) {
diff --git a/drivers/soc/ti/knav_qmss_queue.c b/drivers/soc/ti/knav_qmss_queue.c
index 06d9de8..f3a0b6a 100644
--- a/drivers/soc/ti/knav_qmss_queue.c
+++ b/drivers/soc/ti/knav_qmss_queue.c
@@ -1504,6 +1504,8 @@ static int knav_queue_stop_pdsp(struct knav_device *kdev,
 		dev_err(kdev->dev, "timed out on pdsp %s stop\n", pdsp->name);
 		return ret;
 	}
+	pdsp->loaded = false;
+	pdsp->started = false;
 	return 0;
 }
 
@@ -1592,16 +1594,24 @@ static int knav_queue_start_pdsps(struct knav_device *kdev)
 	int ret;
 
 	knav_queue_stop_pdsps(kdev);
-	/* now load them all */
+	/* now load them all. We return success even if pdsp
+	 * is not loaded as acc channels are optional on having
+	 * firmware availability in the system. We set the loaded
+	 * and stated flag and when initialize the acc range, check
+	 * it and init the range only if pdsp is started.
+	 */
 	for_each_pdsp(kdev, pdsp) {
 		ret = knav_queue_load_pdsp(kdev, pdsp);
-		if (ret < 0)
-			return ret;
+		if (!ret)
+			pdsp->loaded = true;
 	}
 
 	for_each_pdsp(kdev, pdsp) {
-		ret = knav_queue_start_pdsp(kdev, pdsp);
-		WARN_ON(ret);
+		if (pdsp->loaded) {
+			ret = knav_queue_start_pdsp(kdev, pdsp);
+			if (!ret)
+				pdsp->started = true;
+		}
 	}
 	return 0;
 }
-- 
1.9.1

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

* Re: [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support
  2015-10-12 19:46 ` Murali Karicheri
  (?)
@ 2015-10-12 19:54   ` Murali Karicheri
  -1 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-12 19:54 UTC (permalink / raw)
  To: corbet, ssantosh, linux-doc, linux-kernel, linux-arm-kernel,
	robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, linux,
	devicetree, arnd

On 10/12/2015 03:46 PM, Murali Karicheri wrote:
> This patch series enable accumulator queue support for K2 SoCs. Accumulator
> queues are a type of qmss queue that is monitored by the PDSP firmware and
> accumulated. Host is interrupted by PDSP firmware when packets become
> available in a ring buffer shared between the host and PDSP.
>
> There was an issue raised when merging the original patch set at
>   (1) https://lkml.org/lkml/2015/9/4/681
> 	[PATCH v1 1/2] soc: ti: display firmware file name as part of boot log
>   (2) https://lkml.org/lkml/2015/9/4/680
> 	[PATCH v1 2/2] ARM: dts: keystone: enable accumulator channels
>
> This series fixes the issues raised against above patch set. Key issues
> addressed.
>
> 	- Remove the firmware filename from DT and add it to the driver.
> 	  Use a name ks2_qmss_pdsp_acc48.bin. The idea is this can be a
> 	  soft link pointing to the real firmware file in file system.
>
> 	- Move the description of the driver design from DT document to one
> 	  under Documentation/arm/keystone/knav-qmss.txt. Update the this
> 	  document with location of acc firmware available under
> 	  linux-firmware.git.
>
> Additionally added accumulator queue support optional so that lack of
> firmware in the file system will not cause other queue types not available
> due to driver probe failure.
>
> Murali Karicheri (4):
>    Documentation: dt: soc: move driver description to a separate document
>    soc: ti: add firmware file name as part of the driver
>    ARM: dts: keystone: enable accumulator channels
>    soc: ti: qmss: make acc queue support optional in the driver
>
>   Documentation/arm/keystone/knav-qmss.txt           | 56 ++++++++++++++++++
>   .../bindings/soc/ti/keystone-navigator-qmss.txt    | 21 ++-----
>   arch/arm/boot/dts/k2e-netcp.dtsi                   | 23 ++++++++
>   arch/arm/boot/dts/k2hk-netcp.dtsi                  | 24 ++++++++
>   arch/arm/boot/dts/k2l-netcp.dtsi                   | 23 ++++++++
>   drivers/soc/ti/knav_qmss.h                         |  3 +-
>   drivers/soc/ti/knav_qmss_acc.c                     | 10 +++-
>   drivers/soc/ti/knav_qmss_queue.c                   | 67 ++++++++++++++--------
>   8 files changed, 183 insertions(+), 44 deletions(-)
>   create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>
Will re-send 1/4 and 4/4 since I have messed up the patch prefix.

-- 
Murali Karicheri
Linux Kernel, Keystone

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

* Re: [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support
@ 2015-10-12 19:54   ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-12 19:54 UTC (permalink / raw)
  To: corbet, ssantosh, linux-doc, linux-kernel, linux-arm-kernel,
	robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, linux,
	devicetree, arnd

On 10/12/2015 03:46 PM, Murali Karicheri wrote:
> This patch series enable accumulator queue support for K2 SoCs. Accumulator
> queues are a type of qmss queue that is monitored by the PDSP firmware and
> accumulated. Host is interrupted by PDSP firmware when packets become
> available in a ring buffer shared between the host and PDSP.
>
> There was an issue raised when merging the original patch set at
>   (1) https://lkml.org/lkml/2015/9/4/681
> 	[PATCH v1 1/2] soc: ti: display firmware file name as part of boot log
>   (2) https://lkml.org/lkml/2015/9/4/680
> 	[PATCH v1 2/2] ARM: dts: keystone: enable accumulator channels
>
> This series fixes the issues raised against above patch set. Key issues
> addressed.
>
> 	- Remove the firmware filename from DT and add it to the driver.
> 	  Use a name ks2_qmss_pdsp_acc48.bin. The idea is this can be a
> 	  soft link pointing to the real firmware file in file system.
>
> 	- Move the description of the driver design from DT document to one
> 	  under Documentation/arm/keystone/knav-qmss.txt. Update the this
> 	  document with location of acc firmware available under
> 	  linux-firmware.git.
>
> Additionally added accumulator queue support optional so that lack of
> firmware in the file system will not cause other queue types not available
> due to driver probe failure.
>
> Murali Karicheri (4):
>    Documentation: dt: soc: move driver description to a separate document
>    soc: ti: add firmware file name as part of the driver
>    ARM: dts: keystone: enable accumulator channels
>    soc: ti: qmss: make acc queue support optional in the driver
>
>   Documentation/arm/keystone/knav-qmss.txt           | 56 ++++++++++++++++++
>   .../bindings/soc/ti/keystone-navigator-qmss.txt    | 21 ++-----
>   arch/arm/boot/dts/k2e-netcp.dtsi                   | 23 ++++++++
>   arch/arm/boot/dts/k2hk-netcp.dtsi                  | 24 ++++++++
>   arch/arm/boot/dts/k2l-netcp.dtsi                   | 23 ++++++++
>   drivers/soc/ti/knav_qmss.h                         |  3 +-
>   drivers/soc/ti/knav_qmss_acc.c                     | 10 +++-
>   drivers/soc/ti/knav_qmss_queue.c                   | 67 ++++++++++++++--------
>   8 files changed, 183 insertions(+), 44 deletions(-)
>   create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>
Will re-send 1/4 and 4/4 since I have messed up the patch prefix.

-- 
Murali Karicheri
Linux Kernel, Keystone

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

* [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support
@ 2015-10-12 19:54   ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-12 19:54 UTC (permalink / raw)
  To: linux-arm-kernel

On 10/12/2015 03:46 PM, Murali Karicheri wrote:
> This patch series enable accumulator queue support for K2 SoCs. Accumulator
> queues are a type of qmss queue that is monitored by the PDSP firmware and
> accumulated. Host is interrupted by PDSP firmware when packets become
> available in a ring buffer shared between the host and PDSP.
>
> There was an issue raised when merging the original patch set at
>   (1) https://lkml.org/lkml/2015/9/4/681
> 	[PATCH v1 1/2] soc: ti: display firmware file name as part of boot log
>   (2) https://lkml.org/lkml/2015/9/4/680
> 	[PATCH v1 2/2] ARM: dts: keystone: enable accumulator channels
>
> This series fixes the issues raised against above patch set. Key issues
> addressed.
>
> 	- Remove the firmware filename from DT and add it to the driver.
> 	  Use a name ks2_qmss_pdsp_acc48.bin. The idea is this can be a
> 	  soft link pointing to the real firmware file in file system.
>
> 	- Move the description of the driver design from DT document to one
> 	  under Documentation/arm/keystone/knav-qmss.txt. Update the this
> 	  document with location of acc firmware available under
> 	  linux-firmware.git.
>
> Additionally added accumulator queue support optional so that lack of
> firmware in the file system will not cause other queue types not available
> due to driver probe failure.
>
> Murali Karicheri (4):
>    Documentation: dt: soc: move driver description to a separate document
>    soc: ti: add firmware file name as part of the driver
>    ARM: dts: keystone: enable accumulator channels
>    soc: ti: qmss: make acc queue support optional in the driver
>
>   Documentation/arm/keystone/knav-qmss.txt           | 56 ++++++++++++++++++
>   .../bindings/soc/ti/keystone-navigator-qmss.txt    | 21 ++-----
>   arch/arm/boot/dts/k2e-netcp.dtsi                   | 23 ++++++++
>   arch/arm/boot/dts/k2hk-netcp.dtsi                  | 24 ++++++++
>   arch/arm/boot/dts/k2l-netcp.dtsi                   | 23 ++++++++
>   drivers/soc/ti/knav_qmss.h                         |  3 +-
>   drivers/soc/ti/knav_qmss_acc.c                     | 10 +++-
>   drivers/soc/ti/knav_qmss_queue.c                   | 67 ++++++++++++++--------
>   8 files changed, 183 insertions(+), 44 deletions(-)
>   create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>
Will re-send 1/4 and 4/4 since I have messed up the patch prefix.

-- 
Murali Karicheri
Linux Kernel, Keystone

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

* Re: [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support
  2015-10-12 19:46 ` Murali Karicheri
  (?)
@ 2015-10-13 13:56   ` Murali Karicheri
  -1 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-13 13:56 UTC (permalink / raw)
  To: corbet, ssantosh, linux-doc, linux-kernel, linux-arm-kernel,
	robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, linux,
	devicetree, arnd, santosh shilimkar

On 10/12/2015 03:46 PM, Murali Karicheri wrote:
> This patch series enable accumulator queue support for K2 SoCs. Accumulator
> queues are a type of qmss queue that is monitored by the PDSP firmware and
> accumulated. Host is interrupted by PDSP firmware when packets become
> available in a ring buffer shared between the host and PDSP.
>
> There was an issue raised when merging the original patch set at
>   (1) https://lkml.org/lkml/2015/9/4/681
> 	[PATCH v1 1/2] soc: ti: display firmware file name as part of boot log
>   (2) https://lkml.org/lkml/2015/9/4/680
> 	[PATCH v1 2/2] ARM: dts: keystone: enable accumulator channels
>
> This series fixes the issues raised against above patch set. Key issues
> addressed.
>
> 	- Remove the firmware filename from DT and add it to the driver.
> 	  Use a name ks2_qmss_pdsp_acc48.bin. The idea is this can be a
> 	  soft link pointing to the real firmware file in file system.
>
> 	- Move the description of the driver design from DT document to one
> 	  under Documentation/arm/keystone/knav-qmss.txt. Update the this
> 	  document with location of acc firmware available under
> 	  linux-firmware.git.
>
> Additionally added accumulator queue support optional so that lack of
> firmware in the file system will not cause other queue types not available
> due to driver probe failure.
>
> Murali Karicheri (4):
>    Documentation: dt: soc: move driver description to a separate document
>    soc: ti: add firmware file name as part of the driver
>    ARM: dts: keystone: enable accumulator channels
>    soc: ti: qmss: make acc queue support optional in the driver
>
>   Documentation/arm/keystone/knav-qmss.txt           | 56 ++++++++++++++++++
>   .../bindings/soc/ti/keystone-navigator-qmss.txt    | 21 ++-----
>   arch/arm/boot/dts/k2e-netcp.dtsi                   | 23 ++++++++
>   arch/arm/boot/dts/k2hk-netcp.dtsi                  | 24 ++++++++
>   arch/arm/boot/dts/k2l-netcp.dtsi                   | 23 ++++++++
>   drivers/soc/ti/knav_qmss.h                         |  3 +-
>   drivers/soc/ti/knav_qmss_acc.c                     | 10 +++-
>   drivers/soc/ti/knav_qmss_queue.c                   | 67 ++++++++++++++--------
>   8 files changed, 183 insertions(+), 44 deletions(-)
>   create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>
Santosh, Arnd,

Could you please review and let me know if there is any comment. If 
looks good, could you please merge to v4.4 next branch?

Murali
-- 
Murali Karicheri
Linux Kernel, Keystone

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

* Re: [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support
@ 2015-10-13 13:56   ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-13 13:56 UTC (permalink / raw)
  To: corbet, ssantosh, linux-doc, linux-kernel, linux-arm-kernel,
	robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, linux,
	devicetree, arnd, santosh shilimkar

On 10/12/2015 03:46 PM, Murali Karicheri wrote:
> This patch series enable accumulator queue support for K2 SoCs. Accumulator
> queues are a type of qmss queue that is monitored by the PDSP firmware and
> accumulated. Host is interrupted by PDSP firmware when packets become
> available in a ring buffer shared between the host and PDSP.
>
> There was an issue raised when merging the original patch set at
>   (1) https://lkml.org/lkml/2015/9/4/681
> 	[PATCH v1 1/2] soc: ti: display firmware file name as part of boot log
>   (2) https://lkml.org/lkml/2015/9/4/680
> 	[PATCH v1 2/2] ARM: dts: keystone: enable accumulator channels
>
> This series fixes the issues raised against above patch set. Key issues
> addressed.
>
> 	- Remove the firmware filename from DT and add it to the driver.
> 	  Use a name ks2_qmss_pdsp_acc48.bin. The idea is this can be a
> 	  soft link pointing to the real firmware file in file system.
>
> 	- Move the description of the driver design from DT document to one
> 	  under Documentation/arm/keystone/knav-qmss.txt. Update the this
> 	  document with location of acc firmware available under
> 	  linux-firmware.git.
>
> Additionally added accumulator queue support optional so that lack of
> firmware in the file system will not cause other queue types not available
> due to driver probe failure.
>
> Murali Karicheri (4):
>    Documentation: dt: soc: move driver description to a separate document
>    soc: ti: add firmware file name as part of the driver
>    ARM: dts: keystone: enable accumulator channels
>    soc: ti: qmss: make acc queue support optional in the driver
>
>   Documentation/arm/keystone/knav-qmss.txt           | 56 ++++++++++++++++++
>   .../bindings/soc/ti/keystone-navigator-qmss.txt    | 21 ++-----
>   arch/arm/boot/dts/k2e-netcp.dtsi                   | 23 ++++++++
>   arch/arm/boot/dts/k2hk-netcp.dtsi                  | 24 ++++++++
>   arch/arm/boot/dts/k2l-netcp.dtsi                   | 23 ++++++++
>   drivers/soc/ti/knav_qmss.h                         |  3 +-
>   drivers/soc/ti/knav_qmss_acc.c                     | 10 +++-
>   drivers/soc/ti/knav_qmss_queue.c                   | 67 ++++++++++++++--------
>   8 files changed, 183 insertions(+), 44 deletions(-)
>   create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>
Santosh, Arnd,

Could you please review and let me know if there is any comment. If 
looks good, could you please merge to v4.4 next branch?

Murali
-- 
Murali Karicheri
Linux Kernel, Keystone

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

* [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support
@ 2015-10-13 13:56   ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-13 13:56 UTC (permalink / raw)
  To: linux-arm-kernel

On 10/12/2015 03:46 PM, Murali Karicheri wrote:
> This patch series enable accumulator queue support for K2 SoCs. Accumulator
> queues are a type of qmss queue that is monitored by the PDSP firmware and
> accumulated. Host is interrupted by PDSP firmware when packets become
> available in a ring buffer shared between the host and PDSP.
>
> There was an issue raised when merging the original patch set at
>   (1) https://lkml.org/lkml/2015/9/4/681
> 	[PATCH v1 1/2] soc: ti: display firmware file name as part of boot log
>   (2) https://lkml.org/lkml/2015/9/4/680
> 	[PATCH v1 2/2] ARM: dts: keystone: enable accumulator channels
>
> This series fixes the issues raised against above patch set. Key issues
> addressed.
>
> 	- Remove the firmware filename from DT and add it to the driver.
> 	  Use a name ks2_qmss_pdsp_acc48.bin. The idea is this can be a
> 	  soft link pointing to the real firmware file in file system.
>
> 	- Move the description of the driver design from DT document to one
> 	  under Documentation/arm/keystone/knav-qmss.txt. Update the this
> 	  document with location of acc firmware available under
> 	  linux-firmware.git.
>
> Additionally added accumulator queue support optional so that lack of
> firmware in the file system will not cause other queue types not available
> due to driver probe failure.
>
> Murali Karicheri (4):
>    Documentation: dt: soc: move driver description to a separate document
>    soc: ti: add firmware file name as part of the driver
>    ARM: dts: keystone: enable accumulator channels
>    soc: ti: qmss: make acc queue support optional in the driver
>
>   Documentation/arm/keystone/knav-qmss.txt           | 56 ++++++++++++++++++
>   .../bindings/soc/ti/keystone-navigator-qmss.txt    | 21 ++-----
>   arch/arm/boot/dts/k2e-netcp.dtsi                   | 23 ++++++++
>   arch/arm/boot/dts/k2hk-netcp.dtsi                  | 24 ++++++++
>   arch/arm/boot/dts/k2l-netcp.dtsi                   | 23 ++++++++
>   drivers/soc/ti/knav_qmss.h                         |  3 +-
>   drivers/soc/ti/knav_qmss_acc.c                     | 10 +++-
>   drivers/soc/ti/knav_qmss_queue.c                   | 67 ++++++++++++++--------
>   8 files changed, 183 insertions(+), 44 deletions(-)
>   create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>
Santosh, Arnd,

Could you please review and let me know if there is any comment. If 
looks good, could you please merge to v4.4 next branch?

Murali
-- 
Murali Karicheri
Linux Kernel, Keystone

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

* Re: [PATCH v2 2/4] soc: ti: add firmware file name as part of the driver
  2015-10-12 19:46   ` Murali Karicheri
@ 2015-10-13 14:32     ` Arnd Bergmann
  -1 siblings, 0 replies; 49+ messages in thread
From: Arnd Bergmann @ 2015-10-13 14:32 UTC (permalink / raw)
  To: Murali Karicheri
  Cc: corbet, ssantosh, linux-doc, linux-kernel, linux-arm-kernel,
	robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, linux,
	devicetree

On Monday 12 October 2015 15:46:49 Murali Karicheri wrote:
> Currently firmware file name is included in the DTS. This is not scalable
> as user has to change the DTS if they need upgrade to a new firmware.
> Instead, add the firmware file name in the driver itself. As long as there
> is no API change, new firmware upgrade is easy and require no driver
> change. User is expected to copy the firmware image to the file system
> and add a sym link to the new firmware for doing an upgrade. Driver add
> a array of firmware file names to search for the available firmware blobs.
> This scheme also prepare the driver for future changes to API if ever
> happens. In such case it is assumed that driver needs to change to
> accommodate the new firmware and new firmware file name will get added to
> the array.
> 
> Also update the DT document to remove the firmware attribute and add
> description about firmware in the driver documentation.
> 
> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
> 

Acked-by: Arnd Bergmann <arnd@arndb.de>

Looks good.

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

* [PATCH v2 2/4] soc: ti: add firmware file name as part of the driver
@ 2015-10-13 14:32     ` Arnd Bergmann
  0 siblings, 0 replies; 49+ messages in thread
From: Arnd Bergmann @ 2015-10-13 14:32 UTC (permalink / raw)
  To: linux-arm-kernel

On Monday 12 October 2015 15:46:49 Murali Karicheri wrote:
> Currently firmware file name is included in the DTS. This is not scalable
> as user has to change the DTS if they need upgrade to a new firmware.
> Instead, add the firmware file name in the driver itself. As long as there
> is no API change, new firmware upgrade is easy and require no driver
> change. User is expected to copy the firmware image to the file system
> and add a sym link to the new firmware for doing an upgrade. Driver add
> a array of firmware file names to search for the available firmware blobs.
> This scheme also prepare the driver for future changes to API if ever
> happens. In such case it is assumed that driver needs to change to
> accommodate the new firmware and new firmware file name will get added to
> the array.
> 
> Also update the DT document to remove the firmware attribute and add
> description about firmware in the driver documentation.
> 
> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
> 

Acked-by: Arnd Bergmann <arnd@arndb.de>

Looks good.

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

* Re: [PATCH v2 2/4] soc: ti: add firmware file name as part of the driver
  2015-10-12 19:46   ` Murali Karicheri
                     ` (2 preceding siblings ...)
  (?)
@ 2015-10-13 14:38   ` Rob Herring
  -1 siblings, 0 replies; 49+ messages in thread
From: Rob Herring @ 2015-10-13 14:38 UTC (permalink / raw)
  To: Murali Karicheri
  Cc: Jonathan Corbet, Santosh Shilimkar, linux-doc, linux-kernel,
	linux-arm-kernel, Pawel Moll, Mark Rutland, Ian Campbell,
	Kumar Gala, Russell King - ARM Linux, devicetree, Arnd Bergmann



On Mon, Oct 12, 2015 at 2:46 PM, Murali Karicheri <m-karicheri2@ti.com> wrote:
> Currently firmware file name is included in the DTS. This is not scalable
> as user has to change the DTS if they need upgrade to a new firmware.
> Instead, add the firmware file name in the driver itself. As long as there
> is no API change, new firmware upgrade is easy and require no driver
> change. User is expected to copy the firmware image to the file system
> and add a sym link to the new firmware for doing an upgrade. Driver add
> a array of firmware file names to search for the available firmware blobs.
> This scheme also prepare the driver for future changes to API if ever
> happens. In such case it is assumed that driver needs to change to
> accommodate the new firmware and new firmware file name will get added to
> the array.
>
> Also update the DT document to remove the firmware attribute and add
> description about firmware in the driver documentation.
>
> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
> ---
>  - v2. Moved firmware file name from DT to driver code.
>  Documentation/arm/keystone/knav-qmss.txt           | 26 ++++++++++++
>  .../bindings/soc/ti/keystone-navigator-qmss.txt    |  1 -
>  drivers/soc/ti/knav_qmss.h                         |  1 -
>  drivers/soc/ti/knav_qmss_queue.c                   | 47 +++++++++++++---------
>  4 files changed, 54 insertions(+), 21 deletions(-)
>
> diff --git a/Documentation/arm/keystone/knav-qmss.txt b/Documentation/arm/keystone/knav-qmss.txt
> index 79946d1..da34a5b 100644
> --- a/Documentation/arm/keystone/knav-qmss.txt
> +++ b/Documentation/arm/keystone/knav-qmss.txt
> @@ -22,3 +22,29 @@ pool management.
>  knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
>  allocate descriptor pools, map the descriptors, push/pop to queues etc. For
>  details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
> +
> +DT documentation is available at
> +Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
> +
> +Accumulator QMSS queues using PDSP firmware
> +============================================
> +The QMSS PDSP firmware support accumulator channel that can monitor a single
> +queue or multiple contiguous queues. drivers/soc/ti/knav_qmss_acc.c is the
> +driver that interface with the accumulator PDSP. This configures
> +accumulator channels defined in DTS (example in DT documentation) to monitor
> +1 or 32 queues per channel. More description on the firmware is available in
> +CPPI/QMSS Low Level Driver document (docs/CPPI_QMSS_LLD_SDS.pdf) at
> +       git://git.ti.com/keystone-rtos/qmss-lld.git
> +
> +k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin firmware supports upto 48 accumulator
> +channels. This firmware is available under ti-keystone folder of
> +firmware.git at
> +   git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
> +
> +To use copy the firmware image to lib/firmware folder of the initramfs or
> +ubifs file system and provide a sym link to k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin
> +in the file system and boot up the kernel. User would see
> +
> + "firmware file ks2_qmss_pdsp_acc48.bin downloaded for PDSP"
> +
> +in the boot up log if loading of firmware to PDSP is successful.
> diff --git a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
> index 2cecea1..aac8c36 100644
> --- a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
> +++ b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
> @@ -209,7 +209,6 @@ qmss: qmss@2a40000 {
>                 #size-cells = <1>;
>                 ranges;
>                 pdsp0@0x2a10000 {
> -                       firmware = "keystone/qmss_pdsp_acc48_k2_le_1_0_0_8.fw";
>                         reg = <0x2a10000 0x1000>,
>                               <0x2a0f000 0x100>,
>                               <0x2a0c000 0x3c8>,
> diff --git a/drivers/soc/ti/knav_qmss.h b/drivers/soc/ti/knav_qmss.h
> index 51da234..c31b8d8 100644
> --- a/drivers/soc/ti/knav_qmss.h
> +++ b/drivers/soc/ti/knav_qmss.h
> @@ -135,7 +135,6 @@ struct knav_pdsp_info {
>         };
>         void __iomem                                    *intd;
>         u32 __iomem                                     *iram;
> -       const char                                      *firmware;
>         u32                                             id;
>         struct list_head                                list;
>  };
> diff --git a/drivers/soc/ti/knav_qmss_queue.c b/drivers/soc/ti/knav_qmss_queue.c
> index 6d8646d..06d9de8 100644
> --- a/drivers/soc/ti/knav_qmss_queue.c
> +++ b/drivers/soc/ti/knav_qmss_queue.c
> @@ -68,6 +68,12 @@ static DEFINE_MUTEX(knav_dev_lock);
>              idx < (kdev)->num_queues_in_use;                   \
>              idx++, inst = knav_queue_idx_to_inst(kdev, idx))
>
> +/* All firmware file names end up here. List the firmware file names below.
> + * Newest followed by older ones. Search is done from start of the array
> + * until a firmware file is found.
> + */
> +const char *knav_acc_firmwares[] = {"ks2_qmss_pdsp_acc48.bin"};
> +
>  /**
>   * knav_queue_notify: qmss queue notfier call
>   *
> @@ -1439,7 +1445,6 @@ static int knav_queue_init_pdsps(struct knav_device *kdev,
>         struct device *dev = kdev->dev;
>         struct knav_pdsp_info *pdsp;
>         struct device_node *child;
> -       int ret;
>
>         for_each_child_of_node(pdsps, child) {
>                 pdsp = devm_kzalloc(dev, sizeof(*pdsp), GFP_KERNEL);
> @@ -1448,17 +1453,6 @@ static int knav_queue_init_pdsps(struct knav_device *kdev,
>                         return -ENOMEM;
>                 }
>                 pdsp->name = knav_queue_find_name(child);
> -               ret = of_property_read_string(child, "firmware",
> -                                             &pdsp->firmware);
> -               if (ret < 0 || !pdsp->firmware) {
> -                       dev_err(dev, "unknown firmware for pdsp %s\n",
> -                               pdsp->name);
> -                       devm_kfree(dev, pdsp);
> -                       continue;
> -               }
> -               dev_dbg(dev, "pdsp name %s fw name :%s\n", pdsp->name,
> -                       pdsp->firmware);
> -
>                 pdsp->iram =
>                         knav_queue_map_reg(kdev, child,
>                                            KNAV_QUEUE_PDSP_IRAM_REG_INDEX);
> @@ -1489,9 +1483,9 @@ static int knav_queue_init_pdsps(struct knav_device *kdev,
>                 }
>                 of_property_read_u32(child, "id", &pdsp->id);
>                 list_add_tail(&pdsp->list, &kdev->pdsps);
> -               dev_dbg(dev, "added pdsp %s: command %p, iram %p, regs %p, intd %p, firmware %s\n",
> +               dev_dbg(dev, "added pdsp %s: command %p, iram %p, regs %p, intd %p\n",
>                         pdsp->name, pdsp->command, pdsp->iram, pdsp->regs,
> -                       pdsp->intd, pdsp->firmware);
> +                       pdsp->intd);
>         }
>         return 0;
>  }
> @@ -1518,14 +1512,29 @@ static int knav_queue_load_pdsp(struct knav_device *kdev,
>  {
>         int i, ret, fwlen;
>         const struct firmware *fw;
> +       bool found = false;
>         u32 *fwdata;
>
> -       ret = request_firmware(&fw, pdsp->firmware, kdev->dev);
> -       if (ret) {
> -               dev_err(kdev->dev, "failed to get firmware %s for pdsp %s\n",
> -                       pdsp->firmware, pdsp->name);
> -               return ret;
> +       for (i = 0; i < ARRAY_SIZE(knav_acc_firmwares); i++) {
> +               if (knav_acc_firmwares[i]) {
> +                       ret = request_firmware(&fw,
> +                                              knav_acc_firmwares[i],
> +                                              kdev->dev);
> +                       if (!ret) {
> +                               found = true;
> +                               break;
> +                       }
> +               }
> +       }
> +
> +       if (!found) {
> +               dev_err(kdev->dev, "failed to get firmware for pdsp\n");
> +               return -ENODEV;
>         }
> +
> +       dev_info(kdev->dev, "firmware file %s downloaded for PDSP\n",
> +                knav_acc_firmwares[i]);
> +
>         writel_relaxed(pdsp->id + 1, pdsp->command + 0x18);
>         /* download the firmware */
>         fwdata = (u32 *)fw->data;
> --
> 1.9.1
>

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

* Re: [PATCH 1/4] Documentation: dt: soc: move driver description to a separate document
  2015-10-12 19:46   ` Murali Karicheri
  (?)
@ 2015-10-13 14:42     ` Rob Herring
  -1 siblings, 0 replies; 49+ messages in thread
From: Rob Herring @ 2015-10-13 14:42 UTC (permalink / raw)
  To: Murali Karicheri
  Cc: Jonathan Corbet, Santosh Shilimkar, linux-doc, linux-kernel,
	linux-arm-kernel, Pawel Moll, Mark Rutland, Ian Campbell,
	Kumar Gala, Russell King - ARM Linux, devicetree, Arnd Bergmann

On Mon, Oct 12, 2015 at 2:46 PM, Murali Karicheri <m-karicheri2@ti.com> wrote:
> Currently the DT bindings have details about the driver as well. This
> patch moves this to a separate document for knav qmss driver so that
> driver detail update can be done as needed without polluting the DT
> bindings description.
>
> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
> ---
>  Documentation/arm/keystone/knav-qmss.txt           | 24 ++++++++++++++++++++++
>  .../bindings/soc/ti/keystone-navigator-qmss.txt    | 20 ++++--------------
>  2 files changed, 28 insertions(+), 16 deletions(-)
>  create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>
> diff --git a/Documentation/arm/keystone/knav-qmss.txt b/Documentation/arm/keystone/knav-qmss.txt
> new file mode 100644
> index 0000000..79946d1
> --- /dev/null
> +++ b/Documentation/arm/keystone/knav-qmss.txt
> @@ -0,0 +1,24 @@
> +* Texas Instruments Keystone Navigator Queue Management SubSystem driver
> +
> +Driver source code path
> +  drivers/soc/ti/knav_qmss.c
> +  drivers/soc/ti/knav_qmss_acc.c
> +
> +The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
> +the main hardware sub system which forms the backbone of the Keystone
> +multi-core Navigator. QMSS consist of queue managers, packed-data structure
> +processors(PDSP), linking RAM, descriptor pools and infrastructure
> +Packet DMA.
> +The Queue Manager is a hardware module that is responsible for accelerating
> +management of the packet queues. Packets are queued/de-queued by writing or
> +reading descriptor address to a particular memory mapped location. The PDSPs
> +perform QMSS related functions like accumulation, QoS, or event management.
> +Linking RAM registers are used to link the descriptors which are stored in
> +descriptor RAM. Descriptor RAM is configurable as internal or external memory.
> +The QMSS driver manages the PDSP setups, linking RAM regions,
> +queue pool management (allocation, push, pop and notify) and descriptor
> +pool management.
> +
> +knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
> +allocate descriptor pools, map the descriptors, push/pop to queues etc. For
> +details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
> diff --git a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
> index d8e8cdb..2cecea1 100644
> --- a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
> +++ b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
> @@ -1,20 +1,8 @@
> -* Texas Instruments Keystone Navigator Queue Management SubSystem driver
> -
> -The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
> -the main hardware sub system which forms the backbone of the Keystone
> -multi-core Navigator. QMSS consist of queue managers, packed-data structure
> -processors(PDSP), linking RAM, descriptor pools and infrastructure
> -Packet DMA.
> -The Queue Manager is a hardware module that is responsible for accelerating
> -management of the packet queues. Packets are queued/de-queued by writing or
> -reading descriptor address to a particular memory mapped location. The PDSPs
> -perform QMSS related functions like accumulation, QoS, or event management.
> -Linking RAM registers are used to link the descriptors which are stored in
> -descriptor RAM. Descriptor RAM is configurable as internal or external memory.
> -The QMSS driver manages the PDSP setups, linking RAM regions,
> -queue pool management (allocation, push, pop and notify) and descriptor
> -pool management.

Only the last sentence seems to be about the driver and is rather
obvious (a driver manages the h/w). I would leave all this as-is
currently.

Rob

> +* Texas Instruments Keystone Navigator (knav) Queue Management SubSystem driver
> +  DT bindings
>
> +For details of the driver, please refer to
> +Documentation/arm/keystone/knav-qmss.txt
>
>  Required properties:
>  - compatible   : Must be "ti,keystone-navigator-qmss";
> --
> 1.9.1
>

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

* Re: [PATCH 1/4] Documentation: dt: soc: move driver description to a separate document
@ 2015-10-13 14:42     ` Rob Herring
  0 siblings, 0 replies; 49+ messages in thread
From: Rob Herring @ 2015-10-13 14:42 UTC (permalink / raw)
  To: Murali Karicheri
  Cc: Jonathan Corbet, Santosh Shilimkar, linux-doc, linux-kernel,
	linux-arm-kernel, Pawel Moll, Mark Rutland, Ian Campbell,
	Kumar Gala, Russell King - ARM Linux, devicetree, Arnd Bergmann

On Mon, Oct 12, 2015 at 2:46 PM, Murali Karicheri <m-karicheri2@ti.com> wrote:
> Currently the DT bindings have details about the driver as well. This
> patch moves this to a separate document for knav qmss driver so that
> driver detail update can be done as needed without polluting the DT
> bindings description.
>
> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
> ---
>  Documentation/arm/keystone/knav-qmss.txt           | 24 ++++++++++++++++++++++
>  .../bindings/soc/ti/keystone-navigator-qmss.txt    | 20 ++++--------------
>  2 files changed, 28 insertions(+), 16 deletions(-)
>  create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>
> diff --git a/Documentation/arm/keystone/knav-qmss.txt b/Documentation/arm/keystone/knav-qmss.txt
> new file mode 100644
> index 0000000..79946d1
> --- /dev/null
> +++ b/Documentation/arm/keystone/knav-qmss.txt
> @@ -0,0 +1,24 @@
> +* Texas Instruments Keystone Navigator Queue Management SubSystem driver
> +
> +Driver source code path
> +  drivers/soc/ti/knav_qmss.c
> +  drivers/soc/ti/knav_qmss_acc.c
> +
> +The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
> +the main hardware sub system which forms the backbone of the Keystone
> +multi-core Navigator. QMSS consist of queue managers, packed-data structure
> +processors(PDSP), linking RAM, descriptor pools and infrastructure
> +Packet DMA.
> +The Queue Manager is a hardware module that is responsible for accelerating
> +management of the packet queues. Packets are queued/de-queued by writing or
> +reading descriptor address to a particular memory mapped location. The PDSPs
> +perform QMSS related functions like accumulation, QoS, or event management.
> +Linking RAM registers are used to link the descriptors which are stored in
> +descriptor RAM. Descriptor RAM is configurable as internal or external memory.
> +The QMSS driver manages the PDSP setups, linking RAM regions,
> +queue pool management (allocation, push, pop and notify) and descriptor
> +pool management.
> +
> +knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
> +allocate descriptor pools, map the descriptors, push/pop to queues etc. For
> +details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
> diff --git a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
> index d8e8cdb..2cecea1 100644
> --- a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
> +++ b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
> @@ -1,20 +1,8 @@
> -* Texas Instruments Keystone Navigator Queue Management SubSystem driver
> -
> -The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
> -the main hardware sub system which forms the backbone of the Keystone
> -multi-core Navigator. QMSS consist of queue managers, packed-data structure
> -processors(PDSP), linking RAM, descriptor pools and infrastructure
> -Packet DMA.
> -The Queue Manager is a hardware module that is responsible for accelerating
> -management of the packet queues. Packets are queued/de-queued by writing or
> -reading descriptor address to a particular memory mapped location. The PDSPs
> -perform QMSS related functions like accumulation, QoS, or event management.
> -Linking RAM registers are used to link the descriptors which are stored in
> -descriptor RAM. Descriptor RAM is configurable as internal or external memory.
> -The QMSS driver manages the PDSP setups, linking RAM regions,
> -queue pool management (allocation, push, pop and notify) and descriptor
> -pool management.

Only the last sentence seems to be about the driver and is rather
obvious (a driver manages the h/w). I would leave all this as-is
currently.

Rob

> +* Texas Instruments Keystone Navigator (knav) Queue Management SubSystem driver
> +  DT bindings
>
> +For details of the driver, please refer to
> +Documentation/arm/keystone/knav-qmss.txt
>
>  Required properties:
>  - compatible   : Must be "ti,keystone-navigator-qmss";
> --
> 1.9.1
>

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

* [PATCH 1/4] Documentation: dt: soc: move driver description to a separate document
@ 2015-10-13 14:42     ` Rob Herring
  0 siblings, 0 replies; 49+ messages in thread
From: Rob Herring @ 2015-10-13 14:42 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Oct 12, 2015 at 2:46 PM, Murali Karicheri <m-karicheri2@ti.com> wrote:
> Currently the DT bindings have details about the driver as well. This
> patch moves this to a separate document for knav qmss driver so that
> driver detail update can be done as needed without polluting the DT
> bindings description.
>
> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
> ---
>  Documentation/arm/keystone/knav-qmss.txt           | 24 ++++++++++++++++++++++
>  .../bindings/soc/ti/keystone-navigator-qmss.txt    | 20 ++++--------------
>  2 files changed, 28 insertions(+), 16 deletions(-)
>  create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>
> diff --git a/Documentation/arm/keystone/knav-qmss.txt b/Documentation/arm/keystone/knav-qmss.txt
> new file mode 100644
> index 0000000..79946d1
> --- /dev/null
> +++ b/Documentation/arm/keystone/knav-qmss.txt
> @@ -0,0 +1,24 @@
> +* Texas Instruments Keystone Navigator Queue Management SubSystem driver
> +
> +Driver source code path
> +  drivers/soc/ti/knav_qmss.c
> +  drivers/soc/ti/knav_qmss_acc.c
> +
> +The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
> +the main hardware sub system which forms the backbone of the Keystone
> +multi-core Navigator. QMSS consist of queue managers, packed-data structure
> +processors(PDSP), linking RAM, descriptor pools and infrastructure
> +Packet DMA.
> +The Queue Manager is a hardware module that is responsible for accelerating
> +management of the packet queues. Packets are queued/de-queued by writing or
> +reading descriptor address to a particular memory mapped location. The PDSPs
> +perform QMSS related functions like accumulation, QoS, or event management.
> +Linking RAM registers are used to link the descriptors which are stored in
> +descriptor RAM. Descriptor RAM is configurable as internal or external memory.
> +The QMSS driver manages the PDSP setups, linking RAM regions,
> +queue pool management (allocation, push, pop and notify) and descriptor
> +pool management.
> +
> +knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
> +allocate descriptor pools, map the descriptors, push/pop to queues etc. For
> +details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
> diff --git a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
> index d8e8cdb..2cecea1 100644
> --- a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
> +++ b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
> @@ -1,20 +1,8 @@
> -* Texas Instruments Keystone Navigator Queue Management SubSystem driver
> -
> -The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
> -the main hardware sub system which forms the backbone of the Keystone
> -multi-core Navigator. QMSS consist of queue managers, packed-data structure
> -processors(PDSP), linking RAM, descriptor pools and infrastructure
> -Packet DMA.
> -The Queue Manager is a hardware module that is responsible for accelerating
> -management of the packet queues. Packets are queued/de-queued by writing or
> -reading descriptor address to a particular memory mapped location. The PDSPs
> -perform QMSS related functions like accumulation, QoS, or event management.
> -Linking RAM registers are used to link the descriptors which are stored in
> -descriptor RAM. Descriptor RAM is configurable as internal or external memory.
> -The QMSS driver manages the PDSP setups, linking RAM regions,
> -queue pool management (allocation, push, pop and notify) and descriptor
> -pool management.

Only the last sentence seems to be about the driver and is rather
obvious (a driver manages the h/w). I would leave all this as-is
currently.

Rob

> +* Texas Instruments Keystone Navigator (knav) Queue Management SubSystem driver
> +  DT bindings
>
> +For details of the driver, please refer to
> +Documentation/arm/keystone/knav-qmss.txt
>
>  Required properties:
>  - compatible   : Must be "ti,keystone-navigator-qmss";
> --
> 1.9.1
>

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

* Re: [PATCH 1/4] Documentation: dt: soc: move driver description to a separate document
  2015-10-13 14:42     ` Rob Herring
  (?)
@ 2015-10-13 15:44       ` Murali Karicheri
  -1 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-13 15:44 UTC (permalink / raw)
  To: Rob Herring
  Cc: Jonathan Corbet, Santosh Shilimkar, linux-doc, linux-kernel,
	linux-arm-kernel, Pawel Moll, Mark Rutland, Ian Campbell,
	Kumar Gala, Russell King - ARM Linux, devicetree, Arnd Bergmann

On 10/13/2015 10:42 AM, Rob Herring wrote:
> On Mon, Oct 12, 2015 at 2:46 PM, Murali Karicheri <m-karicheri2@ti.com> wrote:
>> Currently the DT bindings have details about the driver as well. This
>> patch moves this to a separate document for knav qmss driver so that
>> driver detail update can be done as needed without polluting the DT
>> bindings description.
>>
>> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>> ---
>>   Documentation/arm/keystone/knav-qmss.txt           | 24 ++++++++++++++++++++++
>>   .../bindings/soc/ti/keystone-navigator-qmss.txt    | 20 ++++--------------
>>   2 files changed, 28 insertions(+), 16 deletions(-)
>>   create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>>
>> diff --git a/Documentation/arm/keystone/knav-qmss.txt b/Documentation/arm/keystone/knav-qmss.txt
>> new file mode 100644
>> index 0000000..79946d1
>> --- /dev/null
>> +++ b/Documentation/arm/keystone/knav-qmss.txt
>> @@ -0,0 +1,24 @@
>> +* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>> +
>> +Driver source code path
>> +  drivers/soc/ti/knav_qmss.c
>> +  drivers/soc/ti/knav_qmss_acc.c
>> +
>> +The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>> +the main hardware sub system which forms the backbone of the Keystone
>> +multi-core Navigator. QMSS consist of queue managers, packed-data structure
>> +processors(PDSP), linking RAM, descriptor pools and infrastructure
>> +Packet DMA.
>> +The Queue Manager is a hardware module that is responsible for accelerating
>> +management of the packet queues. Packets are queued/de-queued by writing or
>> +reading descriptor address to a particular memory mapped location. The PDSPs
>> +perform QMSS related functions like accumulation, QoS, or event management.
>> +Linking RAM registers are used to link the descriptors which are stored in
>> +descriptor RAM. Descriptor RAM is configurable as internal or external memory.
>> +The QMSS driver manages the PDSP setups, linking RAM regions,
>> +queue pool management (allocation, push, pop and notify) and descriptor
>> +pool management.
>> +
>> +knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
>> +allocate descriptor pools, map the descriptors, push/pop to queues etc. For
>> +details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
>> diff --git a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>> index d8e8cdb..2cecea1 100644
>> --- a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>> +++ b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>> @@ -1,20 +1,8 @@
>> -* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>> -
>> -The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>> -the main hardware sub system which forms the backbone of the Keystone
>> -multi-core Navigator. QMSS consist of queue managers, packed-data structure
>> -processors(PDSP), linking RAM, descriptor pools and infrastructure
>> -Packet DMA.
>> -The Queue Manager is a hardware module that is responsible for accelerating
>> -management of the packet queues. Packets are queued/de-queued by writing or
>> -reading descriptor address to a particular memory mapped location. The PDSPs
>> -perform QMSS related functions like accumulation, QoS, or event management.
>> -Linking RAM registers are used to link the descriptors which are stored in
>> -descriptor RAM. Descriptor RAM is configurable as internal or external memory.
>> -The QMSS driver manages the PDSP setups, linking RAM regions,
>> -queue pool management (allocation, push, pop and notify) and descriptor
>> -pool management.
>
> Only the last sentence seems to be about the driver and is rather
> obvious (a driver manages the h/w). I would leave all this as-is
> currently.
>
> Rob
>
Rob,

I promise I will fix this in my next opportunity. Also there is similar 
clean up needed for knav dma DT documentation and Netcp documentations. 
It is in my TODO list.

Thanks.

Murali
>> +* Texas Instruments Keystone Navigator (knav) Queue Management SubSystem driver
>> +  DT bindings
>>
>> +For details of the driver, please refer to
>> +Documentation/arm/keystone/knav-qmss.txt
>>
>>   Required properties:
>>   - compatible   : Must be "ti,keystone-navigator-qmss";
>> --
>> 1.9.1
>>
>
>


-- 
Murali Karicheri
Linux Kernel, Keystone

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

* Re: [PATCH 1/4] Documentation: dt: soc: move driver description to a separate document
@ 2015-10-13 15:44       ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-13 15:44 UTC (permalink / raw)
  To: Rob Herring
  Cc: Jonathan Corbet, Santosh Shilimkar, linux-doc, linux-kernel,
	linux-arm-kernel, Pawel Moll, Mark Rutland, Ian Campbell,
	Kumar Gala, Russell King - ARM Linux, devicetree, Arnd Bergmann

On 10/13/2015 10:42 AM, Rob Herring wrote:
> On Mon, Oct 12, 2015 at 2:46 PM, Murali Karicheri <m-karicheri2@ti.com> wrote:
>> Currently the DT bindings have details about the driver as well. This
>> patch moves this to a separate document for knav qmss driver so that
>> driver detail update can be done as needed without polluting the DT
>> bindings description.
>>
>> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>> ---
>>   Documentation/arm/keystone/knav-qmss.txt           | 24 ++++++++++++++++++++++
>>   .../bindings/soc/ti/keystone-navigator-qmss.txt    | 20 ++++--------------
>>   2 files changed, 28 insertions(+), 16 deletions(-)
>>   create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>>
>> diff --git a/Documentation/arm/keystone/knav-qmss.txt b/Documentation/arm/keystone/knav-qmss.txt
>> new file mode 100644
>> index 0000000..79946d1
>> --- /dev/null
>> +++ b/Documentation/arm/keystone/knav-qmss.txt
>> @@ -0,0 +1,24 @@
>> +* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>> +
>> +Driver source code path
>> +  drivers/soc/ti/knav_qmss.c
>> +  drivers/soc/ti/knav_qmss_acc.c
>> +
>> +The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>> +the main hardware sub system which forms the backbone of the Keystone
>> +multi-core Navigator. QMSS consist of queue managers, packed-data structure
>> +processors(PDSP), linking RAM, descriptor pools and infrastructure
>> +Packet DMA.
>> +The Queue Manager is a hardware module that is responsible for accelerating
>> +management of the packet queues. Packets are queued/de-queued by writing or
>> +reading descriptor address to a particular memory mapped location. The PDSPs
>> +perform QMSS related functions like accumulation, QoS, or event management.
>> +Linking RAM registers are used to link the descriptors which are stored in
>> +descriptor RAM. Descriptor RAM is configurable as internal or external memory.
>> +The QMSS driver manages the PDSP setups, linking RAM regions,
>> +queue pool management (allocation, push, pop and notify) and descriptor
>> +pool management.
>> +
>> +knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
>> +allocate descriptor pools, map the descriptors, push/pop to queues etc. For
>> +details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
>> diff --git a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>> index d8e8cdb..2cecea1 100644
>> --- a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>> +++ b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>> @@ -1,20 +1,8 @@
>> -* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>> -
>> -The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>> -the main hardware sub system which forms the backbone of the Keystone
>> -multi-core Navigator. QMSS consist of queue managers, packed-data structure
>> -processors(PDSP), linking RAM, descriptor pools and infrastructure
>> -Packet DMA.
>> -The Queue Manager is a hardware module that is responsible for accelerating
>> -management of the packet queues. Packets are queued/de-queued by writing or
>> -reading descriptor address to a particular memory mapped location. The PDSPs
>> -perform QMSS related functions like accumulation, QoS, or event management.
>> -Linking RAM registers are used to link the descriptors which are stored in
>> -descriptor RAM. Descriptor RAM is configurable as internal or external memory.
>> -The QMSS driver manages the PDSP setups, linking RAM regions,
>> -queue pool management (allocation, push, pop and notify) and descriptor
>> -pool management.
>
> Only the last sentence seems to be about the driver and is rather
> obvious (a driver manages the h/w). I would leave all this as-is
> currently.
>
> Rob
>
Rob,

I promise I will fix this in my next opportunity. Also there is similar 
clean up needed for knav dma DT documentation and Netcp documentations. 
It is in my TODO list.

Thanks.

Murali
>> +* Texas Instruments Keystone Navigator (knav) Queue Management SubSystem driver
>> +  DT bindings
>>
>> +For details of the driver, please refer to
>> +Documentation/arm/keystone/knav-qmss.txt
>>
>>   Required properties:
>>   - compatible   : Must be "ti,keystone-navigator-qmss";
>> --
>> 1.9.1
>>
>
>


-- 
Murali Karicheri
Linux Kernel, Keystone

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

* [PATCH 1/4] Documentation: dt: soc: move driver description to a separate document
@ 2015-10-13 15:44       ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-13 15:44 UTC (permalink / raw)
  To: linux-arm-kernel

On 10/13/2015 10:42 AM, Rob Herring wrote:
> On Mon, Oct 12, 2015 at 2:46 PM, Murali Karicheri <m-karicheri2@ti.com> wrote:
>> Currently the DT bindings have details about the driver as well. This
>> patch moves this to a separate document for knav qmss driver so that
>> driver detail update can be done as needed without polluting the DT
>> bindings description.
>>
>> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>> ---
>>   Documentation/arm/keystone/knav-qmss.txt           | 24 ++++++++++++++++++++++
>>   .../bindings/soc/ti/keystone-navigator-qmss.txt    | 20 ++++--------------
>>   2 files changed, 28 insertions(+), 16 deletions(-)
>>   create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>>
>> diff --git a/Documentation/arm/keystone/knav-qmss.txt b/Documentation/arm/keystone/knav-qmss.txt
>> new file mode 100644
>> index 0000000..79946d1
>> --- /dev/null
>> +++ b/Documentation/arm/keystone/knav-qmss.txt
>> @@ -0,0 +1,24 @@
>> +* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>> +
>> +Driver source code path
>> +  drivers/soc/ti/knav_qmss.c
>> +  drivers/soc/ti/knav_qmss_acc.c
>> +
>> +The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>> +the main hardware sub system which forms the backbone of the Keystone
>> +multi-core Navigator. QMSS consist of queue managers, packed-data structure
>> +processors(PDSP), linking RAM, descriptor pools and infrastructure
>> +Packet DMA.
>> +The Queue Manager is a hardware module that is responsible for accelerating
>> +management of the packet queues. Packets are queued/de-queued by writing or
>> +reading descriptor address to a particular memory mapped location. The PDSPs
>> +perform QMSS related functions like accumulation, QoS, or event management.
>> +Linking RAM registers are used to link the descriptors which are stored in
>> +descriptor RAM. Descriptor RAM is configurable as internal or external memory.
>> +The QMSS driver manages the PDSP setups, linking RAM regions,
>> +queue pool management (allocation, push, pop and notify) and descriptor
>> +pool management.
>> +
>> +knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
>> +allocate descriptor pools, map the descriptors, push/pop to queues etc. For
>> +details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
>> diff --git a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>> index d8e8cdb..2cecea1 100644
>> --- a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>> +++ b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>> @@ -1,20 +1,8 @@
>> -* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>> -
>> -The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>> -the main hardware sub system which forms the backbone of the Keystone
>> -multi-core Navigator. QMSS consist of queue managers, packed-data structure
>> -processors(PDSP), linking RAM, descriptor pools and infrastructure
>> -Packet DMA.
>> -The Queue Manager is a hardware module that is responsible for accelerating
>> -management of the packet queues. Packets are queued/de-queued by writing or
>> -reading descriptor address to a particular memory mapped location. The PDSPs
>> -perform QMSS related functions like accumulation, QoS, or event management.
>> -Linking RAM registers are used to link the descriptors which are stored in
>> -descriptor RAM. Descriptor RAM is configurable as internal or external memory.
>> -The QMSS driver manages the PDSP setups, linking RAM regions,
>> -queue pool management (allocation, push, pop and notify) and descriptor
>> -pool management.
>
> Only the last sentence seems to be about the driver and is rather
> obvious (a driver manages the h/w). I would leave all this as-is
> currently.
>
> Rob
>
Rob,

I promise I will fix this in my next opportunity. Also there is similar 
clean up needed for knav dma DT documentation and Netcp documentations. 
It is in my TODO list.

Thanks.

Murali
>> +* Texas Instruments Keystone Navigator (knav) Queue Management SubSystem driver
>> +  DT bindings
>>
>> +For details of the driver, please refer to
>> +Documentation/arm/keystone/knav-qmss.txt
>>
>>   Required properties:
>>   - compatible   : Must be "ti,keystone-navigator-qmss";
>> --
>> 1.9.1
>>
>
>


-- 
Murali Karicheri
Linux Kernel, Keystone

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

* Re: [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support
  2015-10-13 13:56   ` Murali Karicheri
@ 2015-10-13 16:01     ` santosh shilimkar
  -1 siblings, 0 replies; 49+ messages in thread
From: santosh shilimkar @ 2015-10-13 16:01 UTC (permalink / raw)
  To: Murali Karicheri, corbet, ssantosh, linux-doc, linux-kernel,
	linux-arm-kernel, robh+dt, pawel.moll, mark.rutland,
	ijc+devicetree, galak, linux, devicetree, arnd

On 10/13/2015 6:56 AM, Murali Karicheri wrote:
> On 10/12/2015 03:46 PM, Murali Karicheri wrote:
>> This patch series enable accumulator queue support for K2 SoCs.

> Santosh, Arnd,
>
> Could you please review and let me know if there is any comment. If
> looks good, could you please merge to v4.4 next branch?
>
Please report the series updating the comments from Arnd. Also split
the series into drivers and dts updates.

Regards,
Santosh


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

* [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support
@ 2015-10-13 16:01     ` santosh shilimkar
  0 siblings, 0 replies; 49+ messages in thread
From: santosh shilimkar @ 2015-10-13 16:01 UTC (permalink / raw)
  To: linux-arm-kernel

On 10/13/2015 6:56 AM, Murali Karicheri wrote:
> On 10/12/2015 03:46 PM, Murali Karicheri wrote:
>> This patch series enable accumulator queue support for K2 SoCs.

> Santosh, Arnd,
>
> Could you please review and let me know if there is any comment. If
> looks good, could you please merge to v4.4 next branch?
>
Please report the series updating the comments from Arnd. Also split
the series into drivers and dts updates.

Regards,
Santosh

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

* Re: [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support
  2015-10-13 16:01     ` santosh shilimkar
  (?)
@ 2015-10-13 16:14       ` Murali Karicheri
  -1 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-13 16:14 UTC (permalink / raw)
  To: santosh shilimkar, corbet, ssantosh, linux-doc, linux-kernel,
	linux-arm-kernel, robh+dt, pawel.moll, mark.rutland,
	ijc+devicetree, galak, linux, devicetree, arnd

Santosh,

On 10/13/2015 12:01 PM, santosh shilimkar wrote:
> On 10/13/2015 6:56 AM, Murali Karicheri wrote:
>> On 10/12/2015 03:46 PM, Murali Karicheri wrote:
>>> This patch series enable accumulator queue support for K2 SoCs.
>
>> Santosh, Arnd,
>>
>> Could you please review and let me know if there is any comment. If
>> looks good, could you please merge to v4.4 next branch?
>>
> Please report the series updating the comments from Arnd. Also split
> the series into drivers and dts updates.

The cover letter already summarize this as a comment against v1 even 
though it didn't mention Arnd's name. Is it usual to describe the 
reviewers name in the change log? I thought we just describe the comment 
addressed, not who has commented. Not??

About splitting the series, it was done so since both is being pulled by 
you. If needed, I can do the split. Let me know.

Murali

>
> Regards,
> Santosh
>
>


-- 
Murali Karicheri
Linux Kernel, Keystone

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

* Re: [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support
@ 2015-10-13 16:14       ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-13 16:14 UTC (permalink / raw)
  To: santosh shilimkar, corbet, ssantosh, linux-doc, linux-kernel,
	linux-arm-kernel, robh+dt, pawel.moll, mark.rutland,
	ijc+devicetree, galak, linux, devicetree, arnd

Santosh,

On 10/13/2015 12:01 PM, santosh shilimkar wrote:
> On 10/13/2015 6:56 AM, Murali Karicheri wrote:
>> On 10/12/2015 03:46 PM, Murali Karicheri wrote:
>>> This patch series enable accumulator queue support for K2 SoCs.
>
>> Santosh, Arnd,
>>
>> Could you please review and let me know if there is any comment. If
>> looks good, could you please merge to v4.4 next branch?
>>
> Please report the series updating the comments from Arnd. Also split
> the series into drivers and dts updates.

The cover letter already summarize this as a comment against v1 even 
though it didn't mention Arnd's name. Is it usual to describe the 
reviewers name in the change log? I thought we just describe the comment 
addressed, not who has commented. Not??

About splitting the series, it was done so since both is being pulled by 
you. If needed, I can do the split. Let me know.

Murali

>
> Regards,
> Santosh
>
>


-- 
Murali Karicheri
Linux Kernel, Keystone

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

* [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support
@ 2015-10-13 16:14       ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-13 16:14 UTC (permalink / raw)
  To: linux-arm-kernel

Santosh,

On 10/13/2015 12:01 PM, santosh shilimkar wrote:
> On 10/13/2015 6:56 AM, Murali Karicheri wrote:
>> On 10/12/2015 03:46 PM, Murali Karicheri wrote:
>>> This patch series enable accumulator queue support for K2 SoCs.
>
>> Santosh, Arnd,
>>
>> Could you please review and let me know if there is any comment. If
>> looks good, could you please merge to v4.4 next branch?
>>
> Please report the series updating the comments from Arnd. Also split
> the series into drivers and dts updates.

The cover letter already summarize this as a comment against v1 even 
though it didn't mention Arnd's name. Is it usual to describe the 
reviewers name in the change log? I thought we just describe the comment 
addressed, not who has commented. Not??

About splitting the series, it was done so since both is being pulled by 
you. If needed, I can do the split. Let me know.

Murali

>
> Regards,
> Santosh
>
>


-- 
Murali Karicheri
Linux Kernel, Keystone

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

* Re: [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support
  2015-10-13 16:14       ` Murali Karicheri
@ 2015-10-13 16:21         ` santosh shilimkar
  -1 siblings, 0 replies; 49+ messages in thread
From: santosh shilimkar @ 2015-10-13 16:21 UTC (permalink / raw)
  To: Murali Karicheri, corbet, ssantosh, linux-doc, linux-kernel,
	linux-arm-kernel, robh+dt, pawel.moll, mark.rutland,
	ijc+devicetree, galak, linux, devicetree, arnd

On 10/13/2015 9:14 AM, Murali Karicheri wrote:
> Santosh,
>
> On 10/13/2015 12:01 PM, santosh shilimkar wrote:
>> On 10/13/2015 6:56 AM, Murali Karicheri wrote:
>>> On 10/12/2015 03:46 PM, Murali Karicheri wrote:
>>>> This patch series enable accumulator queue support for K2 SoCs.
>>
>>> Santosh, Arnd,
>>>
>>> Could you please review and let me know if there is any comment. If
>>> looks good, could you please merge to v4.4 next branch?
>>>
>> Please report the series updating the comments from Arnd. Also split
>> the series into drivers and dts updates.
s/report/repost

>
> The cover letter already summarize this as a comment against v1 even
> though it didn't mention Arnd's name. Is it usual to describe the
> reviewers name in the change log? I thought we just describe the comment
> addressed, not who has commented. Not??
>
I didn't mean report. sorry. Just repost the series including ack tag.

> About splitting the series, it was done so since both is being pulled by
> you. If needed, I can do the split. Let me know.
>
DTS and driver changes goes to different topics so split it, please.

Regards,
Santosh

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

* [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support
@ 2015-10-13 16:21         ` santosh shilimkar
  0 siblings, 0 replies; 49+ messages in thread
From: santosh shilimkar @ 2015-10-13 16:21 UTC (permalink / raw)
  To: linux-arm-kernel

On 10/13/2015 9:14 AM, Murali Karicheri wrote:
> Santosh,
>
> On 10/13/2015 12:01 PM, santosh shilimkar wrote:
>> On 10/13/2015 6:56 AM, Murali Karicheri wrote:
>>> On 10/12/2015 03:46 PM, Murali Karicheri wrote:
>>>> This patch series enable accumulator queue support for K2 SoCs.
>>
>>> Santosh, Arnd,
>>>
>>> Could you please review and let me know if there is any comment. If
>>> looks good, could you please merge to v4.4 next branch?
>>>
>> Please report the series updating the comments from Arnd. Also split
>> the series into drivers and dts updates.
s/report/repost

>
> The cover letter already summarize this as a comment against v1 even
> though it didn't mention Arnd's name. Is it usual to describe the
> reviewers name in the change log? I thought we just describe the comment
> addressed, not who has commented. Not??
>
I didn't mean report. sorry. Just repost the series including ack tag.

> About splitting the series, it was done so since both is being pulled by
> you. If needed, I can do the split. Let me know.
>
DTS and driver changes goes to different topics so split it, please.

Regards,
Santosh

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

* Re: [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support
  2015-10-13 16:21         ` santosh shilimkar
  (?)
@ 2015-10-13 16:42           ` Murali Karicheri
  -1 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-13 16:42 UTC (permalink / raw)
  To: santosh shilimkar, corbet, ssantosh, linux-doc, linux-kernel,
	linux-arm-kernel, robh+dt, pawel.moll, mark.rutland,
	ijc+devicetree, galak, linux, devicetree, arnd

On 10/13/2015 12:21 PM, santosh shilimkar wrote:
> On 10/13/2015 9:14 AM, Murali Karicheri wrote:
>> Santosh,
>>
>> On 10/13/2015 12:01 PM, santosh shilimkar wrote:
>>> On 10/13/2015 6:56 AM, Murali Karicheri wrote:
>>>> On 10/12/2015 03:46 PM, Murali Karicheri wrote:
>>>>> This patch series enable accumulator queue support for K2 SoCs.
>>>
>>>> Santosh, Arnd,
>>>>
>>>> Could you please review and let me know if there is any comment. If
>>>> looks good, could you please merge to v4.4 next branch?
>>>>
>>> Please report the series updating the comments from Arnd. Also split
>>> the series into drivers and dts updates.
> s/report/repost
>
>>
>> The cover letter already summarize this as a comment against v1 even
>> though it didn't mention Arnd's name. Is it usual to describe the
>> reviewers name in the change log? I thought we just describe the comment
>> addressed, not who has commented. Not??
>>
> I didn't mean report. sorry. Just repost the series including ack tag.
>
>> About splitting the series, it was done so since both is being pulled by
>> you. If needed, I can do the split. Let me know.
>>
> DTS and driver changes goes to different topics so split it, please.
Ok. No issues. I will be posting this right away.

Murali
>
> Regards,
> Santosh
>


-- 
Murali Karicheri
Linux Kernel, Keystone

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

* Re: [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support
@ 2015-10-13 16:42           ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-13 16:42 UTC (permalink / raw)
  To: santosh shilimkar, corbet, ssantosh, linux-doc, linux-kernel,
	linux-arm-kernel, robh+dt, pawel.moll, mark.rutland,
	ijc+devicetree, galak, linux, devicetree, arnd

On 10/13/2015 12:21 PM, santosh shilimkar wrote:
> On 10/13/2015 9:14 AM, Murali Karicheri wrote:
>> Santosh,
>>
>> On 10/13/2015 12:01 PM, santosh shilimkar wrote:
>>> On 10/13/2015 6:56 AM, Murali Karicheri wrote:
>>>> On 10/12/2015 03:46 PM, Murali Karicheri wrote:
>>>>> This patch series enable accumulator queue support for K2 SoCs.
>>>
>>>> Santosh, Arnd,
>>>>
>>>> Could you please review and let me know if there is any comment. If
>>>> looks good, could you please merge to v4.4 next branch?
>>>>
>>> Please report the series updating the comments from Arnd. Also split
>>> the series into drivers and dts updates.
> s/report/repost
>
>>
>> The cover letter already summarize this as a comment against v1 even
>> though it didn't mention Arnd's name. Is it usual to describe the
>> reviewers name in the change log? I thought we just describe the comment
>> addressed, not who has commented. Not??
>>
> I didn't mean report. sorry. Just repost the series including ack tag.
>
>> About splitting the series, it was done so since both is being pulled by
>> you. If needed, I can do the split. Let me know.
>>
> DTS and driver changes goes to different topics so split it, please.
Ok. No issues. I will be posting this right away.

Murali
>
> Regards,
> Santosh
>


-- 
Murali Karicheri
Linux Kernel, Keystone

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

* [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support
@ 2015-10-13 16:42           ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-13 16:42 UTC (permalink / raw)
  To: linux-arm-kernel

On 10/13/2015 12:21 PM, santosh shilimkar wrote:
> On 10/13/2015 9:14 AM, Murali Karicheri wrote:
>> Santosh,
>>
>> On 10/13/2015 12:01 PM, santosh shilimkar wrote:
>>> On 10/13/2015 6:56 AM, Murali Karicheri wrote:
>>>> On 10/12/2015 03:46 PM, Murali Karicheri wrote:
>>>>> This patch series enable accumulator queue support for K2 SoCs.
>>>
>>>> Santosh, Arnd,
>>>>
>>>> Could you please review and let me know if there is any comment. If
>>>> looks good, could you please merge to v4.4 next branch?
>>>>
>>> Please report the series updating the comments from Arnd. Also split
>>> the series into drivers and dts updates.
> s/report/repost
>
>>
>> The cover letter already summarize this as a comment against v1 even
>> though it didn't mention Arnd's name. Is it usual to describe the
>> reviewers name in the change log? I thought we just describe the comment
>> addressed, not who has commented. Not??
>>
> I didn't mean report. sorry. Just repost the series including ack tag.
>
>> About splitting the series, it was done so since both is being pulled by
>> you. If needed, I can do the split. Let me know.
>>
> DTS and driver changes goes to different topics so split it, please.
Ok. No issues. I will be posting this right away.

Murali
>
> Regards,
> Santosh
>


-- 
Murali Karicheri
Linux Kernel, Keystone

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

* Re: [PATCH 1/4] Documentation: dt: soc: move driver description to a separate document
@ 2015-10-13 17:28       ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-13 17:28 UTC (permalink / raw)
  To: Rob Herring
  Cc: Jonathan Corbet, Santosh Shilimkar, linux-doc, linux-kernel,
	linux-arm-kernel, Pawel Moll, Mark Rutland, Ian Campbell,
	Kumar Gala, Russell King - ARM Linux, devicetree, Arnd Bergmann

On 10/13/2015 10:42 AM, Rob Herring wrote:
> On Mon, Oct 12, 2015 at 2:46 PM, Murali Karicheri <m-karicheri2@ti.com> wrote:
>> Currently the DT bindings have details about the driver as well. This
>> patch moves this to a separate document for knav qmss driver so that
>> driver detail update can be done as needed without polluting the DT
>> bindings description.
>>
>> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>> ---
>>   Documentation/arm/keystone/knav-qmss.txt           | 24 ++++++++++++++++++++++
>>   .../bindings/soc/ti/keystone-navigator-qmss.txt    | 20 ++++--------------
>>   2 files changed, 28 insertions(+), 16 deletions(-)
>>   create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>>
>> diff --git a/Documentation/arm/keystone/knav-qmss.txt b/Documentation/arm/keystone/knav-qmss.txt
>> new file mode 100644
>> index 0000000..79946d1
>> --- /dev/null
>> +++ b/Documentation/arm/keystone/knav-qmss.txt
>> @@ -0,0 +1,24 @@
>> +* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>> +
>> +Driver source code path
>> +  drivers/soc/ti/knav_qmss.c
>> +  drivers/soc/ti/knav_qmss_acc.c
>> +
>> +The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>> +the main hardware sub system which forms the backbone of the Keystone
>> +multi-core Navigator. QMSS consist of queue managers, packed-data structure
>> +processors(PDSP), linking RAM, descriptor pools and infrastructure
>> +Packet DMA.
>> +The Queue Manager is a hardware module that is responsible for accelerating
>> +management of the packet queues. Packets are queued/de-queued by writing or
>> +reading descriptor address to a particular memory mapped location. The PDSPs
>> +perform QMSS related functions like accumulation, QoS, or event management.
>> +Linking RAM registers are used to link the descriptors which are stored in
>> +descriptor RAM. Descriptor RAM is configurable as internal or external memory.
>> +The QMSS driver manages the PDSP setups, linking RAM regions,
>> +queue pool management (allocation, push, pop and notify) and descriptor
>> +pool management.
>> +
>> +knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
>> +allocate descriptor pools, map the descriptors, push/pop to queues etc. For
>> +details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
>> diff --git a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>> index d8e8cdb..2cecea1 100644
>> --- a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>> +++ b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>> @@ -1,20 +1,8 @@
>> -* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>> -
>> -The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>> -the main hardware sub system which forms the backbone of the Keystone
>> -multi-core Navigator. QMSS consist of queue managers, packed-data structure
>> -processors(PDSP), linking RAM, descriptor pools and infrastructure
>> -Packet DMA.
>> -The Queue Manager is a hardware module that is responsible for accelerating
>> -management of the packet queues. Packets are queued/de-queued by writing or
>> -reading descriptor address to a particular memory mapped location. The PDSPs
>> -perform QMSS related functions like accumulation, QoS, or event management.
>> -Linking RAM registers are used to link the descriptors which are stored in
>> -descriptor RAM. Descriptor RAM is configurable as internal or external memory.
>> -The QMSS driver manages the PDSP setups, linking RAM regions,
>> -queue pool management (allocation, push, pop and notify) and descriptor
>> -pool management.
>
> Only the last sentence seems to be about the driver and is rather
> obvious (a driver manages the h/w). I would leave all this as-is
> currently.
>
> Rob
>
Rob,

I am taking the liberty to add your Ack based on the above. I can remove 
it if you disagree.

Murali

>> +* Texas Instruments Keystone Navigator (knav) Queue Management SubSystem driver
>> +  DT bindings
>>
>> +For details of the driver, please refer to
>> +Documentation/arm/keystone/knav-qmss.txt
>>
>>   Required properties:
>>   - compatible   : Must be "ti,keystone-navigator-qmss";
>> --
>> 1.9.1
>>
>
>


-- 
Murali Karicheri
Linux Kernel, Keystone

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

* Re: [PATCH 1/4] Documentation: dt: soc: move driver description to a separate document
@ 2015-10-13 17:28       ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-13 17:28 UTC (permalink / raw)
  To: Rob Herring
  Cc: Jonathan Corbet, Santosh Shilimkar,
	linux-doc-u79uwXL29TY76Z2rM5mHXA,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r, Pawel Moll,
	Mark Rutland, Ian Campbell, Kumar Gala, Russell King - ARM Linux,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Arnd Bergmann

On 10/13/2015 10:42 AM, Rob Herring wrote:
> On Mon, Oct 12, 2015 at 2:46 PM, Murali Karicheri <m-karicheri2-l0cyMroinI0@public.gmane.org> wrote:
>> Currently the DT bindings have details about the driver as well. This
>> patch moves this to a separate document for knav qmss driver so that
>> driver detail update can be done as needed without polluting the DT
>> bindings description.
>>
>> Signed-off-by: Murali Karicheri <m-karicheri2-l0cyMroinI0@public.gmane.org>
>> ---
>>   Documentation/arm/keystone/knav-qmss.txt           | 24 ++++++++++++++++++++++
>>   .../bindings/soc/ti/keystone-navigator-qmss.txt    | 20 ++++--------------
>>   2 files changed, 28 insertions(+), 16 deletions(-)
>>   create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>>
>> diff --git a/Documentation/arm/keystone/knav-qmss.txt b/Documentation/arm/keystone/knav-qmss.txt
>> new file mode 100644
>> index 0000000..79946d1
>> --- /dev/null
>> +++ b/Documentation/arm/keystone/knav-qmss.txt
>> @@ -0,0 +1,24 @@
>> +* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>> +
>> +Driver source code path
>> +  drivers/soc/ti/knav_qmss.c
>> +  drivers/soc/ti/knav_qmss_acc.c
>> +
>> +The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>> +the main hardware sub system which forms the backbone of the Keystone
>> +multi-core Navigator. QMSS consist of queue managers, packed-data structure
>> +processors(PDSP), linking RAM, descriptor pools and infrastructure
>> +Packet DMA.
>> +The Queue Manager is a hardware module that is responsible for accelerating
>> +management of the packet queues. Packets are queued/de-queued by writing or
>> +reading descriptor address to a particular memory mapped location. The PDSPs
>> +perform QMSS related functions like accumulation, QoS, or event management.
>> +Linking RAM registers are used to link the descriptors which are stored in
>> +descriptor RAM. Descriptor RAM is configurable as internal or external memory.
>> +The QMSS driver manages the PDSP setups, linking RAM regions,
>> +queue pool management (allocation, push, pop and notify) and descriptor
>> +pool management.
>> +
>> +knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
>> +allocate descriptor pools, map the descriptors, push/pop to queues etc. For
>> +details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
>> diff --git a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>> index d8e8cdb..2cecea1 100644
>> --- a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>> +++ b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>> @@ -1,20 +1,8 @@
>> -* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>> -
>> -The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>> -the main hardware sub system which forms the backbone of the Keystone
>> -multi-core Navigator. QMSS consist of queue managers, packed-data structure
>> -processors(PDSP), linking RAM, descriptor pools and infrastructure
>> -Packet DMA.
>> -The Queue Manager is a hardware module that is responsible for accelerating
>> -management of the packet queues. Packets are queued/de-queued by writing or
>> -reading descriptor address to a particular memory mapped location. The PDSPs
>> -perform QMSS related functions like accumulation, QoS, or event management.
>> -Linking RAM registers are used to link the descriptors which are stored in
>> -descriptor RAM. Descriptor RAM is configurable as internal or external memory.
>> -The QMSS driver manages the PDSP setups, linking RAM regions,
>> -queue pool management (allocation, push, pop and notify) and descriptor
>> -pool management.
>
> Only the last sentence seems to be about the driver and is rather
> obvious (a driver manages the h/w). I would leave all this as-is
> currently.
>
> Rob
>
Rob,

I am taking the liberty to add your Ack based on the above. I can remove 
it if you disagree.

Murali

>> +* Texas Instruments Keystone Navigator (knav) Queue Management SubSystem driver
>> +  DT bindings
>>
>> +For details of the driver, please refer to
>> +Documentation/arm/keystone/knav-qmss.txt
>>
>>   Required properties:
>>   - compatible   : Must be "ti,keystone-navigator-qmss";
>> --
>> 1.9.1
>>
>
>


-- 
Murali Karicheri
Linux Kernel, Keystone
--
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] 49+ messages in thread

* [PATCH 1/4] Documentation: dt: soc: move driver description to a separate document
@ 2015-10-13 17:28       ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-13 17:28 UTC (permalink / raw)
  To: linux-arm-kernel

On 10/13/2015 10:42 AM, Rob Herring wrote:
> On Mon, Oct 12, 2015 at 2:46 PM, Murali Karicheri <m-karicheri2@ti.com> wrote:
>> Currently the DT bindings have details about the driver as well. This
>> patch moves this to a separate document for knav qmss driver so that
>> driver detail update can be done as needed without polluting the DT
>> bindings description.
>>
>> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>> ---
>>   Documentation/arm/keystone/knav-qmss.txt           | 24 ++++++++++++++++++++++
>>   .../bindings/soc/ti/keystone-navigator-qmss.txt    | 20 ++++--------------
>>   2 files changed, 28 insertions(+), 16 deletions(-)
>>   create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>>
>> diff --git a/Documentation/arm/keystone/knav-qmss.txt b/Documentation/arm/keystone/knav-qmss.txt
>> new file mode 100644
>> index 0000000..79946d1
>> --- /dev/null
>> +++ b/Documentation/arm/keystone/knav-qmss.txt
>> @@ -0,0 +1,24 @@
>> +* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>> +
>> +Driver source code path
>> +  drivers/soc/ti/knav_qmss.c
>> +  drivers/soc/ti/knav_qmss_acc.c
>> +
>> +The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>> +the main hardware sub system which forms the backbone of the Keystone
>> +multi-core Navigator. QMSS consist of queue managers, packed-data structure
>> +processors(PDSP), linking RAM, descriptor pools and infrastructure
>> +Packet DMA.
>> +The Queue Manager is a hardware module that is responsible for accelerating
>> +management of the packet queues. Packets are queued/de-queued by writing or
>> +reading descriptor address to a particular memory mapped location. The PDSPs
>> +perform QMSS related functions like accumulation, QoS, or event management.
>> +Linking RAM registers are used to link the descriptors which are stored in
>> +descriptor RAM. Descriptor RAM is configurable as internal or external memory.
>> +The QMSS driver manages the PDSP setups, linking RAM regions,
>> +queue pool management (allocation, push, pop and notify) and descriptor
>> +pool management.
>> +
>> +knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
>> +allocate descriptor pools, map the descriptors, push/pop to queues etc. For
>> +details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
>> diff --git a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>> index d8e8cdb..2cecea1 100644
>> --- a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>> +++ b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>> @@ -1,20 +1,8 @@
>> -* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>> -
>> -The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>> -the main hardware sub system which forms the backbone of the Keystone
>> -multi-core Navigator. QMSS consist of queue managers, packed-data structure
>> -processors(PDSP), linking RAM, descriptor pools and infrastructure
>> -Packet DMA.
>> -The Queue Manager is a hardware module that is responsible for accelerating
>> -management of the packet queues. Packets are queued/de-queued by writing or
>> -reading descriptor address to a particular memory mapped location. The PDSPs
>> -perform QMSS related functions like accumulation, QoS, or event management.
>> -Linking RAM registers are used to link the descriptors which are stored in
>> -descriptor RAM. Descriptor RAM is configurable as internal or external memory.
>> -The QMSS driver manages the PDSP setups, linking RAM regions,
>> -queue pool management (allocation, push, pop and notify) and descriptor
>> -pool management.
>
> Only the last sentence seems to be about the driver and is rather
> obvious (a driver manages the h/w). I would leave all this as-is
> currently.
>
> Rob
>
Rob,

I am taking the liberty to add your Ack based on the above. I can remove 
it if you disagree.

Murali

>> +* Texas Instruments Keystone Navigator (knav) Queue Management SubSystem driver
>> +  DT bindings
>>
>> +For details of the driver, please refer to
>> +Documentation/arm/keystone/knav-qmss.txt
>>
>>   Required properties:
>>   - compatible   : Must be "ti,keystone-navigator-qmss";
>> --
>> 1.9.1
>>
>
>


-- 
Murali Karicheri
Linux Kernel, Keystone

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

* Re: [PATCH 1/4] Documentation: dt: soc: move driver description to a separate document
  2015-10-13 17:28       ` Murali Karicheri
  (?)
@ 2015-10-13 18:01         ` Rob Herring
  -1 siblings, 0 replies; 49+ messages in thread
From: Rob Herring @ 2015-10-13 18:01 UTC (permalink / raw)
  To: Murali Karicheri
  Cc: Jonathan Corbet, Santosh Shilimkar, linux-doc, linux-kernel,
	linux-arm-kernel, Pawel Moll, Mark Rutland, Ian Campbell,
	Kumar Gala, Russell King - ARM Linux, devicetree, Arnd Bergmann

On Tue, Oct 13, 2015 at 12:28 PM, Murali Karicheri <m-karicheri2@ti.com> wrote:
> On 10/13/2015 10:42 AM, Rob Herring wrote:
>>
>> On Mon, Oct 12, 2015 at 2:46 PM, Murali Karicheri <m-karicheri2@ti.com>
>> wrote:
>>>
>>> Currently the DT bindings have details about the driver as well. This
>>> patch moves this to a separate document for knav qmss driver so that
>>> driver detail update can be done as needed without polluting the DT
>>> bindings description.
>>>
>>> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>>> ---
>>>   Documentation/arm/keystone/knav-qmss.txt           | 24
>>> ++++++++++++++++++++++
>>>   .../bindings/soc/ti/keystone-navigator-qmss.txt    | 20
>>> ++++--------------
>>>   2 files changed, 28 insertions(+), 16 deletions(-)
>>>   create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>>>
>>> diff --git a/Documentation/arm/keystone/knav-qmss.txt
>>> b/Documentation/arm/keystone/knav-qmss.txt
>>> new file mode 100644
>>> index 0000000..79946d1
>>> --- /dev/null
>>> +++ b/Documentation/arm/keystone/knav-qmss.txt
>>> @@ -0,0 +1,24 @@
>>> +* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>>> +
>>> +Driver source code path
>>> +  drivers/soc/ti/knav_qmss.c
>>> +  drivers/soc/ti/knav_qmss_acc.c
>>> +
>>> +The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>>> +the main hardware sub system which forms the backbone of the Keystone
>>> +multi-core Navigator. QMSS consist of queue managers, packed-data
>>> structure
>>> +processors(PDSP), linking RAM, descriptor pools and infrastructure
>>> +Packet DMA.
>>> +The Queue Manager is a hardware module that is responsible for
>>> accelerating
>>> +management of the packet queues. Packets are queued/de-queued by writing
>>> or
>>> +reading descriptor address to a particular memory mapped location. The
>>> PDSPs
>>> +perform QMSS related functions like accumulation, QoS, or event
>>> management.
>>> +Linking RAM registers are used to link the descriptors which are stored
>>> in
>>> +descriptor RAM. Descriptor RAM is configurable as internal or external
>>> memory.
>>> +The QMSS driver manages the PDSP setups, linking RAM regions,
>>> +queue pool management (allocation, push, pop and notify) and descriptor
>>> +pool management.
>>> +
>>> +knav qmss driver provides a set of APIs to drivers to open/close qmss
>>> queues,
>>> +allocate descriptor pools, map the descriptors, push/pop to queues etc.
>>> For
>>> +details of the available APIs, please refers to
>>> include/linux/soc/ti/knav_qmss.h
>>> diff --git
>>> a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>> b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>> index d8e8cdb..2cecea1 100644
>>> ---
>>> a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>> +++
>>> b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>> @@ -1,20 +1,8 @@
>>> -* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>>> -
>>> -The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>>> -the main hardware sub system which forms the backbone of the Keystone
>>> -multi-core Navigator. QMSS consist of queue managers, packed-data
>>> structure
>>> -processors(PDSP), linking RAM, descriptor pools and infrastructure
>>> -Packet DMA.
>>> -The Queue Manager is a hardware module that is responsible for
>>> accelerating
>>> -management of the packet queues. Packets are queued/de-queued by writing
>>> or
>>> -reading descriptor address to a particular memory mapped location. The
>>> PDSPs
>>> -perform QMSS related functions like accumulation, QoS, or event
>>> management.
>>> -Linking RAM registers are used to link the descriptors which are stored
>>> in
>>> -descriptor RAM. Descriptor RAM is configurable as internal or external
>>> memory.
>>> -The QMSS driver manages the PDSP setups, linking RAM regions,
>>> -queue pool management (allocation, push, pop and notify) and descriptor
>>> -pool management.
>>
>>
>> Only the last sentence seems to be about the driver and is rather
>> obvious (a driver manages the h/w). I would leave all this as-is
>> currently.
>>
>> Rob
>>
> Rob,
>
> I am taking the liberty to add your Ack based on the above. I can remove it
> if you disagree.

No, I don't. I don't agree with moving this out of the binding. This
mostly sounds like a description of the h/w to me, so I'd like to keep
it. Most bindings are rather vague in this regard and I'd rather see
more description than less.

I also agree with Arnd's comment about not pointing to kernel docs.

Rob

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

* Re: [PATCH 1/4] Documentation: dt: soc: move driver description to a separate document
@ 2015-10-13 18:01         ` Rob Herring
  0 siblings, 0 replies; 49+ messages in thread
From: Rob Herring @ 2015-10-13 18:01 UTC (permalink / raw)
  To: Murali Karicheri
  Cc: Jonathan Corbet, Santosh Shilimkar, linux-doc, linux-kernel,
	linux-arm-kernel, Pawel Moll, Mark Rutland, Ian Campbell,
	Kumar Gala, Russell King - ARM Linux, devicetree, Arnd Bergmann

On Tue, Oct 13, 2015 at 12:28 PM, Murali Karicheri <m-karicheri2@ti.com> wrote:
> On 10/13/2015 10:42 AM, Rob Herring wrote:
>>
>> On Mon, Oct 12, 2015 at 2:46 PM, Murali Karicheri <m-karicheri2@ti.com>
>> wrote:
>>>
>>> Currently the DT bindings have details about the driver as well. This
>>> patch moves this to a separate document for knav qmss driver so that
>>> driver detail update can be done as needed without polluting the DT
>>> bindings description.
>>>
>>> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>>> ---
>>>   Documentation/arm/keystone/knav-qmss.txt           | 24
>>> ++++++++++++++++++++++
>>>   .../bindings/soc/ti/keystone-navigator-qmss.txt    | 20
>>> ++++--------------
>>>   2 files changed, 28 insertions(+), 16 deletions(-)
>>>   create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>>>
>>> diff --git a/Documentation/arm/keystone/knav-qmss.txt
>>> b/Documentation/arm/keystone/knav-qmss.txt
>>> new file mode 100644
>>> index 0000000..79946d1
>>> --- /dev/null
>>> +++ b/Documentation/arm/keystone/knav-qmss.txt
>>> @@ -0,0 +1,24 @@
>>> +* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>>> +
>>> +Driver source code path
>>> +  drivers/soc/ti/knav_qmss.c
>>> +  drivers/soc/ti/knav_qmss_acc.c
>>> +
>>> +The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>>> +the main hardware sub system which forms the backbone of the Keystone
>>> +multi-core Navigator. QMSS consist of queue managers, packed-data
>>> structure
>>> +processors(PDSP), linking RAM, descriptor pools and infrastructure
>>> +Packet DMA.
>>> +The Queue Manager is a hardware module that is responsible for
>>> accelerating
>>> +management of the packet queues. Packets are queued/de-queued by writing
>>> or
>>> +reading descriptor address to a particular memory mapped location. The
>>> PDSPs
>>> +perform QMSS related functions like accumulation, QoS, or event
>>> management.
>>> +Linking RAM registers are used to link the descriptors which are stored
>>> in
>>> +descriptor RAM. Descriptor RAM is configurable as internal or external
>>> memory.
>>> +The QMSS driver manages the PDSP setups, linking RAM regions,
>>> +queue pool management (allocation, push, pop and notify) and descriptor
>>> +pool management.
>>> +
>>> +knav qmss driver provides a set of APIs to drivers to open/close qmss
>>> queues,
>>> +allocate descriptor pools, map the descriptors, push/pop to queues etc.
>>> For
>>> +details of the available APIs, please refers to
>>> include/linux/soc/ti/knav_qmss.h
>>> diff --git
>>> a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>> b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>> index d8e8cdb..2cecea1 100644
>>> ---
>>> a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>> +++
>>> b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>> @@ -1,20 +1,8 @@
>>> -* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>>> -
>>> -The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>>> -the main hardware sub system which forms the backbone of the Keystone
>>> -multi-core Navigator. QMSS consist of queue managers, packed-data
>>> structure
>>> -processors(PDSP), linking RAM, descriptor pools and infrastructure
>>> -Packet DMA.
>>> -The Queue Manager is a hardware module that is responsible for
>>> accelerating
>>> -management of the packet queues. Packets are queued/de-queued by writing
>>> or
>>> -reading descriptor address to a particular memory mapped location. The
>>> PDSPs
>>> -perform QMSS related functions like accumulation, QoS, or event
>>> management.
>>> -Linking RAM registers are used to link the descriptors which are stored
>>> in
>>> -descriptor RAM. Descriptor RAM is configurable as internal or external
>>> memory.
>>> -The QMSS driver manages the PDSP setups, linking RAM regions,
>>> -queue pool management (allocation, push, pop and notify) and descriptor
>>> -pool management.
>>
>>
>> Only the last sentence seems to be about the driver and is rather
>> obvious (a driver manages the h/w). I would leave all this as-is
>> currently.
>>
>> Rob
>>
> Rob,
>
> I am taking the liberty to add your Ack based on the above. I can remove it
> if you disagree.

No, I don't. I don't agree with moving this out of the binding. This
mostly sounds like a description of the h/w to me, so I'd like to keep
it. Most bindings are rather vague in this regard and I'd rather see
more description than less.

I also agree with Arnd's comment about not pointing to kernel docs.

Rob

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

* [PATCH 1/4] Documentation: dt: soc: move driver description to a separate document
@ 2015-10-13 18:01         ` Rob Herring
  0 siblings, 0 replies; 49+ messages in thread
From: Rob Herring @ 2015-10-13 18:01 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Oct 13, 2015 at 12:28 PM, Murali Karicheri <m-karicheri2@ti.com> wrote:
> On 10/13/2015 10:42 AM, Rob Herring wrote:
>>
>> On Mon, Oct 12, 2015 at 2:46 PM, Murali Karicheri <m-karicheri2@ti.com>
>> wrote:
>>>
>>> Currently the DT bindings have details about the driver as well. This
>>> patch moves this to a separate document for knav qmss driver so that
>>> driver detail update can be done as needed without polluting the DT
>>> bindings description.
>>>
>>> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>>> ---
>>>   Documentation/arm/keystone/knav-qmss.txt           | 24
>>> ++++++++++++++++++++++
>>>   .../bindings/soc/ti/keystone-navigator-qmss.txt    | 20
>>> ++++--------------
>>>   2 files changed, 28 insertions(+), 16 deletions(-)
>>>   create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>>>
>>> diff --git a/Documentation/arm/keystone/knav-qmss.txt
>>> b/Documentation/arm/keystone/knav-qmss.txt
>>> new file mode 100644
>>> index 0000000..79946d1
>>> --- /dev/null
>>> +++ b/Documentation/arm/keystone/knav-qmss.txt
>>> @@ -0,0 +1,24 @@
>>> +* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>>> +
>>> +Driver source code path
>>> +  drivers/soc/ti/knav_qmss.c
>>> +  drivers/soc/ti/knav_qmss_acc.c
>>> +
>>> +The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>>> +the main hardware sub system which forms the backbone of the Keystone
>>> +multi-core Navigator. QMSS consist of queue managers, packed-data
>>> structure
>>> +processors(PDSP), linking RAM, descriptor pools and infrastructure
>>> +Packet DMA.
>>> +The Queue Manager is a hardware module that is responsible for
>>> accelerating
>>> +management of the packet queues. Packets are queued/de-queued by writing
>>> or
>>> +reading descriptor address to a particular memory mapped location. The
>>> PDSPs
>>> +perform QMSS related functions like accumulation, QoS, or event
>>> management.
>>> +Linking RAM registers are used to link the descriptors which are stored
>>> in
>>> +descriptor RAM. Descriptor RAM is configurable as internal or external
>>> memory.
>>> +The QMSS driver manages the PDSP setups, linking RAM regions,
>>> +queue pool management (allocation, push, pop and notify) and descriptor
>>> +pool management.
>>> +
>>> +knav qmss driver provides a set of APIs to drivers to open/close qmss
>>> queues,
>>> +allocate descriptor pools, map the descriptors, push/pop to queues etc.
>>> For
>>> +details of the available APIs, please refers to
>>> include/linux/soc/ti/knav_qmss.h
>>> diff --git
>>> a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>> b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>> index d8e8cdb..2cecea1 100644
>>> ---
>>> a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>> +++
>>> b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>> @@ -1,20 +1,8 @@
>>> -* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>>> -
>>> -The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>>> -the main hardware sub system which forms the backbone of the Keystone
>>> -multi-core Navigator. QMSS consist of queue managers, packed-data
>>> structure
>>> -processors(PDSP), linking RAM, descriptor pools and infrastructure
>>> -Packet DMA.
>>> -The Queue Manager is a hardware module that is responsible for
>>> accelerating
>>> -management of the packet queues. Packets are queued/de-queued by writing
>>> or
>>> -reading descriptor address to a particular memory mapped location. The
>>> PDSPs
>>> -perform QMSS related functions like accumulation, QoS, or event
>>> management.
>>> -Linking RAM registers are used to link the descriptors which are stored
>>> in
>>> -descriptor RAM. Descriptor RAM is configurable as internal or external
>>> memory.
>>> -The QMSS driver manages the PDSP setups, linking RAM regions,
>>> -queue pool management (allocation, push, pop and notify) and descriptor
>>> -pool management.
>>
>>
>> Only the last sentence seems to be about the driver and is rather
>> obvious (a driver manages the h/w). I would leave all this as-is
>> currently.
>>
>> Rob
>>
> Rob,
>
> I am taking the liberty to add your Ack based on the above. I can remove it
> if you disagree.

No, I don't. I don't agree with moving this out of the binding. This
mostly sounds like a description of the h/w to me, so I'd like to keep
it. Most bindings are rather vague in this regard and I'd rather see
more description than less.

I also agree with Arnd's comment about not pointing to kernel docs.

Rob

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

* Re: [PATCH 1/4] Documentation: dt: soc: move driver description to a separate document
  2015-10-13 18:01         ` Rob Herring
  (?)
@ 2015-10-13 18:21           ` Murali Karicheri
  -1 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-13 18:21 UTC (permalink / raw)
  To: Rob Herring
  Cc: Jonathan Corbet, Santosh Shilimkar, linux-doc, linux-kernel,
	linux-arm-kernel, Pawel Moll, Mark Rutland, Ian Campbell,
	Kumar Gala, Russell King - ARM Linux, devicetree, Arnd Bergmann

On 10/13/2015 02:01 PM, Rob Herring wrote:
> On Tue, Oct 13, 2015 at 12:28 PM, Murali Karicheri <m-karicheri2@ti.com> wrote:
>> On 10/13/2015 10:42 AM, Rob Herring wrote:
>>>
>>> On Mon, Oct 12, 2015 at 2:46 PM, Murali Karicheri <m-karicheri2@ti.com>
>>> wrote:
>>>>
>>>> Currently the DT bindings have details about the driver as well. This
>>>> patch moves this to a separate document for knav qmss driver so that
>>>> driver detail update can be done as needed without polluting the DT
>>>> bindings description.
>>>>
>>>> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>>>> ---
>>>>    Documentation/arm/keystone/knav-qmss.txt           | 24
>>>> ++++++++++++++++++++++
>>>>    .../bindings/soc/ti/keystone-navigator-qmss.txt    | 20
>>>> ++++--------------
>>>>    2 files changed, 28 insertions(+), 16 deletions(-)
>>>>    create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>>>>
>>>> diff --git a/Documentation/arm/keystone/knav-qmss.txt
>>>> b/Documentation/arm/keystone/knav-qmss.txt
>>>> new file mode 100644
>>>> index 0000000..79946d1
>>>> --- /dev/null
>>>> +++ b/Documentation/arm/keystone/knav-qmss.txt
>>>> @@ -0,0 +1,24 @@
>>>> +* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>>>> +
>>>> +Driver source code path
>>>> +  drivers/soc/ti/knav_qmss.c
>>>> +  drivers/soc/ti/knav_qmss_acc.c
>>>> +
>>>> +The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>>>> +the main hardware sub system which forms the backbone of the Keystone
>>>> +multi-core Navigator. QMSS consist of queue managers, packed-data
>>>> structure
>>>> +processors(PDSP), linking RAM, descriptor pools and infrastructure
>>>> +Packet DMA.
>>>> +The Queue Manager is a hardware module that is responsible for
>>>> accelerating
>>>> +management of the packet queues. Packets are queued/de-queued by writing
>>>> or
>>>> +reading descriptor address to a particular memory mapped location. The
>>>> PDSPs
>>>> +perform QMSS related functions like accumulation, QoS, or event
>>>> management.
>>>> +Linking RAM registers are used to link the descriptors which are stored
>>>> in
>>>> +descriptor RAM. Descriptor RAM is configurable as internal or external
>>>> memory.
>>>> +The QMSS driver manages the PDSP setups, linking RAM regions,
>>>> +queue pool management (allocation, push, pop and notify) and descriptor
>>>> +pool management.
>>>> +
>>>> +knav qmss driver provides a set of APIs to drivers to open/close qmss
>>>> queues,
>>>> +allocate descriptor pools, map the descriptors, push/pop to queues etc.
>>>> For
>>>> +details of the available APIs, please refers to
>>>> include/linux/soc/ti/knav_qmss.h
>>>> diff --git
>>>> a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>>> b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>>> index d8e8cdb..2cecea1 100644
>>>> ---
>>>> a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>>> +++
>>>> b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>>> @@ -1,20 +1,8 @@
>>>> -* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>>>> -
>>>> -The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>>>> -the main hardware sub system which forms the backbone of the Keystone
>>>> -multi-core Navigator. QMSS consist of queue managers, packed-data
>>>> structure
>>>> -processors(PDSP), linking RAM, descriptor pools and infrastructure
>>>> -Packet DMA.
>>>> -The Queue Manager is a hardware module that is responsible for
>>>> accelerating
>>>> -management of the packet queues. Packets are queued/de-queued by writing
>>>> or
>>>> -reading descriptor address to a particular memory mapped location. The
>>>> PDSPs
>>>> -perform QMSS related functions like accumulation, QoS, or event
>>>> management.
>>>> -Linking RAM registers are used to link the descriptors which are stored
>>>> in
>>>> -descriptor RAM. Descriptor RAM is configurable as internal or external
>>>> memory.
>>>> -The QMSS driver manages the PDSP setups, linking RAM regions,
>>>> -queue pool management (allocation, push, pop and notify) and descriptor
>>>> -pool management.
>>>
>>>
>>> Only the last sentence seems to be about the driver and is rather
>>> obvious (a driver manages the h/w). I would leave all this as-is
>>> currently.
>>>
>>> Rob
>>>
>> Rob,
>>
>> I am taking the liberty to add your Ack based on the above. I can remove it
>> if you disagree.
>
> No, I don't. I don't agree with moving this out of the binding. This
> mostly sounds like a description of the h/w to me, so I'd like to keep
> it. Most bindings are rather vague in this regard and I'd rather see
> more description than less.
>
Rob,

Sorry, I got you wrong. I will undo the DT documentation change and add 
the update for firmware to driver document.

> I also agree with Arnd's comment about not pointing to kernel docs.

Which comment are you talking about? I can't see his comment though 
against 1/4. I see he has acked 2/4. Can you clarify?

Do you have objections against the reference to driver documentation 
from DT Doc? Not sure why there should be any issue with the reference. 
But if you insists, I will remove below reference from the patch.

+For details of the driver, please refer to
+Documentation/arm/keystone/knav-qmss.txt

So here is the summary of what I will do.
1) Don't remove the driver description from DT document
2) remove the reference to driver document as per 1) this becomes redundant.
3) I will keep the driver description patch 2/4 to include the details 
about the driver only. No change to DT,

Hope this is what you would like me to do.

Thanks.

Murali
>
> Rob
>
>


-- 
Murali Karicheri
Linux Kernel, Keystone

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

* Re: [PATCH 1/4] Documentation: dt: soc: move driver description to a separate document
@ 2015-10-13 18:21           ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-13 18:21 UTC (permalink / raw)
  To: Rob Herring
  Cc: Jonathan Corbet, Santosh Shilimkar, linux-doc, linux-kernel,
	linux-arm-kernel, Pawel Moll, Mark Rutland, Ian Campbell,
	Kumar Gala, Russell King - ARM Linux, devicetree, Arnd Bergmann

On 10/13/2015 02:01 PM, Rob Herring wrote:
> On Tue, Oct 13, 2015 at 12:28 PM, Murali Karicheri <m-karicheri2@ti.com> wrote:
>> On 10/13/2015 10:42 AM, Rob Herring wrote:
>>>
>>> On Mon, Oct 12, 2015 at 2:46 PM, Murali Karicheri <m-karicheri2@ti.com>
>>> wrote:
>>>>
>>>> Currently the DT bindings have details about the driver as well. This
>>>> patch moves this to a separate document for knav qmss driver so that
>>>> driver detail update can be done as needed without polluting the DT
>>>> bindings description.
>>>>
>>>> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>>>> ---
>>>>    Documentation/arm/keystone/knav-qmss.txt           | 24
>>>> ++++++++++++++++++++++
>>>>    .../bindings/soc/ti/keystone-navigator-qmss.txt    | 20
>>>> ++++--------------
>>>>    2 files changed, 28 insertions(+), 16 deletions(-)
>>>>    create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>>>>
>>>> diff --git a/Documentation/arm/keystone/knav-qmss.txt
>>>> b/Documentation/arm/keystone/knav-qmss.txt
>>>> new file mode 100644
>>>> index 0000000..79946d1
>>>> --- /dev/null
>>>> +++ b/Documentation/arm/keystone/knav-qmss.txt
>>>> @@ -0,0 +1,24 @@
>>>> +* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>>>> +
>>>> +Driver source code path
>>>> +  drivers/soc/ti/knav_qmss.c
>>>> +  drivers/soc/ti/knav_qmss_acc.c
>>>> +
>>>> +The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>>>> +the main hardware sub system which forms the backbone of the Keystone
>>>> +multi-core Navigator. QMSS consist of queue managers, packed-data
>>>> structure
>>>> +processors(PDSP), linking RAM, descriptor pools and infrastructure
>>>> +Packet DMA.
>>>> +The Queue Manager is a hardware module that is responsible for
>>>> accelerating
>>>> +management of the packet queues. Packets are queued/de-queued by writing
>>>> or
>>>> +reading descriptor address to a particular memory mapped location. The
>>>> PDSPs
>>>> +perform QMSS related functions like accumulation, QoS, or event
>>>> management.
>>>> +Linking RAM registers are used to link the descriptors which are stored
>>>> in
>>>> +descriptor RAM. Descriptor RAM is configurable as internal or external
>>>> memory.
>>>> +The QMSS driver manages the PDSP setups, linking RAM regions,
>>>> +queue pool management (allocation, push, pop and notify) and descriptor
>>>> +pool management.
>>>> +
>>>> +knav qmss driver provides a set of APIs to drivers to open/close qmss
>>>> queues,
>>>> +allocate descriptor pools, map the descriptors, push/pop to queues etc.
>>>> For
>>>> +details of the available APIs, please refers to
>>>> include/linux/soc/ti/knav_qmss.h
>>>> diff --git
>>>> a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>>> b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>>> index d8e8cdb..2cecea1 100644
>>>> ---
>>>> a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>>> +++
>>>> b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>>> @@ -1,20 +1,8 @@
>>>> -* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>>>> -
>>>> -The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>>>> -the main hardware sub system which forms the backbone of the Keystone
>>>> -multi-core Navigator. QMSS consist of queue managers, packed-data
>>>> structure
>>>> -processors(PDSP), linking RAM, descriptor pools and infrastructure
>>>> -Packet DMA.
>>>> -The Queue Manager is a hardware module that is responsible for
>>>> accelerating
>>>> -management of the packet queues. Packets are queued/de-queued by writing
>>>> or
>>>> -reading descriptor address to a particular memory mapped location. The
>>>> PDSPs
>>>> -perform QMSS related functions like accumulation, QoS, or event
>>>> management.
>>>> -Linking RAM registers are used to link the descriptors which are stored
>>>> in
>>>> -descriptor RAM. Descriptor RAM is configurable as internal or external
>>>> memory.
>>>> -The QMSS driver manages the PDSP setups, linking RAM regions,
>>>> -queue pool management (allocation, push, pop and notify) and descriptor
>>>> -pool management.
>>>
>>>
>>> Only the last sentence seems to be about the driver and is rather
>>> obvious (a driver manages the h/w). I would leave all this as-is
>>> currently.
>>>
>>> Rob
>>>
>> Rob,
>>
>> I am taking the liberty to add your Ack based on the above. I can remove it
>> if you disagree.
>
> No, I don't. I don't agree with moving this out of the binding. This
> mostly sounds like a description of the h/w to me, so I'd like to keep
> it. Most bindings are rather vague in this regard and I'd rather see
> more description than less.
>
Rob,

Sorry, I got you wrong. I will undo the DT documentation change and add 
the update for firmware to driver document.

> I also agree with Arnd's comment about not pointing to kernel docs.

Which comment are you talking about? I can't see his comment though 
against 1/4. I see he has acked 2/4. Can you clarify?

Do you have objections against the reference to driver documentation 
from DT Doc? Not sure why there should be any issue with the reference. 
But if you insists, I will remove below reference from the patch.

+For details of the driver, please refer to
+Documentation/arm/keystone/knav-qmss.txt

So here is the summary of what I will do.
1) Don't remove the driver description from DT document
2) remove the reference to driver document as per 1) this becomes redundant.
3) I will keep the driver description patch 2/4 to include the details 
about the driver only. No change to DT,

Hope this is what you would like me to do.

Thanks.

Murali
>
> Rob
>
>


-- 
Murali Karicheri
Linux Kernel, Keystone

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

* [PATCH 1/4] Documentation: dt: soc: move driver description to a separate document
@ 2015-10-13 18:21           ` Murali Karicheri
  0 siblings, 0 replies; 49+ messages in thread
From: Murali Karicheri @ 2015-10-13 18:21 UTC (permalink / raw)
  To: linux-arm-kernel

On 10/13/2015 02:01 PM, Rob Herring wrote:
> On Tue, Oct 13, 2015 at 12:28 PM, Murali Karicheri <m-karicheri2@ti.com> wrote:
>> On 10/13/2015 10:42 AM, Rob Herring wrote:
>>>
>>> On Mon, Oct 12, 2015 at 2:46 PM, Murali Karicheri <m-karicheri2@ti.com>
>>> wrote:
>>>>
>>>> Currently the DT bindings have details about the driver as well. This
>>>> patch moves this to a separate document for knav qmss driver so that
>>>> driver detail update can be done as needed without polluting the DT
>>>> bindings description.
>>>>
>>>> Signed-off-by: Murali Karicheri <m-karicheri2@ti.com>
>>>> ---
>>>>    Documentation/arm/keystone/knav-qmss.txt           | 24
>>>> ++++++++++++++++++++++
>>>>    .../bindings/soc/ti/keystone-navigator-qmss.txt    | 20
>>>> ++++--------------
>>>>    2 files changed, 28 insertions(+), 16 deletions(-)
>>>>    create mode 100644 Documentation/arm/keystone/knav-qmss.txt
>>>>
>>>> diff --git a/Documentation/arm/keystone/knav-qmss.txt
>>>> b/Documentation/arm/keystone/knav-qmss.txt
>>>> new file mode 100644
>>>> index 0000000..79946d1
>>>> --- /dev/null
>>>> +++ b/Documentation/arm/keystone/knav-qmss.txt
>>>> @@ -0,0 +1,24 @@
>>>> +* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>>>> +
>>>> +Driver source code path
>>>> +  drivers/soc/ti/knav_qmss.c
>>>> +  drivers/soc/ti/knav_qmss_acc.c
>>>> +
>>>> +The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>>>> +the main hardware sub system which forms the backbone of the Keystone
>>>> +multi-core Navigator. QMSS consist of queue managers, packed-data
>>>> structure
>>>> +processors(PDSP), linking RAM, descriptor pools and infrastructure
>>>> +Packet DMA.
>>>> +The Queue Manager is a hardware module that is responsible for
>>>> accelerating
>>>> +management of the packet queues. Packets are queued/de-queued by writing
>>>> or
>>>> +reading descriptor address to a particular memory mapped location. The
>>>> PDSPs
>>>> +perform QMSS related functions like accumulation, QoS, or event
>>>> management.
>>>> +Linking RAM registers are used to link the descriptors which are stored
>>>> in
>>>> +descriptor RAM. Descriptor RAM is configurable as internal or external
>>>> memory.
>>>> +The QMSS driver manages the PDSP setups, linking RAM regions,
>>>> +queue pool management (allocation, push, pop and notify) and descriptor
>>>> +pool management.
>>>> +
>>>> +knav qmss driver provides a set of APIs to drivers to open/close qmss
>>>> queues,
>>>> +allocate descriptor pools, map the descriptors, push/pop to queues etc.
>>>> For
>>>> +details of the available APIs, please refers to
>>>> include/linux/soc/ti/knav_qmss.h
>>>> diff --git
>>>> a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>>> b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>>> index d8e8cdb..2cecea1 100644
>>>> ---
>>>> a/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>>> +++
>>>> b/Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
>>>> @@ -1,20 +1,8 @@
>>>> -* Texas Instruments Keystone Navigator Queue Management SubSystem driver
>>>> -
>>>> -The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
>>>> -the main hardware sub system which forms the backbone of the Keystone
>>>> -multi-core Navigator. QMSS consist of queue managers, packed-data
>>>> structure
>>>> -processors(PDSP), linking RAM, descriptor pools and infrastructure
>>>> -Packet DMA.
>>>> -The Queue Manager is a hardware module that is responsible for
>>>> accelerating
>>>> -management of the packet queues. Packets are queued/de-queued by writing
>>>> or
>>>> -reading descriptor address to a particular memory mapped location. The
>>>> PDSPs
>>>> -perform QMSS related functions like accumulation, QoS, or event
>>>> management.
>>>> -Linking RAM registers are used to link the descriptors which are stored
>>>> in
>>>> -descriptor RAM. Descriptor RAM is configurable as internal or external
>>>> memory.
>>>> -The QMSS driver manages the PDSP setups, linking RAM regions,
>>>> -queue pool management (allocation, push, pop and notify) and descriptor
>>>> -pool management.
>>>
>>>
>>> Only the last sentence seems to be about the driver and is rather
>>> obvious (a driver manages the h/w). I would leave all this as-is
>>> currently.
>>>
>>> Rob
>>>
>> Rob,
>>
>> I am taking the liberty to add your Ack based on the above. I can remove it
>> if you disagree.
>
> No, I don't. I don't agree with moving this out of the binding. This
> mostly sounds like a description of the h/w to me, so I'd like to keep
> it. Most bindings are rather vague in this regard and I'd rather see
> more description than less.
>
Rob,

Sorry, I got you wrong. I will undo the DT documentation change and add 
the update for firmware to driver document.

> I also agree with Arnd's comment about not pointing to kernel docs.

Which comment are you talking about? I can't see his comment though 
against 1/4. I see he has acked 2/4. Can you clarify?

Do you have objections against the reference to driver documentation 
from DT Doc? Not sure why there should be any issue with the reference. 
But if you insists, I will remove below reference from the patch.

+For details of the driver, please refer to
+Documentation/arm/keystone/knav-qmss.txt

So here is the summary of what I will do.
1) Don't remove the driver description from DT document
2) remove the reference to driver document as per 1) this becomes redundant.
3) I will keep the driver description patch 2/4 to include the details 
about the driver only. No change to DT,

Hope this is what you would like me to do.

Thanks.

Murali
>
> Rob
>
>


-- 
Murali Karicheri
Linux Kernel, Keystone

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

end of thread, other threads:[~2015-10-13 18:22 UTC | newest]

Thread overview: 49+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-12 19:46 [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support Murali Karicheri
2015-10-12 19:46 ` Murali Karicheri
2015-10-12 19:46 ` Murali Karicheri
2015-10-12 19:46 ` [PATCH 1/4] Documentation: dt: soc: move driver description to a separate document Murali Karicheri
2015-10-12 19:46   ` Murali Karicheri
2015-10-12 19:46   ` Murali Karicheri
2015-10-13 14:42   ` Rob Herring
2015-10-13 14:42     ` Rob Herring
2015-10-13 14:42     ` Rob Herring
2015-10-13 15:44     ` Murali Karicheri
2015-10-13 15:44       ` Murali Karicheri
2015-10-13 15:44       ` Murali Karicheri
2015-10-13 17:28     ` Murali Karicheri
2015-10-13 17:28       ` Murali Karicheri
2015-10-13 17:28       ` Murali Karicheri
2015-10-13 18:01       ` Rob Herring
2015-10-13 18:01         ` Rob Herring
2015-10-13 18:01         ` Rob Herring
2015-10-13 18:21         ` Murali Karicheri
2015-10-13 18:21           ` Murali Karicheri
2015-10-13 18:21           ` Murali Karicheri
2015-10-12 19:46 ` [PATCH v2 2/4] soc: ti: add firmware file name as part of the driver Murali Karicheri
2015-10-12 19:46   ` Murali Karicheri
2015-10-12 19:46   ` Murali Karicheri
2015-10-13 14:32   ` Arnd Bergmann
2015-10-13 14:32     ` Arnd Bergmann
2015-10-13 14:38   ` Rob Herring
2015-10-12 19:46 ` [PATCH v2 3/4] ARM: dts: keystone: enable accumulator channels Murali Karicheri
2015-10-12 19:46   ` Murali Karicheri
2015-10-12 19:46   ` Murali Karicheri
2015-10-12 19:46 ` [PATCH 4/4] soc: ti: qmss: make acc queue support optional in the driver Murali Karicheri
2015-10-12 19:46   ` Murali Karicheri
2015-10-12 19:46   ` Murali Karicheri
2015-10-12 19:54 ` [PATCH v2 0/4] soc: ti: knav_qmss: enable accumulator queue support Murali Karicheri
2015-10-12 19:54   ` Murali Karicheri
2015-10-12 19:54   ` Murali Karicheri
2015-10-13 13:56 ` Murali Karicheri
2015-10-13 13:56   ` Murali Karicheri
2015-10-13 13:56   ` Murali Karicheri
2015-10-13 16:01   ` santosh shilimkar
2015-10-13 16:01     ` santosh shilimkar
2015-10-13 16:14     ` Murali Karicheri
2015-10-13 16:14       ` Murali Karicheri
2015-10-13 16:14       ` Murali Karicheri
2015-10-13 16:21       ` santosh shilimkar
2015-10-13 16:21         ` santosh shilimkar
2015-10-13 16:42         ` Murali Karicheri
2015-10-13 16:42           ` Murali Karicheri
2015-10-13 16:42           ` Murali Karicheri

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.