08-29-2016, 01:30 AM
(08-25-2016, 11:17 AM)MarkHaysHarris777 Wrote:(08-25-2016, 08:24 AM)martind1983 Wrote: Hi Mark.
First off, thank you for comprehensive help.
Thus, as I got your point. I do not have to modify device tree because of pins connected to some peripheral, just to stop and unload driver should be enough. However, this is not completely through for every peripheral. Thus, for some of them I also have to modify device tree and un-connect so pins (I want to use) and which are also dedicated to peripherals.
For example: I cannot find that UART peripheral driver to which PB0, PB1 would be loaded in the kernel. Does it mean, that I also have to modify dts/dtb to un-connect these two pins from UART2 in device tree?
Is such a rule valid for all GPIOs connected to peripheral which information about is enumerated in DTS?
Thank you. Martin
One more question. All the pins led out on the board and which are also dedicated to some peripherals I have to first turn off special functionality before using them as normal GPIO?
No, not necessarily.
... as long as the pins (channels) are not actually being used 'now' you can use them for what-ever you want. But, that's a big if. If a driver is running that uses the channel, you will need to stop and unload the driver... but, you don't necessarily have to edit the dtb|dts in order to do this.
That said, it is best to use GPIO pins that are 'free' first. On the diagram , the green and then maybe the blue. The main exception right now is the pin(7) GPIO04 which is s-pwm and used for the LCD backlight... because it is on a pwm channel even though you can turn it on and off (if you have the correct base address, or use sysfs) it still doesn't work right, because it is 'very' dim ... and, it has a pwm signal on it. In this case you must not only edit the dtb|dts, but also unassociate the pin, and you need to stop the driver and unload it (a lot of work, just use another GPIO pin).