20 | | These adapters and various radios are detailed below. |
| 20 | These adapters and various card configurations are detailed below. |
| 21 | |
| 22 | |
| 23 | == FSA Identification EEPROM |
| 24 | The FSA adapters have an identification EEPROM programmed during manufacturing test that provide: |
| 25 | * model string |
| 26 | * mac addresses (for FSA's that have networking interfaces) |
| 27 | * serial number |
| 28 | * manufacturer date |
| 29 | * description (user writable 32 character description string) |
| 30 | - This use modifiable description is shown during FSA detection when the board boots in the bootloader and can be used as a reminder for what card you have populated in an adapter or what purpose you have applied to an adapter |
| 31 | * overlay (user writable 16 character overlay string) |
| 32 | - This is not currently used but in the future could be used to auto-select a device-tree overlay supporting what is in an FSA socket for example |
| 33 | * gpio descriptors (user writable) onboard GPIO's each having: |
| 34 | - name (used to identify the GPIO in U-Boot and Linux, prefixed by 'fsa<n>_' to uniquely identify what FSA socket it is in |
| 35 | - default configuration (not connected, unconfigured, input, output-low, output-high) applied by the bootloader |
| 36 | |
| 37 | The Gateworks U-Boot bootloader has support for accessing the FSA socket details on a board using the 'fsa' command: |
| 38 | * show command usage: |
| 39 | {{{#!bash |
| 40 | u-boot=> fsa |
| 41 | fsa - Flexible Socket Adapter |
| 42 | |
| 43 | Usage: |
| 44 | fsa dev [dev] - show or set current FSA adapter |
| 45 | fsa gpio - show current gpio descriptors |
| 46 | fsa gpio [<offset>]|[<offset> <source>] - show a specific gpio descriptor |
| 47 | fsa gpio [<offset> <name> <input|output-low|output-high> [source]] - set a gpio descriptor |
| 48 | fsa description [description] - show or set the FSA user description string |
| 49 | fsa overlay [overlay] - show or set the FSA overlay string |
| 50 | }}} |
| 51 | * list FSA adapters on a board: |
| 52 | {{{#!bash |
| 53 | u-boot=> fsa dev |
| 54 | detecting FSA Adapters: |
| 55 | FSA1 : GW16FP0-A M.2 Mini-PCIe Adapter |
| 56 | FSA2 : GW16FE0-B M.2 E-Key Adapter |
| 57 | }}} |
| 58 | * select and describe FSA1: |
| 59 | {{{#!bash |
| 60 | u-boot=> fsa dev 1 |
| 61 | selected: |
| 62 | FSA1: GW16FP0-A |
| 63 | description: M.2 Mini-PCIe Adapter |
| 64 | overlay: |
| 65 | 0 : fsa_gpio1 : wdisable# output-high |
| 66 | 1 : fsa_gpio2 : sel_pci# output-high |
| 67 | 2 : fsa_gpio3 : sim_det# input |
| 68 | 3 : fsa_gpio4 : NC |
| 69 | }}} |
| 70 | * set the user description string for selected FSA: |
| 71 | {{{#!bash |
| 72 | u-boot=> fsa description mymodem |
| 73 | FSA1: GW16FP0-A |
| 74 | description: mymodem |
| 75 | overlay: |
| 76 | 0 : fsa_gpio1 : wdisable# output-high |
| 77 | 1 : fsa_gpio2 : sel_pci# output-high |
| 78 | 2 : fsa_gpio3 : sim_det# input |
| 79 | 3 : fsa_gpio4 : NC |
| 80 | u-boot=> fsa dev |
| 81 | detecting FSA Adapters: |
| 82 | FSA1 : GW16FP0-A mymodem |
| 83 | FSA2 : GW16FE0-B M.2 E-Key Adapter |
| 84 | selected: |
| 85 | FSA1: GW16FP0-A |
| 86 | description: mymodem |
| 87 | overlay: |
| 88 | 0 : fsa_gpio1 : wdisable# output-high |
| 89 | 1 : fsa_gpio2 : sel_pci# output-high |
| 90 | 2 : fsa_gpio3 : sim_det# input |
| 91 | 3 : fsa_gpio4 : NC |
| 92 | |
| 93 | }}} |
| 94 | * blank the description string for selected FSA: |
| 95 | {{{#!bash |
| 96 | u-boot=> fsa description "" |
| 97 | FSA1: GW16FP0-A |
| 98 | description: |
| 99 | overlay: |
| 100 | 0 : fsa_gpio1 : wdisable# output-high |
| 101 | 1 : fsa_gpio2 : sel_pci# output-high |
| 102 | 2 : fsa_gpio3 : sim_det# input |
| 103 | 3 : fsa_gpio4 : NC |
| 104 | }}} |
| 105 | * show GPIO configuration for selected FSA: |
| 106 | {{{#!bash |
| 107 | u-boot=> fsa gpio |
| 108 | 0 : fsa_gpio1 : wdisable# output-high |
| 109 | 1 : fsa_gpio2 : sel_pci# output-high |
| 110 | 2 : fsa_gpio3 : sim_det# input |
| 111 | 3 : fsa_gpio4 : NC |
| 112 | }}} |
| 113 | * show description of GPIO 2 for selected FSA: |
| 114 | {{{#!bash |
| 115 | u-boot=> fsa gpio 2 |
| 116 | FSA1 GW16FP0-A showing gpio 2 |
| 117 | fsa_gpio3 : sim_det# input |
| 118 | }}} |
| 119 | * re-configure GPIO 2 (name and default state) for selected FSA: |
| 120 | {{{#!bash |
| 121 | u-boot=> fsa gpio 2 foo output-low |
| 122 | FSA1 GW16FP0-A updating gpio 2 |
| 123 | u-boot=> fsa gpio 2 |
| 124 | FSA1 GW16FP0-A showing gpio 2 |
| 125 | fsa_gpio3 : foo output-low |
| 126 | }}} |
| 127 | |
| 128 | Note that the GPIO default states are not applied at board power-on but at runtime by the bootloader when detecting the board model and FSA adapters. The board power-on state of the GPIO's depends on the specific FSA adapter design. |
| 129 | |
| 130 | |
| 131 | == FSA GPIO's |
| 132 | The FSA adapters can have up to 4 GPIO's that route to the baseboard. These have a name and a default configuration dictated by the identification EEPROM on the FSA and are available in both U-Boot and Linux prefixed by the FSA slot number the FSA adapter is populated in. |
| 133 | |
| 134 | For example, if an FSA adapter in socket FSA2 uses gpio0 as 'wdisable1#' and gpio1 as 'wdisable2#' the following GPIO's would be available by name: |
| 135 | * fsa2_wdisable1# |
| 136 | * fsa2_wdisable2# |
| 137 | |
| 138 | These can be set in U-Boot or Linux. |
| 139 | |
| 140 | Examples: |
| 141 | * FSA2 has a MiniPCIe adapter with a 'wdisable#' GPIO we wish to drive low |
| 142 | - In U-Boot: |
| 143 | {{{#!bash |
| 144 | u-boot=> gpio clr fsa2_wdisable# |
| 145 | }}} |
| 146 | - In Linux: |
| 147 | {{{#!bash |
| 148 | # gpioset --mode signal $(gpiofind "fsa2_wdisable#")=0 |
| 149 | }}} |
| 150 | |