~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/misc-devices/spear-pcie-gadget.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/misc-devices/spear-pcie-gadget.rst (Architecture m68k) and /Documentation/misc-devices/spear-pcie-gadget.rst (Architecture i386)


  1 .. SPDX-License-Identifier: GPL-2.0                 1 .. SPDX-License-Identifier: GPL-2.0
  2                                                     2 
  3 ========================                            3 ========================
  4 Spear PCIe Gadget Driver                            4 Spear PCIe Gadget Driver
  5 ========================                            5 ========================
  6                                                     6 
  7 Author                                              7 Author
  8 ======                                              8 ======
  9 Pratyush Anand (pratyush.anand@gmail.com)           9 Pratyush Anand (pratyush.anand@gmail.com)
 10                                                    10 
 11 Location                                           11 Location
 12 ========                                           12 ========
 13 driver/misc/spear13xx_pcie_gadget.c                13 driver/misc/spear13xx_pcie_gadget.c
 14                                                    14 
 15 Supported Chip:                                    15 Supported Chip:
 16 ===============                                    16 ===============
 17 SPEAr1300                                          17 SPEAr1300
 18 SPEAr1310                                          18 SPEAr1310
 19                                                    19 
 20 Menuconfig option:                                 20 Menuconfig option:
 21 ==================                                 21 ==================
 22 Device Drivers                                     22 Device Drivers
 23         Misc devices                               23         Misc devices
 24                 PCIe gadget support for SPEAr1     24                 PCIe gadget support for SPEAr13XX platform
 25                                                    25 
 26 purpose                                            26 purpose
 27 =======                                            27 =======
 28 This driver has several nodes which can be rea     28 This driver has several nodes which can be read/written by configfs interface.
 29 Its main purpose is to configure selected dual     29 Its main purpose is to configure selected dual mode PCIe controller as device
 30 and then program its various registers to conf     30 and then program its various registers to configure it as a particular device
 31 type. This driver can be used to show spear's      31 type. This driver can be used to show spear's PCIe device capability.
 32                                                    32 
 33 Description of different nodes:                    33 Description of different nodes:
 34 ===============================                    34 ===============================
 35                                                    35 
 36 read behavior of nodes:                            36 read behavior of nodes:
 37 -----------------------                            37 -----------------------
 38                                                    38 
 39 =============== ==============================     39 =============== ==============================================================
 40 link            gives ltssm status.                40 link            gives ltssm status.
 41 int_type        type of supported interrupt        41 int_type        type of supported interrupt
 42 no_of_msi       zero if MSI is not enabled by      42 no_of_msi       zero if MSI is not enabled by host. A positive value is the
 43                 number of MSI vector granted.      43                 number of MSI vector granted.
 44 vendor_id       returns programmed vendor id (     44 vendor_id       returns programmed vendor id (hex)
 45 device_id       returns programmed device id(h     45 device_id       returns programmed device id(hex)
 46 bar0_size:      returns size of bar0 in hex.       46 bar0_size:      returns size of bar0 in hex.
 47 bar0_address    returns address of bar0 mapped     47 bar0_address    returns address of bar0 mapped area in hex.
 48 bar0_rw_offset  returns offset of bar0 for whi     48 bar0_rw_offset  returns offset of bar0 for which bar0_data will return value.
 49 bar0_data       returns data at bar0_rw_offset     49 bar0_data       returns data at bar0_rw_offset.
 50 =============== ==============================     50 =============== ==============================================================
 51                                                    51 
 52 write behavior of nodes:                           52 write behavior of nodes:
 53 ------------------------                           53 ------------------------
 54                                                    54 
 55 =============== ==============================     55 =============== ================================================================
 56 link            write UP to enable ltsmm DOWN      56 link            write UP to enable ltsmm DOWN to disable
 57 int_type        write interrupt type to be con     57 int_type        write interrupt type to be configured and (int_type could be
 58                 INTA, MSI or NO_INT). Select M     58                 INTA, MSI or NO_INT). Select MSI only when you have programmed
 59                 no_of_msi node.                    59                 no_of_msi node.
 60 no_of_msi       number of MSI vector needed.       60 no_of_msi       number of MSI vector needed.
 61 inta            write 1 to assert INTA and 0 t     61 inta            write 1 to assert INTA and 0 to de-assert.
 62 send_msi        write MSI vector to be sent.       62 send_msi        write MSI vector to be sent.
 63 vendor_id       write vendor id(hex) to be pro     63 vendor_id       write vendor id(hex) to be programmed.
 64 device_id       write device id(hex) to be pro     64 device_id       write device id(hex) to be programmed.
 65 bar0_size       write size of bar0 in hex. def     65 bar0_size       write size of bar0 in hex. default bar0 size is 1000 (hex)
 66                 bytes.                             66                 bytes.
 67 bar0_address    write   address of bar0 mapped     67 bar0_address    write   address of bar0 mapped area in hex. (default mapping of
 68                 bar0 is SYSRAM1(E0800000). Alw     68                 bar0 is SYSRAM1(E0800000). Always program bar size before bar
 69                 address. Kernel might modify b     69                 address. Kernel might modify bar size and address for alignment,
 70                 so read back bar size and addr     70                 so read back bar size and address after writing to cross check.
 71 bar0_rw_offset  write offset of bar0 for which     71 bar0_rw_offset  write offset of bar0 for which  bar0_data will write value.
 72 bar0_data       write data to be written at ba     72 bar0_data       write data to be written at bar0_rw_offset.
 73 =============== ==============================     73 =============== ================================================================
 74                                                    74 
 75 Node programming example                           75 Node programming example
 76 ========================                           76 ========================
 77                                                    77 
 78 Program all PCIe registers in such a way that      78 Program all PCIe registers in such a way that when this device is connected
 79 to the PCIe host, then host sees this device a     79 to the PCIe host, then host sees this device as 1MB RAM.
 80                                                    80 
 81 ::                                                 81 ::
 82                                                    82 
 83     #mount -t configfs none /Config                83     #mount -t configfs none /Config
 84                                                    84 
 85 For nth PCIe Device Controller::                   85 For nth PCIe Device Controller::
 86                                                    86 
 87     # cd /config/pcie_gadget.n/                    87     # cd /config/pcie_gadget.n/
 88                                                    88 
 89 Now you have all the nodes in this directory.      89 Now you have all the nodes in this directory.
 90 program vendor id as 0x104a::                      90 program vendor id as 0x104a::
 91                                                    91 
 92     # echo 104A >> vendor_id                       92     # echo 104A >> vendor_id
 93                                                    93 
 94 program device id as 0xCD80::                      94 program device id as 0xCD80::
 95                                                    95 
 96     # echo CD80 >> device_id                       96     # echo CD80 >> device_id
 97                                                    97 
 98 program BAR0 size as 1MB::                         98 program BAR0 size as 1MB::
 99                                                    99 
100     # echo 100000 >> bar0_size                    100     # echo 100000 >> bar0_size
101                                                   101 
102 check for programmed bar0 size::                  102 check for programmed bar0 size::
103                                                   103 
104     # cat bar0_size                               104     # cat bar0_size
105                                                   105 
106 Program BAR0 Address as DDR (0x2100000). This     106 Program BAR0 Address as DDR (0x2100000). This is the physical address of
107 memory, which is to be made visible to PCIe ho    107 memory, which is to be made visible to PCIe host. Similarly any other peripheral
108 can also be made visible to PCIe host. E.g., i    108 can also be made visible to PCIe host. E.g., if you program base address of UART
109 as BAR0 address then when this device will be     109 as BAR0 address then when this device will be connected to a host, it will be
110 visible as UART.                                  110 visible as UART.
111                                                   111 
112 ::                                                112 ::
113                                                   113 
114     # echo 2100000 >> bar0_address                114     # echo 2100000 >> bar0_address
115                                                   115 
116 program interrupt type : INTA::                   116 program interrupt type : INTA::
117                                                   117 
118     # echo INTA >> int_type                       118     # echo INTA >> int_type
119                                                   119 
120 go for link up now::                              120 go for link up now::
121                                                   121 
122     # echo UP >> link                             122     # echo UP >> link
123                                                   123 
124 It will have to be insured that, once link up     124 It will have to be insured that, once link up is done on gadget, then only host
125 is initialized and start to search PCIe device    125 is initialized and start to search PCIe devices on its port.
126                                                   126 
127 ::                                                127 ::
128                                                   128 
129     /*wait till link is up*/                      129     /*wait till link is up*/
130     # cat link                                    130     # cat link
131                                                   131 
132 Wait till it returns UP.                          132 Wait till it returns UP.
133                                                   133 
134 To assert INTA::                                  134 To assert INTA::
135                                                   135 
136     # echo 1 >> inta                              136     # echo 1 >> inta
137                                                   137 
138 To de-assert INTA::                               138 To de-assert INTA::
139                                                   139 
140     # echo 0 >> inta                              140     # echo 0 >> inta
141                                                   141 
142 if MSI is to be used as interrupt, program no     142 if MSI is to be used as interrupt, program no of msi vector needed (say4)::
143                                                   143 
144     # echo 4 >> no_of_msi                         144     # echo 4 >> no_of_msi
145                                                   145 
146 select MSI as interrupt type::                    146 select MSI as interrupt type::
147                                                   147 
148     # echo MSI >> int_type                        148     # echo MSI >> int_type
149                                                   149 
150 go for link up now::                              150 go for link up now::
151                                                   151 
152     # echo UP >> link                             152     # echo UP >> link
153                                                   153 
154 wait till link is up::                            154 wait till link is up::
155                                                   155 
156     # cat link                                    156     # cat link
157                                                   157 
158 An application can repetitively read this node    158 An application can repetitively read this node till link is found UP. It can
159 sleep between two read.                           159 sleep between two read.
160                                                   160 
161 wait till msi is enabled::                        161 wait till msi is enabled::
162                                                   162 
163     # cat no_of_msi                               163     # cat no_of_msi
164                                                   164 
165 Should return 4 (number of requested MSI vecto    165 Should return 4 (number of requested MSI vector)
166                                                   166 
167 to send msi vector 2::                            167 to send msi vector 2::
168                                                   168 
169     # echo 2 >> send_msi                          169     # echo 2 >> send_msi
170     # cd -                                        170     # cd -
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php