re-adding the beagle list...
Thanks for your help. But it is getting complicated. :S
Ok. Lets keep it simple. Assume that i just want to light on a led from
MMC2_DAT7 whis is equal to GPIO_139 in Beagleboard.
I test GPIO's by exporting under /sys/class/gpio and echo > high to
direction. Works well under kernel ver. 3.0.x with Angstrom distro. My leds
are on.
Ok here is the story:
I am using your directions under eewiki with kernel 4.x + ubuntu.
1) First i tried to handle this from u-boot, so i pulled every MMC2_DAT* to
MUX_4 (Which is assigned to GPIO's for documentation) . Reboot again with
new u-boot image from SD. Nothing was happened. So i tought Kernel is
blocking GPIO behave of this ports.
Question 1: Does patching only u-boot is enough or necessary? Did i
missing something?
2) Then i start to investigate Kernel Device Tree file from
https://github.com/RobertCNelson/dtb-rebuilder/tree/4.1-ti/src/arm.
I found some documentation under dtb-rebuilder/Bindings/gpio/ . gpio.txt and
gpio-omap.txt. Read them.
Then I found that omap3-beagle.dts and omap3.dtsi are main files. And in
these files:
mmc2: mmc@480b4000 {
compatible = "ti,omap3-hsmmc";
reg = <0x480b4000 0x200>;
interrupts = <86>;
ti,hwmods = "mmc2";
dmas = <&sdma 47>, <&sdma 48>;
dma-names = "tx", "rx";
};
&mmc2 {
status = "disabled";
};
Acoording to this files i understand that mmc2 pins are handled by kernel
and disabled default. Next i deleted this files rebooted and tested again
still nothing was happened.
Leave the mmc2 disabled section..
Question 2: Why kernel still blocks this ports to behave like GPIO even i
remove them in device tree and applied mux_4 in u-boot?
3) Then i removed mmc comments and asked this question here. Now i tried
the example that you gave as:
&mmc2 {
status = "disabled";
};
still remains and i added:
&omap3_pmx_core {
.....
mmc2_pins: pinmux_mmc2_pins {
pinctrl-single,pins = <
0x016A (PIN_INPUT | MUX_MODE4) /* GPIO_139 -pin3 -mmc_dat_7 */
>;
};
}
And this part gives Error while "make":
&gpio139{
GPIO_139 {
gpio-hog;
gpios = <20 0>;
output-high;
line-name = "GPIO_139";
};
};
//'gpio139', not found at this line &gpio139{
options are &gpio1 -> &gpio6, pick the correct "bank" that gpio139 is in..
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/omap3.dtsi#n216
Then i removed and make again. Builded but stil nothing happens
Question 3: Must i remove mmc2 status="disabled" part?
Question 4: Where and how should i define &gpio139 or must i leave it as
&gpio1
Question 5: Is first part enough to test GPIO from /sys/class/gpio/ or must
i add tthe second part too? line-name = "GPIO_139"; What is it related with?
Question 6: Is 0x016A the offset of the register? According to what? Where
can i find the documentation of these adresses or offsets? In u-boot's
mux.h they differs.
This offset can be found in the dm3730 reference manual.
For example in omap3-beagle.dts > 0x0ac (PIN_OUTPUT | MUX_MODE0) /*
dss_data0.dss_data0 */
But in u-boot -> mux.h #define CONTROL_PADCONF_DSS_DATA0
0x00DC
I confused in there.
If you have time and if you may answer them it should be greaceful.
Regards,