I just found out from this answer here that the GPIO situation is a bit more complicated than I thought. GPIO Pin 13 seems to be only named “13” in the sysfs, while the kernel side refers to it as 76.
When I load the driver in the following way, I get a proper 1.8V D/C signal similar to the one from the Pi:
insmod \
/lib/modules/3.18.122/kernel/drivers/video/fbdev/fbtft/fbtft_device.ko \
name=adafruit28 \
busnum=1 \
gpios=dc:76 \
debug=5
Display is still not working though (although the flickering increased…). I guess I need to use level shifters to get to 3.3V logic. Or can I somehow use the SPI on the RaPi connector (which is 3.3V) easily from kernel side so fbtft
can use it? I found this thread but they seems to use spidev
from the userspace side, so probably not usable.
EDIT:
For reference I added the table from drivers/gpio/gpiolib-sysfs.c
(3.18.122, legato 18.10.3) here:
static struct ext_gpio_map ext_gpio_wp[]={
{"1", -1,FUNCTION_UNALLOCATED},
{"2", 38,FUNCTION_UNALLOCATED},
{"3", -1,FUNCTION_UNALLOCATED},
{"4", 30,FUNCTION_UNALLOCATED},
{"5", -1,FUNCTION_UNALLOCATED},
{"6", 1022,FUNCTION_UNALLOCATED},
{"7", 16,FUNCTION_UNALLOCATED},
{"8", 58,FUNCTION_UNALLOCATED},
{"9", -1,FUNCTION_UNALLOCATED},
{"10", -1,FUNCTION_UNALLOCATED},
{"11", -1,FUNCTION_UNALLOCATED},
{"12", -1,FUNCTION_UNALLOCATED},
{"13", 76,FUNCTION_UNALLOCATED},
{"14", -1,FUNCTION_UNALLOCATED},
{"15", -1,FUNCTION_UNALLOCATED},
{"16", -1,FUNCTION_UNALLOCATED},
{"17", -1,FUNCTION_UNALLOCATED},
{"18", -1,FUNCTION_UNALLOCATED},
{"19", -1,FUNCTION_UNALLOCATED},
{"20", -1,FUNCTION_UNALLOCATED},
{"21", 8,FUNCTION_UNALLOCATED},
{"22", 9,FUNCTION_UNALLOCATED},
{"23", 10,FUNCTION_UNALLOCATED},
{"24", 11,FUNCTION_UNALLOCATED},
{"25", 51,FUNCTION_UNALLOCATED},
{"26", -1,FUNCTION_UNALLOCATED},
{"27", -1,FUNCTION_UNALLOCATED},
{"28", 45,FUNCTION_UNALLOCATED},
{"29", 46,FUNCTION_UNALLOCATED},
{"30", 47,FUNCTION_UNALLOCATED},
{"31", 48,FUNCTION_UNALLOCATED},
{"32", 77,FUNCTION_UNALLOCATED},
{"33", 78,FUNCTION_UNALLOCATED},
{"34", -1,FUNCTION_UNALLOCATED},
{"35", 37,FUNCTION_UNALLOCATED},
#ifdef CONFIG_GPIO_SWIMCU
{"36", SWIMCU_GPIO_TO_SYS(0),FUNCTION_EMBEDDED_HOST},
{"37", SWIMCU_GPIO_TO_SYS(1),FUNCTION_EMBEDDED_HOST},
{"38", SWIMCU_GPIO_TO_SYS(2),FUNCTION_EMBEDDED_HOST},
{"39", -1,FUNCTION_UNALLOCATED},
{"40", SWIMCU_GPIO_TO_SYS(3),FUNCTION_EMBEDDED_HOST},
{"41", SWIMCU_GPIO_TO_SYS(4),FUNCTION_EMBEDDED_HOST},
#else /* CONFIG_GPIO_SWIMCU */
{"36", -1,FUNCTION_UNALLOCATED},
{"37", -1,FUNCTION_UNALLOCATED},
{"38", -1,FUNCTION_UNALLOCATED},
{"39", -1,FUNCTION_UNALLOCATED},
{"40", -1,FUNCTION_UNALLOCATED},
{"41", -1,FUNCTION_UNALLOCATED},
#endif /* !CONFIG_GPIO_SWIMCU */
{"42", 79,FUNCTION_UNALLOCATED},
{"43", -1,FUNCTION_UNALLOCATED},
{"44", -1,FUNCTION_UNALLOCATED},
{"45", -1,FUNCTION_UNALLOCATED},
{"46", -1,FUNCTION_UNALLOCATED},
{"M1", -1,FUNCTION_UNALLOCATED},
{"M2", -1,FUNCTION_UNALLOCATED},
{"M3", -1,FUNCTION_UNALLOCATED},
{"M4", -1,FUNCTION_UNALLOCATED},
{GPIO_NAME_RI,25,FUNCTION_UNALLOCATED}
};