devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Santosh Shilimkar <santosh.shilimkar-l0cyMroinI0@public.gmane.org>
To: Rob Herring <robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
Cc: "linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	"linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org"
	<linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org>,
	"devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
	<devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
	Sandeep Nair <sandeep_n-l0cyMroinI0@public.gmane.org>,
	Greg Kroah-Hartman
	<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
	Kumar Gala <galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>,
	Olof Johansson <olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org>,
	Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>,
	Grant Likely
	<grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>,
	Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>,
	Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>
Subject: Re: [PATCH 2/3] soc: keystone: add QMSS driver
Date: Tue, 11 Mar 2014 05:19:17 +0800	[thread overview]
Message-ID: <531E2C55.70702@ti.com> (raw)
In-Reply-To: <CAL_Jsq+O660oV9FtthG3gTkVOhL0ku-UHSrkt-ROauu1iNpbaA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>

On Tuesday 11 March 2014 01:02 AM, Rob Herring wrote:
> On Fri, Feb 28, 2014 at 5:18 PM, Santosh Shilimkar
> <santosh.shilimkar-l0cyMroinI0@public.gmane.org> wrote:
>> From: Sandeep Nair <sandeep_n-l0cyMroinI0@public.gmane.org>
>>
>> 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. The specifics on the device tree bindings for
>> QMSS can be found in:
>>         Documentation/devicetree/bindings/soc/keystone-qmss.txt
> 
> You are telling me where I can find a file that is added in this commit?
> 
> All this description of what the h/w block does should go into the binding doc.
> 
Sure. Will do.

>>
>> Cc: Greg Kroah-Hartman <gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>
>> Cc: Kumar Gala <galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
>> Cc: Olof Johansson <olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org>
>> Cc: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
>> Cc: Grant Likely <grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
>> Cc: Rob Herring <robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
>> Cc: Mark Rutland <mark.rutland-5wv7dgnIgG8@public.gmane.org>
>> Signed-off-by: Sandeep Nair <sandeep_n-l0cyMroinI0@public.gmane.org>
>> Signed-off-by: Santosh Shilimkar <santosh.shilimkar-l0cyMroinI0@public.gmane.org>
>> ---
>>  .../devicetree/bindings/soc/keystone-qmss.txt      |  209 +++
>>  drivers/Kconfig                                    |    2 +
>>  drivers/Makefile                                   |    3 +
>>  drivers/soc/Kconfig                                |    2 +
>>  drivers/soc/Makefile                               |    5 +
>>  drivers/soc/keystone/Kconfig                       |   15 +
>>  drivers/soc/keystone/Makefile                      |    5 +
>>  drivers/soc/keystone/qmss_acc.c                    |  591 ++++++++
>>  drivers/soc/keystone/qmss_queue.c                  | 1533 ++++++++++++++++++++
>>  drivers/soc/keystone/qmss_queue.h                  |  236 +++
>>  include/linux/soc/keystone_qmss.h                  |  390 +++++
>>  11 files changed, 2991 insertions(+)
>>  create mode 100644 Documentation/devicetree/bindings/soc/keystone-qmss.txt
>>  create mode 100644 drivers/soc/Makefile
>>  create mode 100644 drivers/soc/keystone/Kconfig
>>  create mode 100644 drivers/soc/keystone/Makefile
>>  create mode 100644 drivers/soc/keystone/qmss_acc.c
>>  create mode 100644 drivers/soc/keystone/qmss_queue.c
>>  create mode 100644 drivers/soc/keystone/qmss_queue.h
>>  create mode 100644 include/linux/soc/keystone_qmss.h
>>
>> diff --git a/Documentation/devicetree/bindings/soc/keystone-qmss.txt b/Documentation/devicetree/bindings/soc/keystone-qmss.txt
>> new file mode 100644
>> index 0000000..f975207
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/soc/keystone-qmss.txt
>> @@ -0,0 +1,209 @@
>> +* Texas Instruments Keystone QMSS driver
>> +
>> +Required properties:
>> +- compatible   : Must be "ti,keystone-qmss";
>> +- clocks       : phandle to the reference clock for this device.
>> +- queue-range  : <start number> total range of queue numbers for the device.
>> +- linkram0     : <address size> for internal link ram, where size is the total
>> +                 link ram entries.
>> +- linkram1     : <address size> for external link ram, where size is the total
>> +                 external link ram entries. If the address is specified as "0"
>> +                 driver will allocate memory.
>> +- qmgrs         : the number of individual queue managers in the device. On
>> +                  keystone 1 range of devices there should be only one node.
>> +                 On keystone 2 devices there can be more than 1 node.
>> +  -- managed-queues    : the actual queues managed by each queue manager
>> +                         instance, specified as <"base queue #" "# of queues">.
>> +  -- reg               : Address and length of the register set for the device
>> +                         for peek, status, config, region, push, pop regions.
>> +  -- reg-names         : Names for the above register regions. The name to be
>> +                         used is as follows:
>> +                         - "config" : Queue configuration region.
>> +                         - "status" : Queue status RAM.
>> +                         - "region" : Descriptor memory setup region.
>> +                         - "push"   : Queue Management/Queue Proxy region.
>> +                         - "pop"    : Queue Management/Queue Proxy region.
>> +                         - "peek"   : Queue Peek region.
> 
> reg-names should be optional. Also you have the order different from
> reg. Be consistent as to what is the correct order.
> 
We thought of using reg-names to remove the ordering to index
the regs. So if we make the reg-names optional, then indexing
by order will be used. We can do that.

>> +- queue-pools  : Queue ranges are grouped into 3 type of pools:
>> +                 - qpend           : pool of qpend(interruptible) queues
>> +                 - general-purpose : pool of general queues, primarly used
>> +                                     as free descriptor queues or the
>> +                                     transmit DMA queues.
>> +                 - accumulator     : pool of queues on accumulator channel
>> +                 Each range can have the following properties:
>> +  -- values            : number of queues to use per queue range, specified as
>> +                         <"base queue #" "# of queues">.
> 
> values of what? This needs a better name.
ok. Will use 'qrange-values'
> 
>> +  -- interrupts                : Optional property to specify the interrupt mapping
>> +                         for interruptible queues. The driver additionaly sets
>> +                         the interrupt affinity based on the cpu mask.
>> +  -- reserved          : Optional property used to reserve the range. Queues
>> +                         in a reserved range can only be allocated by id.
> 
> reserved what? This needs a better name and description.
>
'qrange-reserved'. Will update the description.
 
>> +  -- accumulator       : Accumulator channel property specified as:
>> +                         <pdsp-id, channel, entries, pacing mode, latency>
>> +                         pdsp-id     : QMSS PDSP running accumulator firmware
>> +                                       on which the channel has to be
>> +                                       configured
>> +                         channel     : Accumulator channel number
>> +                         entries     : Size of the accumulator descriptor list
>> +                         pacing mode : Interrupt pacing mode
>> +                                       0 : None, i.e interrupt on list full
>> +                                       1 : Time delay since last interrupt
>> +                                       2 : Time delay since first new packet
>> +                                       3 : Time delay since last new packet
>> +                         latency     : time to delay the interrupt, specified
>> +                                       in microseconds.
>> +  -- multi-queue       : Optional property to specify that the channel has to
>> +                         monitor upto 32 queues starting at the base queue #.
> 
> What does the property contain? What's a channel in this context?
>
Its accumulator channel who can monitor multiple queues. Its a hardware
off-load feature to monitor and accumulate the traffic on multiple queues.
 
>> +- descriptor-regions   : Descriptor memory region specification.
> 
> huh?
Ok. We will make the description bit more verbose to make it clear.

> 
>> +  -- id                                : region number.
>> +  -- values                    : number of descriptors in the region,
>> +                                 specified as
>> +                                 <"# of descriptors" "descriptor size">.
>> +  -- link-index                        : start index, i.e. index of the first
>> +                                 descriptor in the region.
>> +
>> +Optional properties:
>> +- dma-coherent : Present if DMA operations are coherent.
>> +- pdsps                : PDSP configuration, if any.
> 
> This is a child node? Make that clear and separate the description for
> each node.
>
Sure.
 
>> +  -- firmware          : firmware to be loaded on the PDSP.
>> +  -- id                        : the qmss pdsp that will run the firmware.
>> +  -- reg               : Address and length of the register set of the PDSP
>> +                         for iram, intd, region, command regions.
>> +  -- reg-names         : Names for the above register regions. The name to be
>> +                         used is as follows:
>> +                         - "iram"   : PDSP internal RAM region.
>> +                         - "reg"    : PDSP control/status region registers.
>> +                         - "intd"   : QMSS interrupt distributor registers.
>> +                         - "cmd"    : PDSP command interface region.
>> +
>> +Example:
> 
> I probably have other comments, but address the above first.
> 
Thanks for the comments. We will address these in next version.

Regards,
Santosh

--
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

  parent reply	other threads:[~2014-03-10 21:19 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-28 23:18 [PATCH 0/3] soc: Introduce drivers/soc and add Keystone QMSS driver Santosh Shilimkar
2014-02-28 23:18 ` [PATCH 1/3] soc: Introduce drivers/soc place-holder for SOC specific drivers Santosh Shilimkar
2014-03-02 17:12   ` One Thousand Gnomes
     [not found]     ` <20140302171206.6adbea6f-mUKnrFFms3BCCTY1wZZT65JpZx93mCW/@public.gmane.org>
2014-03-02 20:48       ` Olof Johansson
2014-03-03 16:13         ` Kumar Gala
2014-03-03 23:35           ` Greg Kroah-Hartman
     [not found]   ` <1393629520-12713-2-git-send-email-santosh.shilimkar-l0cyMroinI0@public.gmane.org>
2014-03-03 16:16     ` Kumar Gala
     [not found] ` <1393629520-12713-1-git-send-email-santosh.shilimkar-l0cyMroinI0@public.gmane.org>
2014-02-28 23:18   ` [PATCH 2/3] soc: keystone: add QMSS driver Santosh Shilimkar
     [not found]     ` <1393629520-12713-3-git-send-email-santosh.shilimkar-l0cyMroinI0@public.gmane.org>
2014-03-03 16:41       ` Kumar Gala
2014-03-04  7:51         ` Santosh Shilimkar
2014-03-04 17:59       ` Kumar Gala
2014-03-05  2:47         ` Santosh Shilimkar
2014-03-05  9:55           ` Kumar Gala
2014-03-06  1:46             ` Santosh Shilimkar
2014-03-10 17:02       ` Rob Herring
     [not found]         ` <CAL_Jsq+O660oV9FtthG3gTkVOhL0ku-UHSrkt-ROauu1iNpbaA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-03-10 21:19           ` Santosh Shilimkar [this message]
     [not found]             ` <531E2C55.70702-l0cyMroinI0@public.gmane.org>
2014-03-11 14:04               ` Kumar Gala
2014-03-11 14:44                 ` Santosh Shilimkar
     [not found]                 ` <5EE98053-31B8-4679-AAE2-4F026C61D1D4-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2014-03-11 15:14                   ` Rob Herring
2014-02-28 23:18 ` [PATCH 3/3] firmware: add Keystone QMSS PDSP accumulator firmware blob Santosh Shilimkar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=531E2C55.70702@ti.com \
    --to=santosh.shilimkar-l0cymroini0@public.gmane.org \
    --cc=arnd-r2nGTMty4D4@public.gmane.org \
    --cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
    --cc=grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
    --cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
    --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
    --cc=olof-nZhT3qVonbNeoWH0uzbU5w@public.gmane.org \
    --cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=sandeep_n-l0cyMroinI0@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).