From: Michael S. <mi...@sc...> - 2024-08-26 12:20:11
|
Hi, since the conversion of gpib_bitbang to gpiod lookup tables for GPIO allocation (which I think is a good idea, since it gets rid of the gpio_offset hack), I am having (slight) problems, since some GPIOs are not found on my Pi 3B. The previous version (2ab64102a655fe183cf9653ab20b0511e95159fb) would simply fail on my RP3B due to "SPI_MISO" not being found. Using the RP5 table on my RP3B fixed this. The current code does this on its own: allocating SPI_MISO fails, and the code tries further tables until the RP45 table works - however, this raises the question why there is a separate table for RP3 if it does not work on a RP3B? Raspberry Pi 3B, git c2c696d3cb6a3bb81974688a85cdf40a815a9f7c [ 0.000000] Linux version 6.6.31+rpt-rpi-v7 (se...@ra...) (gcc-12 (Raspbian 12.2.0-14+rpi1) 12.2.0, GNU ld (GNU Binutils for Raspbian) 2.40) #1 SMP Raspbian 1:6.6.31-1+rpt1 (2024-05-29) [ 0.000000] CPU: ARMv7 Processor [410fd034] revision 4 (ARMv7), cr=10c5383d [11692.014745] Linux-GPIB 4.3.6 Driver [11692.032150] gpib: registered gpib_bitbang interface [11692.032174] gpib_bitbang:bb_init_module - module loaded with pin map "yoga" [11693.087510] gpib_bitbang:bb_attach - Using pin map "yoga" [11693.087545] gpib_bitbang:allocate_gpios - Allocating gpios using table index 0 [11693.087562] gpib_bitbang:allocate_gpios - Allocating gpio GPIO20 pin no 20 [11693.087607] gpib_bitbang:allocate_gpios - Allocating gpio GPIO26 pin no 26 [11693.087633] gpib_bitbang:allocate_gpios - Allocating gpio GPIO13 pin no 13 [11693.087658] gpib_bitbang:allocate_gpios - Allocating gpio GPIO12 pin no 12 [11693.087681] gpib_bitbang:allocate_gpios - Allocating gpio GPIO21 pin no 21 [11693.087705] gpib_bitbang:allocate_gpios - Allocating gpio GPIO19 pin no 19 [11693.087729] gpib_bitbang:allocate_gpios - Allocating gpio GPIO6 pin no 6 [11693.087751] gpib_bitbang:allocate_gpios - Allocating gpio GPIO5 pin no 5 [11693.087773] gpib_bitbang:allocate_gpios - Allocating gpio GPIO9 pin no 9 [11693.087796] gpib_common gpib0: cannot find GPIO line SPI_MISO, deferring [11693.087811] gpib_bitbang:allocate_gpios - Allocation failed, now using table_index 1 [11693.087823] gpib_bitbang:allocate_gpios - Allocating gpio GPIO9 pin no 9 [11693.087840] gpib_common gpib0: cannot find GPIO line SPI_MISO, deferring [11693.087853] gpib_bitbang:allocate_gpios - Allocation failed, now using table_index 2 [11693.087864] gpib_bitbang:allocate_gpios - Allocating gpio GPIO9 pin no 9 [11693.087887] gpib_bitbang:allocate_gpios - Allocating gpio GPIO24 pin no 24 [11693.087911] gpib_bitbang:allocate_gpios - Allocating gpio GPIO22 pin no 22 [11693.087935] gpib_bitbang:allocate_gpios - Allocating gpio GPIO25 pin no 25 [11693.087959] gpib_bitbang:allocate_gpios - Allocating gpio GPIO27 pin no 27 [11693.087983] gpib_bitbang:allocate_gpios - Allocating gpio GPIO10 pin no 10 [11693.088005] gpib_bitbang:allocate_gpios - Allocating gpio GPIO23 pin no 23 [11693.088029] gpib_bitbang:allocate_gpios - Allocating gpio GPIO11 pin no 11 [11693.088052] gpib_bitbang:allocate_gpios - Allocating gpio GPIO18 pin no 18 [11693.088172] gpib_bitbang:bb_attach - attached board 0 gpioinfo shows: gpiochip0 - 54 lines: line 0: "ID_SDA" unused input active-high line 1: "ID_SCL" unused input active-high line 2: "GPIO2" unused input active-high line 3: "GPIO3" unused input active-high line 4: "GPIO4" "hat_led" output active-high [used] line 5: "GPIO5" "GPIO5" output active-high [used] line 6: "GPIO6" "GPIO6" output active-high [used] line 7: "GPIO7" unused input active-high line 8: "GPIO8" unused input active-high line 9: "GPIO9" "GPIO9" output active-high [used] line 10: "GPIO10" "GPIO10" output active-high [used] line 11: "GPIO11" "GPIO11" input active-high [used] line 12: "GPIO12" "GPIO12" output active-high [used] line 13: "GPIO13" "GPIO13" output active-high [used] line 14: "GPIO14" unused input active-high line 15: "GPIO15" unused input active-high line 16: "GPIO16" unused input active-high line 17: "GPIO17" unused input active-high line 18: "GPIO18" "GPIO18" output active-high [used] line 19: "GPIO19" "GPIO19" output active-high [used] line 20: "GPIO20" "GPIO20" output active-high [used] line 21: "GPIO21" "GPIO21" output active-high [used] line 22: "GPIO22" "GPIO22" output active-high [used] line 23: "GPIO23" "GPIO23" input active-high [used] line 24: "GPIO24" "GPIO24" input active-high [used] line 25: "GPIO25" "GPIO25" input active-high [used] line 26: "GPIO26" "GPIO26" output active-high [used] line 27: "GPIO27" "GPIO27" output active-high [used] line 28: "HDMI_HPD_N" "hpd" input active-low [used] line 29: "STATUS_LED_G" "ACT" output active-high [used] line 30: "CTS0" unused input active-high line 31: "RTS0" unused input active-high line 32: "TXD0" unused input active-high line 33: "RXD0" unused input active-high line 34: "SD1_CLK" unused input active-high line 35: "SD1_CMD" unused input active-high line 36: "SD1_DATA0" unused input active-high line 37: "SD1_DATA1" unused input active-high line 38: "SD1_DATA2" unused input active-high line 39: "SD1_DATA3" unused input active-high line 40: "PWM0_OUT" unused input active-high line 41: "PWM1_OUT" unused input active-high line 42: "ETH_CLK" unused input active-high line 43: "WIFI_CLK" unused input active-high line 44: "SDA0" unused input active-high line 45: "SCL0" unused input active-high line 46: "SMPS_SCL" unused input active-high line 47: "SMPS_SDA" unused output active-high line 48: "SD_CLK_R" unused input active-high line 49: "SD_CMD_R" unused input active-high line 50: "SD_DATA0_R" unused input active-high line 51: "SD_DATA1_R" unused input active-high line 52: "SD_DATA2_R" unused input active-high line 53: "SD_DATA3_R" unused input active-high gpiochip1 - 8 lines: line 0: "BT_ON" unused output active-high line 1: "WL_ON" unused output active-high line 2: "PWR_LED_R" "PWR" output active-low [used] line 3: "LAN_RUN" unused output active-high line 4: "NC" unused input active-high line 5: "CAM_GPIO0" "cam1_regulator" output active-high [used] line 6: "CAM_GPIO1" unused output active-high line 7: "NC" unused input active-high Where do these gpio_gpib_* tables come from? It looks to me like we should be able to use generic names ("GPIO9" instead of "SPI_MISO") for all machines (ie. simply use the rp45 table), since they are in the device tree - but I am no expert on this. Are these different depending on OS version? Looking at the device tree files shows generic names (eg. GPIO9 instead of SPI_MISO): dtc -I dtb -O dts /boot/firmware/bcm2711-rpi-4-b.dtb | grep gpio-line-names gpio-line-names = "ID_SDA\0ID_SCL\0GPIO2\0GPIO3\0GPIO4\0GPIO5\0GPIO6\0GPIO7\0GPIO8\0GPIO9\0GPIO10\0GPIO11\0GPIO12\0GPIO13\0GPIO14\0GPIO15\0GPIO16\0GPIO17\0GPIO18\0GPIO19\0GPIO20\0GPIO21\0GPIO22\0GPIO23\0GPIO24\0GPIO25\0GPIO26\0GPIO27\0RGMII_MDIO\0RGMIO_MDC\0CTS0\0RTS0\0TXD0\0RXD0\0SD1_CLK\0SD1_CMD\0SD1_DATA0\0SD1_DATA1\0SD1_DATA2\0SD1_DATA3\0PWM0_MISO\0PWM1_MOSI\0STATUS_LED_G_CLK\0SPIFLASH_CE_N\0SDA0\0SCL0\0RGMII_RXCLK\0RGMII_RXCTL\0RGMII_RXD0\0RGMII_RXD1\0RGMII_RXD2\0RGMII_RXD3\0RGMII_TXCLK\0RGMII_TXCTL\0RGMII_TXD0\0RGMII_TXD1\0RGMII_TXD2\0RGMII_TXD3"; dtc -I dtb -O dts /boot/firmware/bcm2710-rpi-3-b.dtb | grep gpio-line-names gpio-line-names = "ID_SDA\0ID_SCL\0GPIO2\0GPIO3\0GPIO4\0GPIO5\0GPIO6\0GPIO7\0GPIO8\0GPIO9\0GPIO10\0GPIO11\0GPIO12\0GPIO13\0GPIO14\0GPIO15\0GPIO16\0GPIO17\0GPIO18\0GPIO19\0GPIO20\0GPIO21\0GPIO22\0GPIO23\0GPIO24\0GPIO25\0GPIO26\0GPIO27\0NC\0LAN_RUN_BOOT\0CTS0\0RTS0\0TXD0\0RXD0\0SD1_CLK\0SD1_CMD\0SD1_DATA0\0SD1_DATA1\0SD1_DATA2\0SD1_DATA3\0PWM0_OUT\0PWM1_OUT\0ETH_CLK\0WIFI_CLK\0SDA0\0SCL0\0SMPS_SCL\0SMPS_SDA\0SD_CLK_R\0SD_CMD_R\0SD_DATA0_R\0SD_DATA1_R\0SD_DATA2_R\0SD_DATA3_R"; dtc -I dtb -O dts /boot/firmware/bcm2710-rpi-2-b.dtb | grep gpio-line-names gpio-line-names = "ID_SDA\0ID_SCL\0GPIO2\0GPIO3\0GPIO4\0GPIO5\0GPIO6\0GPIO7\0GPIO8\0GPIO9\0GPIO10\0GPIO11\0GPIO12\0GPIO13\0GPIO14\0GPIO15\0GPIO16\0GPIO17\0GPIO18\0GPIO19\0GPIO20\0GPIO21\0GPIO22\0GPIO23\0GPIO24\0GPIO25\0GPIO26\0GPIO27\0SDA0\0SCL0\0NC\0LAN_RUN\0CAM_GPIO1\0NC\0NC\0PWR_LOW_N\0NC\0NC\0USB_LIMIT\0NC\0PWM0_OUT\0CAM_GPIO0\0SMPS_SCL\0SMPS_SDA\0ETH_CLK\0PWM1_OUT\0HDMI_HPD_N\0STATUS_LED\0SD_CLK_R\0SD_CMD_R\0SD_DATA0_R\0SD_DATA1_R\0SD_DATA2_R\0SD_DATA3_R"; cu Michael |