All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/13] pruss mfd drivers
@ 2011-02-11 14:51 Subhasish Ghosh
  2011-02-11 14:51   ` Subhasish Ghosh
                   ` (12 more replies)
  0 siblings, 13 replies; 161+ messages in thread
From: Subhasish Ghosh @ 2011-02-11 14:51 UTC (permalink / raw)
  To: linux-arm-kernel


                           PRUSS Functional Block Diagram
               /----------------------------------------------------\
               |                                                    |
               |                      |------|                      |
     32GPO<------->PRU CORE-0 <------>|      |<------> DRAM 0       |
     30GPI<------->(4KB IRAM)         |  S   |       (512 Bytes)    |
               |                      |      |                      |
     32GPO<------->PRU CORE-1 <------>|  C   |<------> DRAM 1       |
     30GPI<------->(4KB IRAM)         |      |       (512 Bytes)    |
               |                      |  R   |                      |
               |                      |      |                      |
 Ints to ARM/  |    Interrupt <------>|      |-------------------------> Master I/F (to SCR2)
 DSP INTC <------->Controller         |      |<------------------------- Slave I/F (from SCR2)
 Events from   |     (INTC)           |------|                      |
 Periph + PRUs |                                                    |
               \----------------------------------------------------/

Programmable Realtime Unit (PRU) is basically a 32-bit RISC
processor available within TI's DA8XX SOCs. It consists of local
instruction and data RAM and also has access to SOC resources
via a Switched Central Resource (SCR).

There are two PRU's available within DA8XX SOC's PRUSS, hence providing
two execution cores. Devices/Protocols can be emulated on these utilizing
either both or only one of the PRUs independently.

The rational behind the MFD driver being the fact that multiple devices can
be implemented on the cores independently.
It's also possible, as in our case, to implement a single device on both
the PRU's resulting in improved load sharing.

A detailed description is also available here:
http://processors.wiki.ti.com/index.php/Programmable_Realtime_Unit_Subsystem

version 2:
==========
* added pruss TTY Soft-UART driver.
* added pruss Soft-UART board and platform changes.
* fixed previous review comments.
* reordered patch sequence.

version 1:
==========
* added pruss mfd driver.
* added pruss mfd board and platform changes.
* added pruss SocketCAN driver.
* added pruss SocketCAN board and platform changes.
* added pruss SocketCAN GPIOs.
* added previous review comments.

Subhasish Ghosh (13):
  mfd: pruss mfd driver.
  da850: pruss platform specific additions.
  da850: pruss board specific additions.
  mfd: pruss CAN private data.
  da850: pruss CAN platform specific additions.
  da850: pruss CAN board specific additions.
  da850: pruss CAN platform specific changes for gpios.
  da850: pruss CAN board specific changes for gpios.
  can: pruss CAN driver.
  mfd: pruss SUART private data.
  da850: pruss SUART board specific additions.
  da850: pruss SUART platform specific additions.
  tty: pruss SUART driver

 arch/arm/mach-davinci/board-da850-evm.c            |  105 +
 arch/arm/mach-davinci/da850.c                      |   12 +
 arch/arm/mach-davinci/devices-da8xx.c              |   76 +
 arch/arm/mach-davinci/include/mach/da8xx.h         |    2 +
 arch/arm/mach-davinci/include/mach/mux.h           |    5 +
 drivers/mfd/Kconfig                                |   10 +
 drivers/mfd/Makefile                               |    1 +
 drivers/mfd/da8xx_pru.c                            |  446 ++++
 drivers/net/can/Kconfig                            |    1 +
 drivers/net/can/Makefile                           |    1 +
 drivers/net/can/da8xx_pruss/Kconfig                |   73 +
 drivers/net/can/da8xx_pruss/Makefile               |    7 +
 drivers/net/can/da8xx_pruss/pruss_can.c            |  758 +++++++
 drivers/net/can/da8xx_pruss/pruss_can_api.c        | 1227 ++++++++++
 drivers/net/can/da8xx_pruss/pruss_can_api.h        |  290 +++
 drivers/tty/serial/Kconfig                         |    2 +
 drivers/tty/serial/Makefile                        |    1 +
 drivers/tty/serial/da8xx_pruss/Kconfig             |   19 +
 drivers/tty/serial/da8xx_pruss/Makefile            |    9 +
 drivers/tty/serial/da8xx_pruss/pruss_suart.c       | 1014 +++++++++
 drivers/tty/serial/da8xx_pruss/pruss_suart_api.c   | 2350 ++++++++++++++++++++
 drivers/tty/serial/da8xx_pruss/pruss_suart_api.h   |  345 +++
 drivers/tty/serial/da8xx_pruss/pruss_suart_board.h |   58 +
 drivers/tty/serial/da8xx_pruss/pruss_suart_err.h   |   48 +
 drivers/tty/serial/da8xx_pruss/pruss_suart_mcasp.h |  526 +++++
 drivers/tty/serial/da8xx_pruss/pruss_suart_regs.h  |  153 ++
 drivers/tty/serial/da8xx_pruss/pruss_suart_utils.c |  384 ++++
 drivers/tty/serial/da8xx_pruss/pruss_suart_utils.h |   63 +
 include/linux/mfd/pruss/da8xx_pru.h                |  131 ++
 include/linux/mfd/pruss/da8xx_prucore.h            |   74 +
 include/linux/serial_core.h                        |    2 +
 31 files changed, 8193 insertions(+), 0 deletions(-)
 create mode 100644 drivers/mfd/da8xx_pru.c
 create mode 100644 drivers/net/can/da8xx_pruss/Kconfig
 create mode 100644 drivers/net/can/da8xx_pruss/Makefile
 create mode 100644 drivers/net/can/da8xx_pruss/pruss_can.c
 create mode 100644 drivers/net/can/da8xx_pruss/pruss_can_api.c
 create mode 100644 drivers/net/can/da8xx_pruss/pruss_can_api.h
 create mode 100644 drivers/tty/serial/da8xx_pruss/Kconfig
 create mode 100644 drivers/tty/serial/da8xx_pruss/Makefile
 create mode 100644 drivers/tty/serial/da8xx_pruss/pruss_suart.c
 create mode 100644 drivers/tty/serial/da8xx_pruss/pruss_suart_api.c
 create mode 100644 drivers/tty/serial/da8xx_pruss/pruss_suart_api.h
 create mode 100644 drivers/tty/serial/da8xx_pruss/pruss_suart_board.h
 create mode 100644 drivers/tty/serial/da8xx_pruss/pruss_suart_err.h
 create mode 100644 drivers/tty/serial/da8xx_pruss/pruss_suart_mcasp.h
 create mode 100644 drivers/tty/serial/da8xx_pruss/pruss_suart_regs.h
 create mode 100644 drivers/tty/serial/da8xx_pruss/pruss_suart_utils.c
 create mode 100644 drivers/tty/serial/da8xx_pruss/pruss_suart_utils.h
 create mode 100644 include/linux/mfd/pruss/da8xx_pru.h
 create mode 100644 include/linux/mfd/pruss/da8xx_prucore.h

-- 
1.7.2.3

^ permalink raw reply	[flat|nested] 161+ messages in thread
* Re: [PATCH v2 13/13] tty: pruss SUART driver
@ 2011-02-23 13:34 ` Subhasish Ghosh
  0 siblings, 0 replies; 161+ messages in thread
From: Subhasish Ghosh @ 2011-02-23 13:35 UTC (permalink / raw)
  To: Greg KH, Alan Cox
  Cc: Arnd Bergmann, linux-arm-kernel, Thomas Gleixner, sachi,
	davinci-linux-open-source, nsekhar, open list, m-watkins,
	Stalin Srinivasan

Hello,

Anything regarding this.

--------------------------------------------------
From: "Subhasish Ghosh" <subhasish@mistralsolutions.com>
Sent: Wednesday, February 23, 2011 11:00 AM
To: "Greg KH" <gregkh@suse.de>; "Alan Cox" <alan@lxorguk.ukuu.org.uk>
Cc: "Arnd Bergmann" <arnd@arndb.de>; <linux-arm-kernel@lists.infradead.org>; 
"Thomas Gleixner" <tglx@linutronix.de>; <sachi@mistralsolutions.com>; 
<davinci-linux-open-source@linux.davincidsp.com>; <nsekhar@ti.com>; "open 
list" <linux-kernel@vger.kernel.org>; <m-watkins@ti.com>; "Stalin 
Srinivasan" <stalin.s@mistralsolutions.com>
Subject: Re: [PATCH v2 13/13] tty: pruss SUART driver

> I could not follow the recommendations clearly.
> This is just to clarify.
>
> Currently, I have the following files for the suart implementation:
>
> drivers/tty/serial/da8xx_pruss/pruss_suart_api.h
> drivers/tty/serial/da8xx_pruss/pruss_suart_err.h
> drivers/tty/serial/da8xx_pruss/pruss_suart_regs.h
> drivers/tty/serial/da8xx_pruss/pruss_suart_board.h
> drivers/tty/serial/da8xx_pruss/pruss_suart_mcasp.h
> drivers/tty/serial/da8xx_pruss/pruss_suart_utils.h
>
> drivers/tty/serial/da8xx_pruss/pruss_suart_api.c
> drivers/tty/serial/da8xx_pruss/pruss_suart.c
> drivers/tty/serial/da8xx_pruss/pruss_suart_utils.c
>
> Of these, I will be removing pruss_suart_err.h as part of the Linux error 
> code cleanup.
> But, I need to keep at least  pruss_suart_board.h as a separate file, as 
> this defines
> configurations which will be often modified by users, I don't want to mix 
> it with other files.
>
> Should I combine rest of the headers into a single file ? and keep the 
> other three .c files under "drivers/tty/serial/"
> and remove the da8xx_pruss directory altogether.
>
>
> --------------------------------------------------
> From: "Greg KH" <gregkh@suse.de>
> Sent: Tuesday, February 22, 2011 8:07 PM
> To: "Subhasish Ghosh" <subhasish@mistralsolutions.com>
> Cc: "Arnd Bergmann" <arnd@arndb.de>; 
> <linux-arm-kernel@lists.infradead.org>; "Thomas Gleixner" 
> <tglx@linutronix.de>; "Alan Cox" <alan@lxorguk.ukuu.org.uk>; 
> <sachi@mistralsolutions.com>; 
> <davinci-linux-open-source@linux.davincidsp.com>; <nsekhar@ti.com>; "open 
> list" <linux-kernel@vger.kernel.org>; <m-watkins@ti.com>
> Subject: Re: [PATCH v2 13/13] tty: pruss SUART driver
>
>> On Tue, Feb 22, 2011 at 02:12:32PM +0530, Subhasish Ghosh wrote:
>>> Hello,
>>>
>>> I had kept separate files to affirm the modularity and ease of
>>> portability of the system.
>>>
>>> There are three different interfaces,
>>> 1. The Linux driver interface
>>> 2. The PRU control interface
>>> 3. The McASP serializer interface.
>>>
>>> To maintain modularity, I  had classified the files respectively as :
>>> 1.  pruss_suart.c
>>> 2.  pruss_suart_api.c
>>> 3.  pruss_suart_utils.c
>>>
>>> This is not a single device which can be expressed as a single file,
>>> but functionally different devices logically cascaded together to
>>> work in unison.
>>>
>>> We use the PRU for packet processing, but the actual data is
>>> transmitted/received through the
>>> McASP, which we use as a serializer.
>>>
>>> I feel to combine these disparate functionalities into a single file
>>> will not
>>>
>>> 1. Help better understanding the device. I mean, why should a TTY
>>> UART driver be aware of the McASP or the PRU.
>>> 2. In case of a bug in the API layer or McASP, the driver need not
>>> be touched, thus improve maintainability.
>>> 3. If we need to port it to another Linux version, just editing the
>>> driver file should suffice, this will reduce bugs while porting.
>>
>> If your code is in the kernel tree, you do not need to ever port it to a
>> new version, as it will happen automatically as new kernels are
>> released, so this really isn't anything to worry about.
>>
>>> To me, combining all of these into a single file only creates a
>>> mess. This is the reason I had separated them into different files!!
>>> I don't understand why should it be better to have all of these into
>>> a single file.
>>
>> As Alan stated, just use 3 files in the directory with the other
>> drivers, you don't need a subdir for something small like this.
>>
>> thanks,
>>
>> greg k-h
> 

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

end of thread, other threads:[~2011-03-22  7:30 UTC | newest]

Thread overview: 161+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-02-11 14:51 [PATCH v2 00/13] pruss mfd drivers Subhasish Ghosh
2011-02-11 14:51 ` [PATCH v2 01/13] mfd: pruss mfd driver Subhasish Ghosh
2011-02-11 14:51   ` Subhasish Ghosh
2011-02-21 16:30   ` Samuel Ortiz
2011-02-21 16:30     ` Samuel Ortiz
2011-02-22  5:43     ` Subhasish Ghosh
2011-02-22  5:43       ` Subhasish Ghosh
2011-02-22 10:31       ` Samuel Ortiz
2011-02-22 10:31         ` Samuel Ortiz
2011-02-22 10:48         ` Wolfgang Grandegger
2011-02-22 10:48           ` Wolfgang Grandegger
2011-02-22 11:33           ` Samuel Ortiz
2011-02-22 11:33             ` Samuel Ortiz
2011-02-22 12:49             ` Subhasish Ghosh
2011-02-22 12:49               ` Subhasish Ghosh
2011-02-22 16:27               ` Wolfgang Grandegger
2011-02-22 16:27                 ` Wolfgang Grandegger
2011-02-23 12:25         ` Subhasish Ghosh
2011-02-23 12:25           ` Subhasish Ghosh
2011-02-23 13:09         ` Russell King - ARM Linux
2011-02-23 13:09           ` Russell King - ARM Linux
2011-02-11 14:51 ` [PATCH v2 02/13] da850: pruss platform specific additions Subhasish Ghosh
2011-02-11 14:51   ` Subhasish Ghosh
2011-02-11 18:41   ` Sergei Shtylyov
2011-02-11 18:41     ` Sergei Shtylyov
2011-02-18  7:18     ` Subhasish Ghosh
2011-02-18  7:18       ` Subhasish Ghosh
2011-02-28 13:04   ` TK, Pratheesh Gangadhar
2011-02-28 13:04     ` TK, Pratheesh Gangadhar
2011-03-01  6:59     ` Subhasish Ghosh
2011-03-01  6:59       ` Subhasish Ghosh
2011-03-03 11:12       ` TK, Pratheesh Gangadhar
2011-03-03 11:12         ` TK, Pratheesh Gangadhar
2011-02-11 14:51 ` [PATCH v2 03/13] da850: pruss board " Subhasish Ghosh
2011-02-11 14:51   ` Subhasish Ghosh
2011-02-11 18:43   ` Sergei Shtylyov
2011-02-11 18:43     ` Sergei Shtylyov
2011-02-18  7:18     ` Subhasish Ghosh
2011-02-18  7:18       ` Subhasish Ghosh
2011-02-11 14:51 ` [PATCH v2 04/13] mfd: pruss CAN private data Subhasish Ghosh
2011-02-11 14:51   ` Subhasish Ghosh
2011-02-11 14:51 ` [PATCH v2 05/13] da850: pruss CAN platform specific additions Subhasish Ghosh
2011-02-11 14:51   ` Subhasish Ghosh
2011-02-11 14:51 ` [PATCH v2 06/13] da850: pruss CAN board " Subhasish Ghosh
2011-02-11 14:51   ` Subhasish Ghosh
2011-02-11 18:45   ` Sergei Shtylyov
2011-02-11 18:45     ` Sergei Shtylyov
2011-02-18  7:19     ` Subhasish Ghosh
2011-02-18  7:19       ` Subhasish Ghosh
2011-02-18  7:19     ` Subhasish Ghosh
2011-02-18  7:19       ` Subhasish Ghosh
2011-02-11 14:51 ` [PATCH v2 07/13] da850: pruss CAN platform specific changes for gpios Subhasish Ghosh
2011-02-11 14:51   ` Subhasish Ghosh
2011-02-11 18:47   ` Sergei Shtylyov
2011-02-11 18:47     ` Sergei Shtylyov
2011-02-18  7:20     ` Subhasish Ghosh
2011-02-18  7:20       ` Subhasish Ghosh
2011-02-11 14:51 ` [PATCH v2 08/13] da850: pruss CAN board " Subhasish Ghosh
2011-02-11 14:51   ` Subhasish Ghosh
2011-02-11 14:51 ` [PATCH v2 09/13] can: pruss CAN driver Subhasish Ghosh
2011-02-11 14:51   ` Subhasish Ghosh
2011-02-11 15:06   ` Kurt Van Dijck
2011-02-11 15:06     ` Kurt Van Dijck
2011-02-11 15:06     ` Kurt Van Dijck
2011-02-14  4:54     ` Subhasish Ghosh
2011-02-14  4:54       ` Subhasish Ghosh
2011-02-14  7:23       ` Wolfgang Grandegger
     [not found]         ` <4D58D854.5090503-5Yr1BZd7O62+XT7JhA+gdA@public.gmane.org>
2011-02-14  7:42           ` Kurt Van Dijck
2011-02-14  7:42             ` Kurt Van Dijck
2011-02-14  8:45         ` Subhasish Ghosh
2011-02-14  8:45           ` Subhasish Ghosh
2011-02-14  9:28           ` Wolfgang Grandegger
2011-02-14  9:35           ` Marc Kleine-Budde
2011-02-14 13:15             ` Subhasish Ghosh
2011-02-14 13:15               ` Subhasish Ghosh
2011-02-14 13:15               ` Subhasish Ghosh
2011-02-14 13:33               ` Marc Kleine-Budde
2011-02-14 13:42               ` Wolfgang Grandegger
2011-02-11 15:20   ` Kurt Van Dijck
2011-02-11 15:20     ` Kurt Van Dijck
2011-02-11 15:20     ` Kurt Van Dijck
2011-02-18  7:07     ` Subhasish Ghosh
2011-02-18  7:07       ` Subhasish Ghosh
2011-02-18  7:07       ` Subhasish Ghosh
2011-02-18  7:53       ` Wolfgang Grandegger
2011-02-18  8:15         ` Subhasish Ghosh
2011-02-18  8:15           ` Subhasish Ghosh
2011-02-18  8:15           ` Subhasish Ghosh
2011-02-18  8:36           ` Marc Kleine-Budde
2011-02-18  8:36             ` Marc Kleine-Budde
2011-02-18  8:36             ` Marc Kleine-Budde
2011-02-18  9:09             ` Subhasish Ghosh
2011-02-18  9:09               ` Subhasish Ghosh
2011-02-18  9:09               ` Subhasish Ghosh
     [not found]   ` <1297435892-28278-10-git-send-email-subhasish-EvXpCiN+lbve9wHmmfpqLFaTQe2KTcn/@public.gmane.org>
2011-02-11 20:33     ` Wolfgang Grandegger
2011-02-11 21:33     ` Marc Kleine-Budde
2011-02-18 15:07   ` Arnd Bergmann
2011-02-18 15:07     ` Arnd Bergmann
2011-03-22  7:30     ` Subhasish Ghosh
2011-03-22  7:30       ` Subhasish Ghosh
2011-03-22  7:30       ` Subhasish Ghosh
2011-02-11 14:51 ` [PATCH v2 10/13] mfd: pruss SUART private data Subhasish Ghosh
2011-02-11 14:51   ` Subhasish Ghosh
2011-02-11 14:51 ` [PATCH v2 11/13] da850: pruss SUART board specific additions Subhasish Ghosh
2011-02-11 14:51   ` Subhasish Ghosh
2011-02-11 15:26   ` Michael Williamson
2011-02-11 15:26     ` Michael Williamson
2011-02-18  7:13     ` Subhasish Ghosh
2011-02-18  7:13       ` Subhasish Ghosh
2011-02-11 18:50   ` Sergei Shtylyov
2011-02-11 18:50     ` Sergei Shtylyov
2011-02-22  6:22     ` Subhasish Ghosh
2011-02-22  6:22       ` Subhasish Ghosh
2011-02-11 14:51 ` [PATCH v2 12/13] da850: pruss SUART platform " Subhasish Ghosh
2011-02-11 14:51   ` Subhasish Ghosh
2011-02-11 18:55   ` Sergei Shtylyov
2011-02-11 18:55     ` Sergei Shtylyov
2011-02-22  9:18     ` Subhasish Ghosh
2011-02-22  9:18       ` Subhasish Ghosh
2011-02-22 11:20       ` Sergei Shtylyov
2011-02-22 11:20         ` Sergei Shtylyov
2011-02-22 13:24         ` Subhasish Ghosh
2011-02-22 13:24           ` Subhasish Ghosh
2011-02-11 14:51 ` [PATCH v2 13/13] tty: pruss SUART driver Subhasish Ghosh
2011-02-11 14:51   ` Subhasish Ghosh
2011-02-11 16:28   ` Alan Cox
2011-02-11 16:28     ` Alan Cox
2011-02-18 13:47     ` Subhasish Ghosh
2011-02-18 13:47       ` Subhasish Ghosh
2011-02-18 14:35       ` Alan Cox
2011-02-18 14:35         ` Alan Cox
2011-02-18 18:23         ` Thomas Gleixner
2011-02-18 18:23           ` Thomas Gleixner
2011-02-18 18:51           ` Arnd Bergmann
2011-02-18 18:51             ` Arnd Bergmann
2011-02-22  8:42             ` Subhasish Ghosh
2011-02-22  8:42               ` Subhasish Ghosh
2011-02-22 14:37               ` Greg KH
2011-02-22 14:37                 ` Greg KH
2011-02-23  5:30                 ` Subhasish Ghosh
2011-02-23  5:30                   ` Subhasish Ghosh
2011-02-23 18:20                   ` Greg KH
2011-02-23 18:20                     ` Greg KH
2011-02-22  8:43             ` Subhasish Ghosh
2011-02-22  8:43               ` Subhasish Ghosh
2011-02-22 16:34               ` Arnd Bergmann
2011-02-22 16:34                 ` Arnd Bergmann
2011-02-24 10:31                 ` Subhasish Ghosh
2011-02-24 10:31                   ` Subhasish Ghosh
2011-02-22 10:26     ` Subhasish
2011-02-22 10:26       ` Subhasish
2011-02-22 11:11       ` Alan Cox
2011-02-22 11:11         ` Alan Cox
2011-03-01 13:37         ` Subhasish Ghosh
2011-03-01 13:37           ` Subhasish Ghosh
2011-03-01 14:07           ` Alan Cox
2011-03-01 14:07             ` Alan Cox
2011-02-23 13:35 Subhasish Ghosh
2011-02-23 13:34 ` Subhasish Ghosh
2011-02-23 18:21 ` Greg KH
2011-02-23 18:21   ` Greg KH

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.