I believe the pinmux gets setup in pinctrl_bind_pins() found in 
drivers/pinctrl.c.

pinctrl_bind_pins() gets called by really_probe(), line 291 of drivers/dd.c and 
then calls the gpio_of_helper_probe on line 316 or 320, so I don’t think this 
has anything to do with gpio-of-helper.c driver. Probably need to setup some 
debug statements in pinctrl_bind_pins() to see why this does not work. 

Regards,
John




> On Nov 27, 2015, at 7:25 PM, Charles Steinkuehler <[email protected]> 
> wrote:
> 
> I don't have time to dig into the full details, but IIRC this has
> popped up before.  I don't think the gpio-of-helper driver actually
> does anything (like setup the pinmux) if you're not actually
> _exporting_ any gpios.  But I could be wrong...it's been a while since
> I crawled through the code.
> 
> Oh, and your pinmux settings don't match the comments.  If you really
> want inputs with the pullup enabled, the value to use is 0x37, *NOT*
> 0x17.  It's important to enable the gpio receive buffer (bit 0x20) or
> you won't be able to read the value on the GPIO pin (IIRC it will
> always return zero).  If you really want outputs and just didn't
> update the comments, 0x17 is fine.
> 
> On 11/27/2015 2:14 PM, Riley Porter wrote:
>> Yes I am running:
>> 
>> *Linux beaglebone 4.1.1-bone10 #1 Tue Jul 7 01:15:35 UTC 2015 armv7l
>> GNU/Linux*
>> 
>> I followed your instructions but still am at a loss.  I was able to update
>> the device tree compiler and the kernel which is now:
>> 
>> *Linux beaglebone 4.1.13-ti-r33 #1 SMP PREEMPT Fri Nov 20 11:00:50 UTC 2015
>> armv7l GNU/Linux*
>> 
>> Perhaps describing my exact steps might shed some light on my screw up?
>> 
>> 
>> *This is the device tree I am testing with:*
>> 
>> 
>> /*
>>> snip for space
>>> */
>>> /dts-v1/;
>>> /plugin/;
>>> 
>>> /{
>>>       compatible = "ti,beaglebone", "ti,beaglebone-black";
>>>       part-number = "EBB-GPIO-Example";
>>>       version = "00A0";
>>> 
>>>       fragment@0 {
>>>             target = <&am33xx_pinmux>;
>>> 
>>> 
>>>             __overlay__ {
>>>                  ebb_example: EBB_GPIO_Example {
>>>                        pinctrl-single,pins = <
>>> 
>>> 
>>>                                /*=============  Inputs ================*/
>>>                                0x070 0x17  // P9_11 PINS$28 GPIO0_30 = 30
>>> Input Mode7 pullup
>>>                                0x078 0x17  // P9_12 PINS$30 GPIO1_28 = 60
>>> Input Mode7 pullup
>>>                                0x074 0x17  // P9_13 PINS$29 GPIO0_31 = 31
>>> Input Mode7 pullup
>>>                                0x048 0x17  // P9_14 PINS$18 GPIO1_18 = 50
>>> Input Mode7 pullup
>>>                                0x040 0x17  // P9_15 PINS$16 GPIO1_16 = 48
>>> Input Mode7 pullup
>>>                                0x04c 0x17  // P9_16 PINS$19 GPIO1_19 = 51
>>> Input Mode7 pullup
>>>                                0x15c 0x17  // P9_17 PINS$87 GPIO0_5  =  5
>>> Input Mode7 pullup
>>>                                0x158 0x17  // P9_18 PINS$86 GPIO0_4  =  4
>>> Input Mode7 pullup
>>> 
>>>                                /* OUTPUT  GPIO(mode7) 0x07 pulldown, 0x17
>>> pullup, 0x?f no pullup/down */
>>>                                /* INPUT   GPIO(mode7) 0x27 pulldown, 0x37
>>> pullup, 0x?f no pullup/down */
>>>> ;
>>>                  };
>>>             };
>>>       };
>>> 
>>>       fragment@1 {
>>>                target = <&ocp>;
>>>                __overlay__ {
>>>                        gpio_helper {
>>>                                compatible = "gpio-of-helper";
>>>                                status = "okay";
>>>                                pinctrl-names = "default";
>>>                                pinctrl-0 = <&ebb_example>;
>>>                        };
>>>                };
>>>        };
>>> };
>> 
>> 
>> 
>> I also removed ALL overlays from my system before doing this below.
>> Here is my output from slots and a python program to get the pins i wrote:
>> 
>> *root ~/bbb_stuff # **slots*
>> 
>> 
>> 
>> 
>> * 0: PF----  -1  1: PF----  -1  2: PF----  -1  3: PF----  -1  9: P-O-L-   0
>> Override Board Name,00A0,Override Manuf,EBB-GPIO-Example*
>> 
>> *root ~/bbb_stuff # ./getpins *
>> 
>> 
>> 
>> *==================================================Reading Pinux
>> Pins==================================================*
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> *pin 16 (44e10840.0) 00000027 pinctrl-singlepin 18 (44e10848.0) 00000027
>> pinctrl-singlepin 19 (44e1084c.0) 00000027 pinctrl-singlepin 28
>> (44e10870.0) 00000017 pinctrl-singlepin 29 (44e10874.0) 00000027
>> pinctrl-singlepin 30 (44e10878.0) 00000027 pinctrl-singlepin 86
>> (44e10958.0) 00000027 pinctrl-singlepin 87 (44e1095c.0) 00000027
>> pinctrl-single*
>> 
>> You can clearly see I have requested them all to be 0x17?
>> 
>> *Here are the alias's I am using:*
>> 
>> *pins='cat /sys/kernel/debug/pinctrl/44e10800.pinmux/pins'**slots='cat
>> /sys/devices/platform/bone_capemgr/slots'*
>> 
>> 
>> *This is the command i used to compile the dt.*
>> *dtc -O dtb -o EBB-GPIO-Example-00A0.dtbo -b 0 -@ EBB-GPIO-Example.dts*
>> 
>> *This is the command I used to install it:*
>> *echo  EBB-GPIO-Example-00A0 > "/sys/devices/platform/bone_capemgr/slots"*
>> 
>> 
>> *This is the dmesg output after installing the overlay:*
>> 
>> 
>> 
>> 
>> 
>> 
>> *[ 2629.259630] bone_capemgr bone_capemgr: part_number
>> 'EBB-GPIO-Example-00A0', version 'N/A'[ 2629.259679] bone_capemgr
>> bone_capemgr: slot #11: override[ 2629.259700] bone_capemgr bone_capemgr:
>> Using override eeprom data at slot 11[ 2629.259722] bone_capemgr
>> bone_capemgr: slot #11: 'Override Board Name,00A0,Override
>> Manuf,EBB-GPIO-Example'[ 2629.271307] gpio-of-helper ocp:gpio_helper:
>> ready[ 2629.271555] bone_capemgr bone_capemgr: slot #11: dtbo
>> 'EBB-GPIO-Example-00A0.dtbo' loaded; overlay id #0*
>> 
>> 
>> 
>> So any help guys would be really appreciated!  I am thinking that I must be
>> just doing something wrong.  Perhaps the example device tree I am using is
>> outdated?  Would someone be willing to share with me a GPIO device tree
>> that works with kernel 4.1?  Also I have tried the dt builder online:
>> 
>> http://kilobaser.com/blog/2014-07-28-beaglebone-black-devicetreeoverlay-generator#1gpiodto
>> 
>> But this seems to not work also.  Thanks again everyone.
>> 
>> 
>> Riley
>> 
>> On Thu, Nov 26, 2015 at 2:13 PM, John Syne <[email protected]> wrote:
>> 
>>> That is strange because it seems to be working for everyone else. What is
>>> your kernel version?
>>> 
>>> If you are using kernel version 4.1 or higher, then do the following on
>>> your BBB
>>> 
>>> git clone https://github.com/RobertCNelson/bb.org-overlays.git
>>> 
>>> Follow the instructions readme.md file. My guess is you don’t have the
>>> correct Device Tree Compiler, but this repo will install the correct
>>> version.
>>> 
>>> Regards,
>>> John
>>> 
>>> 
>>> 
>>> 
>>> On Nov 26, 2015, at 8:35 AM, Riley Porter <[email protected]> wrote:
>>> 
>>> Hey guys,
>>> 
>>> I have been fighting this for a few days now.  But it seems to me that no
>>> matter what I do I cannot get the pinmux'ing to work when applying overlays
>>> in debian.  I have tried 7.8 and 8.2 and either is really different.
>>> 
>>> I was looking around to see if I was the only one in this boat and it
>>> turns out I found a post on stack exchange that describes my issue
>>> perfectly.
>>> 
>>> Unfortunately the "answer" was to install angstrom.  I was hoping someone
>>> on the list would have some secret answer as to why applying an overlay was
>>> not changing the pinmux's?
>>> 
>>> I would very much like to stick with debian but if the answer is go back
>>> angstrom I guess I can live with that.
>>> 
>>> Thanks
>>> 
>>> --
>>> For more options, visit http://beagleboard.org/discuss
>>> ---
>>> You received this message because you are subscribed to the Google Groups
>>> "BeagleBoard" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an
>>> email to [email protected].
>>> For more options, visit https://groups.google.com/d/optout.
>>> 
>>> 
>>> --
>>> For more options, visit http://beagleboard.org/discuss
>>> ---
>>> You received this message because you are subscribed to the Google Groups
>>> "BeagleBoard" group.
>>> To unsubscribe from this group and stop receiving emails from it, send an
>>> email to [email protected].
>>> For more options, visit https://groups.google.com/d/optout.
>>> 
>> 
> 
> 
> -- 
> Charles Steinkuehler
> [email protected]
> 
> -- 
> For more options, visit http://beagleboard.org/discuss
> --- 
> You received this message because you are subscribed to the Google Groups 
> "BeagleBoard" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to