A question about regmap bus

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi All,

We have an FPGA device and it is connect to a SOC through the SPI interface.
The communication is using a specific protocol like as bellow.

Read a register:
           <                       Bits                         >
           ++++++++++++++++++++++++++++++++++++++++++++++++++++++
           |  7   |  6  |  5  |  4  |  3  |  2  |   1   |   0   |
^  ++++++++|++++++|+++++|+++++|+++++|+++++|+++++|+++++++|++++++++
   | 0      |  0   |               Header (6:0)                   | 
   ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   | 1      |       Header (7:2)                  |  Address (1:0)   |
B  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
y  | 2      |                  Address (7:0)                       |
t  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
e  | 3      |                Data Count (7:0)                      |
s  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   | 4      |              Turn-Around-Time (7:0)                  |
   ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   | 5...X   |          X bytes data from the SPI slave                 |
   ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   | N-1    |             Status from the SPI slave                   |
   ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   | N     |              CRC from the SPI slave                    |
v  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  
Write a register:
           <                       Bits                         >
           ++++++++++++++++++++++++++++++++++++++++++++++++++++++
           |  7   |  6  |  5  |  4  |  3  |  2  |   1   |   0   |
^  ++++++++|++++++|+++++|+++++|+++++|+++++|+++++|+++++++|++++++++
   | 0      |  0   |               Header (6:0)                   |
   ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   | 1      |       Header (7:2)                 |   Address (1:0)   |
B  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
y  | 2      |                  Address (7:0)                       |
t  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
e  | 3      |                Data Count (7:0)                      |
s  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   |  4...X  |           X bytes data to the SPI slave                  |
   ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   | N-3    |              CRC to the SPI slave                      | 
   ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   | N-2    |                Turn-Around-Time                     |
   ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   | N-1    |             Status from the SPI slave                   |
   ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   | N     |              CRC from the SPI slave                    |
v  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

The protocol seems like needs a new rebmap bus to support it. Is that right?

I see a similer design in drivers/base/regmap/regmap-spi-avmm.c and know it is for Intel Avalon bus. 
A new question is, if the protocol is only for a specific SPI device. 
Should I generate a new regmap bus driver into drivers/base/regmap folder? 
or this regmap bus should implement together with the SPI device driver in the same file? 
I found an example is devm_regmap_init() function called in drivers/mfd/atmel-hlcdc.c file.

T


_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]

  Powered by Linux