bitbank2 / BB-CP

A faster replacement for FBTFT + FBCP
GNU General Public License v3.0
31 stars 8 forks source link

Attempting to get working with Waveshare 3.5 480x320 + OrangePiPCPlus #10

Open aenertia opened 6 years ago

aenertia commented 6 years ago

Hi there ;

a few things are not evident from the readme

1) Is the fbtft module required to be loaded or unloaded 2) The GPIO definitions refer to which allocation - sysfs is deprecated ; and I am using gpiod formatting (which provides block access). Sysfs is still there for the time-being I compiled with the gpiogeneric define for the SPI_LCD part - was this the right one to use as none of the other options seem available for sunxi/h3 SoC's? 3) I usually using the following init for the fbtft driver module options

`root@ruao01:~/SPI_LCD/pigpio#

cat /etc/modprobe.d/fbtft.conf options fbtft_device rotate=90 name=piscreen speed=16000000 gpios=reset:2,dc:71 txbuflen=32768 fps=25`

Which I translated as:

`root@ruao01:~/SPI_LCD/BB-CP#

./bbcp --spi_bus 0 --spi_freq 16000000 --lcd_rst 7 --lcd_dc 166`

But I get :

`root@ruao01:~/SPI_LCD/BB-CP#



 ./bbcp --spi_bus 0 --spi_freq 16000000 --lcd_rst 7 --lcd_dc 166
Error setting SPI mode
Error setting SPI speed
Failed to open the SPI bus
Error initializing the LCD/display`
> 

As the result when trying to launch

4) The bbcp program assumes that fb0 is the drm/hdmi output - but in the case where ONLY the spi screen is connected this is not a valid assumption. Currently I have to plug an HDMI 'dummy' capture card in at boot to enumerate correctly. It would probably be useful to accept a mirror --from --to option. 

Some general info/diags of the system under test follows:

> `Linux

ruao01 4.14.67-sunxi #130 SMP Sun Sep 2 22:03:18 CEST 2018 armv7l armv7l armv7l GNU/Linux root@ruao01:~/SPI_LCD/BB-CP# gpiodetect gpiochip0 [1c20800.pinctrl] (224 lines) gpiochip1 [1f02c00.pinctrl] (32 lines) root@ruao01:~/SPI_LCD/BB-CP# gpioinfo gpiochip0 - 224 lines: line 0: unnamed unused input active-high line 1: unnamed unused input active-high line 2: unnamed "fb_ili9486" output active-high [used] line 3: unnamed unused input active-high line 4: unnamed unused input active-high line 5: unnamed 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: unnamed unused input active-high line 11: unnamed unused input active-high line 12: unnamed unused input active-high line 13: unnamed unused input active-high line 14: unnamed unused input active-high line 15: unnamed "orangepi:red:status" output active-high [used] line 16: unnamed unused input active-high line 17: unnamed unused input active-high line 18: unnamed unused input active-high line 19: unnamed unused input active-high line 20: unnamed unused input active-high line 21: unnamed unused input active-high line 22: unnamed unused input active-high line 23: unnamed unused input active-high line 24: unnamed unused input active-high line 25: unnamed unused input active-high line 26: unnamed unused input active-high 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 line 32: unnamed unused input active-high line 33: unnamed unused input active-high line 34: unnamed unused input active-high line 35: unnamed unused input active-high line 36: unnamed unused input active-high line 37: unnamed unused input active-high line 38: unnamed unused input active-high line 39: unnamed unused input active-high line 40: unnamed unused input active-high line 41: unnamed unused input active-high line 42: unnamed unused input active-high line 43: unnamed unused input active-high line 44: unnamed unused input active-high line 45: unnamed unused input active-high line 46: unnamed unused input active-high line 47: unnamed unused input active-high line 48: unnamed unused input active-high line 49: unnamed unused input active-high line 50: unnamed unused input active-high line 51: unnamed unused input active-high line 52: unnamed unused input active-high line 53: unnamed unused input active-high line 54: unnamed unused input active-high line 55: unnamed unused input active-high line 56: unnamed unused input active-high line 57: unnamed unused input active-high line 58: unnamed unused input active-high line 59: unnamed unused input active-high line 60: unnamed unused input active-high line 61: unnamed unused input active-high line 62: unnamed unused input active-high line 63: unnamed unused input active-high line 64: unnamed unused input active-high line 65: unnamed unused input active-high line 66: unnamed unused input active-high line 67: unnamed unused input active-high line 68: unnamed unused input active-high line 69: unnamed unused input active-high line 70: unnamed unused input active-high line 71: unnamed "fb_ili9486" output active-high [used] line 72: unnamed unused input active-high line 73: unnamed unused input active-high line 74: unnamed unused input active-high line 75: unnamed unused input active-high line 76: unnamed unused input active-high line 77: unnamed unused input active-high line 78: unnamed unused input active-high line 79: unnamed unused input active-high line 80: unnamed unused input active-high line 81: unnamed unused input active-high line 82: unnamed unused input active-high line 83: unnamed unused input active-high line 84: unnamed unused input active-high line 85: unnamed unused input active-high line 86: unnamed unused input active-high line 87: unnamed unused input active-high line 88: unnamed unused input active-high line 89: unnamed unused input active-high line 90: unnamed unused input active-high line 91: unnamed unused input active-high line 92: unnamed unused input active-high line 93: unnamed unused input active-high line 94: unnamed unused input active-high line 95: unnamed unused input active-high line 96: unnamed unused input active-high line 97: unnamed unused input active-high line 98: unnamed unused input active-high line 99: unnamed unused input active-high line 100: unnamed unused input active-high line 101: unnamed unused input active-high line 102: unnamed unused input active-high line 103: unnamed unused input active-high line 104: unnamed unused input active-high line 105: unnamed unused input active-high line 106: unnamed unused input active-high line 107: unnamed unused input active-high line 108: unnamed unused input active-high line 109: unnamed unused input active-high line 110: unnamed unused input active-high line 111: unnamed unused input active-high line 112: unnamed unused input active-high line 113: unnamed unused input active-high line 114: unnamed unused input active-high line 115: unnamed unused input active-high line 116: unnamed unused input active-high line 117: unnamed unused input active-high line 118: unnamed unused input active-high line 119: unnamed unused input active-high line 120: unnamed unused input active-high line 121: unnamed unused input active-high line 122: unnamed unused input active-high line 123: unnamed unused input active-high line 124: unnamed unused input active-high line 125: unnamed unused input active-high line 126: unnamed unused input active-high line 127: unnamed unused input active-high line 128: unnamed unused input active-high line 129: unnamed unused input active-high line 130: unnamed unused input active-high line 131: unnamed unused input active-high line 132: unnamed unused input active-high line 133: unnamed unused input active-high line 134: unnamed unused input active-high line 135: unnamed unused input active-high line 136: unnamed unused input active-high line 137: unnamed unused input active-high line 138: unnamed unused input active-high line 139: unnamed unused input active-high line 140: unnamed unused input active-high line 141: unnamed unused input active-high line 142: unnamed unused input active-high line 143: unnamed unused input active-high line 144: unnamed unused input active-high line 145: unnamed unused input active-high line 146: unnamed unused input active-high line 147: unnamed unused input active-high line 148: unnamed unused input active-high line 149: unnamed unused input active-high line 150: unnamed unused input active-high line 151: unnamed unused input active-high line 152: unnamed unused input active-high line 153: unnamed unused input active-high line 154: unnamed unused input active-high line 155: unnamed unused input active-high line 156: unnamed unused input active-high line 157: unnamed unused input active-high line 158: unnamed unused input active-high line 159: unnamed unused input active-high line 160: unnamed unused input active-high line 161: unnamed unused input active-high line 162: unnamed unused input active-high line 163: unnamed unused input active-high line 164: unnamed unused input active-high line 165: unnamed unused input active-high line 166: unnamed "cd" input active-high [used] line 167: unnamed unused input active-high line 168: unnamed unused input active-high line 169: unnamed unused input active-high line 170: unnamed unused input active-high line 171: unnamed unused input active-high line 172: unnamed unused input active-high line 173: unnamed unused input active-high line 174: unnamed unused input active-high line 175: unnamed unused input active-high line 176: unnamed unused input active-high line 177: unnamed unused input active-high line 178: unnamed unused input active-high line 179: unnamed unused input active-high line 180: unnamed unused input active-high line 181: unnamed unused input active-high line 182: unnamed unused input active-high line 183: unnamed unused input active-high line 184: unnamed unused input active-high line 185: unnamed unused input active-high line 186: unnamed unused input active-high line 187: unnamed unused input active-high line 188: unnamed unused input active-high line 189: unnamed unused input active-high line 190: unnamed unused input active-high line 191: unnamed unused input active-high line 192: unnamed unused input active-high line 193: unnamed unused input active-high line 194: unnamed unused input active-high line 195: unnamed unused input active-high line 196: unnamed unused input active-high line 197: unnamed unused input active-high line 198: unnamed unused input active-high line 199: unnamed unused input active-high line 200: unnamed unused input active-high line 201: unnamed unused input active-high line 202: unnamed unused input active-high line 203: unnamed unused input active-high line 204: unnamed "usb0_id_det" input active-high [used] line 205: unnamed unused input active-high line 206: unnamed unused input active-high line 207: unnamed unused input active-high line 208: unnamed unused input active-high line 209: unnamed unused input active-high line 210: unnamed unused input active-high line 211: unnamed unused input active-high line 212: unnamed unused input active-high line 213: unnamed unused input active-high line 214: unnamed unused input active-high line 215: unnamed unused input active-high line 216: unnamed unused input active-high line 217: unnamed unused input active-high line 218: unnamed unused input active-high line 219: unnamed unused input active-high line 220: unnamed unused input active-high line 221: unnamed unused input active-high line 222: unnamed unused input active-high line 223: unnamed unused input active-high gpiochip1 - 32 lines: line 0: unnamed unused input active-high line 1: unnamed unused input active-high line 2: unnamed "usb0-vbus" output active-high [used] line 3: unnamed unused input active-high line 4: unnamed unused input active-high line 5: unnamed unused input active-high line 6: unnamed unused input active-high line 7: unnamed "reset" output active-low [used] line 8: unnamed unused input active-high line 9: unnamed unused input active-high line 10: unnamed "orangepi:green:pwr" output active-high [used] line 11: unnamed unused input active-high line 12: unnamed unused input active-high line 13: unnamed unused input active-high line 14: unnamed unused input active-high line 15: unnamed unused input active-high line 16: unnamed unused input active-high line 17: unnamed unused input active-high line 18: unnamed unused input active-high line 19: unnamed unused input active-high line 20: unnamed unused input active-high line 21: unnamed unused input active-high line 22: unnamed unused input active-high line 23: unnamed unused input active-high line 24: unnamed unused input active-high line 25: unnamed unused input active-high line 26: unnamed unused input active-high 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 root@ruao01:~/SPI_LCD/BB-CP# gpioinfo |grep "[used" line 2: unnamed "fb_ili9486" output active-high [used] line 15: unnamed "orangepi:red:status" output active-high [used] line 71: unnamed "fb_ili9486" output active-high [used] line 166: unnamed "cd" input active-high [used] line 204: unnamed "usb0_id_det" input active-high [used] line 2: unnamed "usb0-vbus" output active-high [used] line 7: unnamed "reset" output active-low [used] line 10: unnamed "orangepi:green:pwr" output active-high [used] root@ruao01:~/SPI_LCD/BB-CP# modprobe ads ads1015 ads7828 ads7846_device ads7871 root@ruao01:~/SPI_LCD/BB-CP# modprobe ads7846_device root@ruao01:~/SPI_LCD/BB-CP# gpioinfo |grep "[used" line 1: unnamed "ads7846_pendown" input active-high [used] line 2: unnamed "fb_ili9486" output active-high [used] line 15: unnamed "orangepi:red:status" output active-high [used] line 71: unnamed "fb_ili9486" output active-high [used] line 166: unnamed "cd" input active-high [used] line 204: unnamed "usb0_id_det" input active-high [used] line 2: unnamed "usb0-vbus" output active-high [used] line 7: unnamed "reset" output active-low [used] line 10: unnamed "orangepi:green:pwr" output active-high [used]



> root@ruao01:~/SPI_LCD/BB-CP#`

The spi screen I am using is this one:
https://www.waveshare.com/3.5inch-rpi-lcd-a.htm
bitbank2 commented 6 years ago

BB-CP requires that fbtft is NOT RUNNING, otherwise it would interfere with access to the LCD. The GPIO part is a lot simpler than you make it out to be. As I state in the SPI_LCD project, the numbers passed to my functions for GPIO are the HEADER PIN numbers, not BCM, not AllWinner numbers, just pins. e.g. if you connect the D/C line to header pin 18, then you pass 18 to my functions. You may need to add a pin to GPIO number table to support your board since I don't own that board, I can't test it. If you do, please do a pull request.

Before doing anything with BB-CP, make sure SPI_LCD is working by running the sample program, then BB-CP will be able to run.