TS-7840 FPGA GPIO Core
From embeddedTS Manuals
This FPGA includes two banks of GPIO with atomic set/clr for data and output enable, as well as level based IRQs. Under Linux this is exposed as /dev/gpiochip2 and /dev/gpiochip3. These character devices are normally accessed with libgpiod. The utilities from libgpiod are included in our shipping image and allow accessing GPIO from the shell prompt.
See gpioinfo for a list of all usable GPIO:
gpioinfo /dev/gpiochip2 /dev/gpiochip3 /dev/gpiochip4
Returns:
gpiochip2 - 32 lines: line 0: "uart0_irq" unused input active-high line 1: "uart1_irq" unused input active-high line 2: "uart2_irq" unused input active-high line 3: "uart3_irq" unused input active-high line 4: "uart4_irq" unused input active-high line 5: "uart5_irq" unused input active-high line 6: "uart6_irq" unused input active-high line 7: "uart7_irq" unused input active-high line 8: "uart8_irq" unused input active-high line 9: unnamed unused input active-high line 10: "can_irq" unused input active-high line 11: "spi_irq" "interrupt" input active-high [used] line 12: unnamed unused input active-high line 13: unnamed unused input active-high line 14: "sdio_irq" unused input active-high line 15: "sd_busy" unused input active-high line 16: "power_fail_3v_pad" unused input active-high line 17: "detect_9478_pad" unused input active-high line 18: "cpu_access_fpga_flash" unused input active-high line 19: "magjack_1_led_padn" "right-green-led" output active-low [used] line 20: "blu_led_padn" "right-red-led" output active-low [used] line 21: "right_grn_led_padn" "middle-green-led" output active-low [used] line 22: "right_red_led_padn" "middle-yellow-led" output active-low [used] line 23: "middle_grn_led_padn" "left-green-led" output active-low [used] line 24: "middle_yel_led_padn" "left-yellow-led" output active-low [used] line 25: "left_grn_led_padn" unused input active-high line 26: "left_yel_led_padn" "phy-0-led" output active-low [used] line 27: "bt_en_pad" unused input active-high line 28: "wifi_en_pad" unused output active-high line 29: "prog_silab_clk_padn" unused input active-high line 30: "prog_silab_data_pad" unused input active-high line 31: "cpu_push_sw_padn" unused input active-high gpiochip3 - 32 lines: line 0: "DIG_IO_1" unused input active-high line 1: "DIG_IO_2" unused input active-high line 2: "DIG_IO_3" unused input active-high line 3: "en_hs_sw_pad" unused input active-high line 4: "mikro_pwm_pad" unused input active-high line 5: "dio_fault_3v_padn" unused input active-high line 6: "en_poe_padn" unused input active-high line 7: "i2c_poe_clk_pad" "scl" input active-high [used] line 8: "i2c_poe_dat" "sda" input active-high [used] line 9: "spi_0_fpga_cs3_pad" unused input active-high line 10: "cage1_sda_pad" "sda" input active-high [used] line 11: "cage1_scl_pad" "scl" input active-high [used] line 12: "cage1_present_padn" unused input active-high line 13: "cage2_present_padn" unused input active-high line 14: "cage2_sda_pad" "sda" input active-high [used] line 15: "cage2_scl_pad" "scl" input active-high [used] line 16: "en_nimbel_4v_pad" unused input active-high line 17: "en_nimbel_3v3_pad" unused input active-high line 18: "en_emmc_3v3_pad" unused input active-high line 19: "en_modem_5v_pad" unused input active-high line 20: "en_usb_5v_pad" unused output active-high line 21: "disable_nim_usb_pad" unused input active-high line 22: "mini_pcie_reset_padn" unused output active-high line 23: "ssd_present_padn" unused input active-high line 24: "en_xbee_usb_padn" unused input active-high line 25: "aux_i2c_dat_pad" "sda" input active-high [used] line 26: "aux_i2c_clk_pad" "scl" input active-high [used] line 27: unnamed unused input active-high line 28: unnamed unused input active-high line 29: unnamed unused input active-high line 30: unnamed unused input active-high line 31: unnamed unused input active-high gpiochip4 - 32 lines: line 0: "ird_network_rdy_pad" unused input active-high line 1: "ird_modem_on_pad" unused input active-high line 2: "eth_100_act_padn" unused input active-high line 3: "eth_100_speed_padn" unused input active-high line 4: "ssd_act_padn" unused input active-high line 5: "mini_sr_latch_pad" unused input active-high line 6: unnamed unused input active-high line 7: unnamed unused input active-high line 8: unnamed unused input active-high line 9: unnamed unused input active-high line 10: "mikro_int_pad" unused input active-high line 11: "mikro_reset_padn" unused input active-high line 12: "mikro_an_3v_pad" unused input active-high line 13: "mikro_i2c_clk_pad" "scl" input active-high [used] line 14: "mikro_i2c_dat_pad" "sda" input active-high [used] line 15: "alt_mikro_pwm_pad" unused input active-high line 16: "mikro_an_pwm_pad" unused input active-high line 17: "comp_pad" unused input active-high line 18: "mikro_180_pad" unused input active-high line 19: "en_mini_5v_pad" unused input active-high line 20: "magjack_0_led_padn" "phy-1-led" output active-low [used] line 21: "hd10_2_pad" unused input active-high line 22: "hd10_4_pad" unused input active-high line 23: "hd10_5_pad" unused input active-high line 24: "hd10_6_pad" unused input active-high line 25: "hd10_8_pad" unused input active-high line 26: "jp1_padn" unused input active-high line 27: "jp2_padn" unused input active-high line 28: unnamed unused input active-high line 29: unnamed unused input active-high line 30: unnamed unused input active-high line 31: unnamed unused input active-high
From here, commands such as gpioget and gpioset can be used:
gpioget /dev/gpiochip2 31 # Get cpu_push_sw_padn
# Returns 1 when not pressed, 0 when pressed
gpioset /dev/gpiochip3 21=0 # Set en_usb_5v_pad to 0, turning off USB 5V
gpioset /dev/gpiochip3 21=1 # Re-enable USB
These driver interfaces should be used in most cases, but the register documentation is provided for driver writers or for those with reasons to go directly to the hardware:
|
|