Here's a dts file that works for me for r30/31
You can comment out or in pins you need or don't need.
All pins are configured for r30 (output), to use r31 (input) change the
0x05 to 0x06 respectively.
Note that this uses pins used by hdmi/lcd and mmc1 (the onboard emmc of
the BBB).
You need to disable the capes for these first if you want to use these
pins as well:
http://www.logicsupply.com/blog/2013/07/18/disabling-the-beaglebone-black-hdmi-cape/
I tested all pins with my oscilloscope, they appear to work in this
configuration.
Florian
On 19.05.2014 07:08, foreverska wrote:
> Has anyone used the Pin Mux Utility? I'm trying to enable R30 and R31
> on my PRUs. I've had a rough time enabling device trees so I decided
> to try and use the Pin Mux Utility. It seems relatively easy to use
> and it produces nice .h files but the compiler has an issue with some
> of the code.
>
> |
> #define MUX_VAL(OFFSET,VALUE)\
> writel((VALUE), AM335X_CTRL_BASE + (OFFSET));
> |
>
> Neither GCC or G++ know what to make of writel(). They say it's not
> defined and such. I've read something about linux/io.h but I haven't
> been able to find it. Am I barking up a tree with this utility?
>
> Those who have successfully done Pin Muxing, by what means? I've
> tried doing the hipster circuit tutorial but debian doesn't like the
> tree so says dmesg. I'm not sold on the tree method anyways because I
> wouldn't mind being able to alter the muxing between compiles not
> restarts.
> --
> 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]
> <mailto:[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.
/dts-v1/;
/plugin/;
/ {
compatible = "ti,beaglebone", "ti,beaglebone-black";
/* identification */
part-number = "ledmatrix";
/* state the resources this cape uses */
exclusive-use =
"P9.25",
"P9.27",
"P9.28",
"P9.29",
"P9.30",
"P9.31",
"P9.41.1",
"P9.42.1",
"pru";
fragment@0 {
target = <&am33xx_pinmux>;
__overlay__ {
ledmatrix: pinmux_myledmatrix {
pinctrl-single,pins = <
/* offset<whitespace>mux mode */
/*
mode | IEN | <Pulldown pullup pulloff>
#define IDIS (0 << 5) 0x00
#define IEN (1 << 5) 0x20 0b00100000
#define PD (0 << 3) 0x00
#define PU (2 << 3) 0x10 0b00010000
#define OFF (1 << 3) 0x08 0b00001000
*/
/**** P8 ****/
/* PIN PROC PINCTRL mode NAME MODE0 MODE1
MODE2 MODE3 MODE4 MODE5 MODE6
MODE7
/* 3 R9 0x018 0x00 gpmc_ad6 gpmc_ad6 mmc1_dat6
- - - - -
gpio1[6] */
/* 4 T9 0x01c 0x00 gpmc_ad7 gpmc_ad7 mmc1_dat7
- - - - -
gpio1[7] */
/* 5 R8 0x008 0x00 gpmc_ad2 gpmc_ad2 mmc1_dat2
- - - - -
gpio1[2] */
/* 6 T8 0x00c 0x00 gpmc_ad3 gpmc_ad3 mmc1_dat3
- - - - -
gpio1[3] */
/* 7 R7 0x090 0x00 gpmc_advn_ale gpmc_advn_ale -
timer4 - - - -
gpio2[2] */
/* 8 T7 0x094 0x00 gpmc_oen_ren gpmc_oen_ren -
timer7 - - - -
gpio2[3] */
/* 9 T6 0x09c 0x00 gpmc_be0n_cle gpmc_be0n_cle -
timer5 - - - -
gpio2[5] */
/* 10 U6 0x098 0x00 gpmc_wen gpmc_wen -
timer6 - - - -
gpio2[4] */
/* 11 R12*/ 0x034 0x06 /* gpmc_ad13 gpmc_ad13
lcd_data18 mmc1_dat5 mmc2_dat1 eQEP2B_in -
pru_r30_15 gpio1[13] */
/* 12 T12*/ 0x030 0x06 /* gpmc_ad12 gpmc_ad12
lcd_data19 mmc1_dat4 mmc2_dat0 eQEP2A_IN -
pru_r30_14 gpio1[12] */
/* 13 T10 0x024 0x00 gpmc_ad9 gpmc_ad9
lcd_data22 mmc1_dat1 mmc2_dat5 ehrpwm2B -
- gpio0[23] */
/* 14 T11 0x028 0x00 gpmc_ad10 gpmc_ad10
lcd_data21 mmc1_dat2 mmc2_dat6 ehrpwm2_tripzone_in -
- gpio0[26] */
/* 15 U13 0x03c 0x06 gpmc_ad15 gpmc_ad15
lcd_data16 mmc1_dat7 mmc2_dat3 eQEP2_strobe -
??? gpio1[15] */
/* 16 V13 0x038 0x06 gpmc_ad14 gpmc_ad14
lcd_data17 mmc1_dat6 mmc2_dat2 eQEP2_index -
??? gpio1[14] */
/* 17 U12 0x02c 0x00 gpmc_ad11 gpmc_ad11
lcd_data20 mmc1_dat3 mmc2_dat7 ehrpwm0_synco -
- gpio0[27] */
/* 18 V12 0x08c 0x00 gpmc_clk gpmc_clk
lcd_memory_clk gpmc_wait1 mmc2_clk - -
mcasp0_fsr gpio2[1] */
/* 19 U10 0x020 0x00 gpmc_ad8 gpmc_ad8
lcd_data23 mmc1_dat0 mmc2_dat4 ehrpwm2A -
gpio0[22] */
/* 20 V9 */ 0x084 0x05 /* gpmc_csn2 gpmc_csn2 gpmc_be1n
mmc1_cmd - - pru1_r30_13
pru1_r31_13 gpio1[31] */
/* 21 U9 */ 0x080 0x05 /* gpmc_csn1 gpmc_csn1 gpmc_clk
mmc1_clk - - pru1_r30_12
pru1_r31_12 gpio1[30] */
/* 22 V8 0x014 0x00 gpmc_ad5 gpmc_ad5 mmc1_dat5
- - - - -
gpio1[5] */
/* 23 U8 0x010 0x00 gpmc_ad4 gpmc_ad4 mmc1_dat4
- - - - -
gpio1[4] */
/* 24 V7 0x004 0x00 gpmc_ad1 gpmc_ad1 mmc1_dat1
- - - - -
gpio1[1] */
/* 25 U7 0x000 0x00 gpmc_ad0 gpmc_ad0 mmc1_dat0
- - - - -
gpio1[0] */
/* 26 V6 0x00c 0x00 gpmc_csn0 gpmc_csn0
- - - - -
gpio1[29] */
/* 27 U5 */ 0x0e0 0x05 /* lcd_vsync lcd_vsync gpmc_a8
- - - pru1_r30_8
pru1_r31_8 gpio2[22] */
/* 28 V5 */ 0x0e8 0x05 /* lcd_pclk lcd_pclk gpmc_a10
- - - pru1_r30_10
pru1_r31_10 gpio2[24] */
/* 29 R5 */ 0x0e4 0x05 /* lcd_hsync lcd_hsync gpmc_a9
- - - pru1_r30_9
pru1_r31_9 gpio2[23] */
/* 30 R6 */ 0x0ec 0x05 /* lcd_ac_bias_en lcd_ac_bias_en gpmc_a11
- - - pru1_r30_11
pru1_r31_11 gpio2[25] */
/*bp 31 V4 0x0d8 0x00 lcd_data14 lcd_data14 gpmc_a18
eQEP1_index mcasp0_axr1 uart5_rxd -
uart5_ctsn gpio0[10] */
/*bp 32 T5 0x0dc 0x00 lcd_data15 lcd_data15 gpmc_a19
eQEP1_strobe mcasp0_ahclkx mcasp0_axr3 -
uart5_rtsn gpio0[11] */
/*bp 33 V3 0x0d4 0x00 lcd_data13 lcd_data13 gpmc_a17
eQEP1B_in mcasp0_fsr mcasp0_axr3 -
uart4_rtsn gpio0[9] */
/*bp 34 U4 0x0cc 0x00 lcd_data11 lcd_data11 gpmc_a15
ehrpwm1B mcasp0_ahclkr mcasp0_axr2 -
uart3_rtsn gpio2[17] */
/*bp 35 V2 0x0d0 0x00 lcd_data12 lcd_data12 gpmc_a16
eQEP1A_in mcasp0_aclkr mcasp0_axr2 -
uart4_ctsn gpio0[8] */
/*bp 36 U3 0x0c8 0x00 lcd_data10 lcd_data10 gpmc_a14
ehrpwm1A mcasp0_axr0 - -
uart3_ctsn gpio2[16] */
/*bp 37 U1 0x0c0 0x00 lcd_data8 lcd_data8 gpmc_a12
ehrpwm1_tripzone_in mcasp0_aclkx uart5_txd -
uart2_ctsn gpio2[14] */
/*bp 38 U2 0x0c4 0x00 lcd_data9 lcd_data9 gpmc_a13
ehrpwm0_synco mcasp0_fsx uart5_rxd -
uart2_rtsn gpio2[15] */
/*bp 39 T3 */ 0x0b8 0x05 /* lcd_data6 lcd_data6 gpmc_a6
- eQEP2_index - pru1_r30_6
pru1_r31_6 gpio2[12] */
/*bp 40 T4 */ 0x0bc 0x05 /* lcd_data7 lcd_data7 gpmc_a7
- eQEP2_strobe pr1_edio_data_out7 pru1_r30_7
pru1_r31_7 gpio2[13] */
/*bp 41 T1 */ 0x0b0 0x05 /* lcd_data4 lcd_data4 gpmc_a4
- eQEP2A_in - pru1_r30_4
pru1_r31_4 gpio2[10] */
/*bp 42 T2 */ 0x0b4 0x05 /* lcd_data5 lcd_data5 gpmc_a5
- eQEP2B_in - pru1_r30_5
pru1_r31_5 gpio2[11] */
/*bp 43 R3 */ 0x0a8 0x05 /* lcd_data2 lcd_data2 gpmc_a2
- ehrpwm2_tripzone_in - pru1_r30_2
pru1_r31_2 gpio2[8] */
/*bp 44 R4 */ 0x0ac 0x05 /* lcd_data3 lcd_data3 gpmc_a3
- ehrpwm0_synco - pru1_r30_3
pru1_r31_3 gpio2[9] */
/*bp 45 R1 */ 0x0a0 0x05 /* lcd_data0 lcd_data0 gpmc_a0
- ehrpwm2A - pru1_r30_0
pru1_r31_0 gpio2[6] */
/*bp 46 R2 */ 0x0a4 0x05 /* lcd_data1 lcd_data1 gpmc_a1
- ehrpwm2B - pru1_r30_1
pru1_r31_1 gpio2[7] */
/* * bp == boot pin, do not drive while in reset */
/**** P9 ****/
/* PIN PROC PINCTRL mode NAME MODE0 MODE1
MODE2 MODE3 MODE4 MODE5
MODE6 MODE7 */
/* 11 T17 0x000 0x00 gpmc_wait0 gpmc_wait0 mii2_crs
gpmc_csn4 rmii2_crs_dv mmc1_sdcd -
uart4_rxd gpio0[30] */
/* 12 U18 0x008 0x00 gpmc_be1n gpmc_be1n mii2_col
gpmc_csn6 mmc2_dat3 gpmc_dir -
mcasp0_aclkr gpio1[28] */
/* 13 U17 0x004 0x00 gpmc_wpn gpmc_wpn mii2_rxerr
gpmc_csn5 rmii2_rxerr mmc2_sdcd -
uart4_txd gpio0[31] */
/* 14 U14 0x048 0x00 gpmc_a2 gpmc_a2 mii2_txd3
rgmii2_td3 mmc2_dat1 gpmc_a18 -
ehrpwm1A gpio1[18] */
/* 15 R13 0x040 0x00 gpmc_a0 gpmc_a0 gmii2_txen
rmii2_tctl mii2_txen gpmc_a16 -
ehrpwm1_tripzone_input gpio1[16] */
/* 15 T13 0x088 0x00 gpmc_csn3 gpmc_csn3 gpmc_a3
rmii2_crs_dv mmc2_cmd pr1_mii0_crs pr1_mdio_data
EMU4 gpio2[0] */
/* 16 T14 0x04c 0x00 gpmc_a3 gpmc_a3 mii2_txd2
rgmii2_td2 mmc2_dat2 gpmc_a19 -
ehrpwm1B gpio1[19] */
/* 17 A16 0x15c 0x00 spi0_cs0 spi0_cs0 mmc2_sdwp
i2c1_scl ehrpwm0_synci - - -
gpio0[5] */
/* 18 B16 0x158 0x00 spi0_d1 spi0_d1 mmc1_sdwp
i2c1_sda ehrpwm0_tripzone - - -
gpio0[4] */
/* 19 D17 0x17c 0x00 uart1_rtsn uart1_rtsn timer5
dcan0_rx i2c2_scl spi1_cs1 - -
gpio0[13] */
/* 20 D18 0x178 0x00 uart1_ctsn uart1_ctsn timer6
dcan0_tx i2c2_sda spi1_cs0 - -
gpio0[12] */
/* 21 B17 0x154 0x00 spi0_d0 spi0_d0 uart2_txd
i2c2_scl ehrpwm0B - -
EMU3 gpio0[3] */
/* 22 A17 0x150 0x00 spi0_sclk spi0_sclk uart2_rxd
i2c2_sda ehrpwm0A - -
EMU2 gpio0[2] */
/* 23 V14 0x044 0x00 gpmc_a1 gpmc_a1 gmii2_rxdv
rgmii2_rxdv mmc2_dat0 gpmc_a17 -
ehrpwm0_synco gpio1[17] */
/* 24 D15 0x184 0x00 uart1_txd uart1_txd mmc2_sdwp
dcan1_rx i2c1_scl - -
pru0_r31_16 gpio0[15] */
/* 25 A14 */ 0x1ac 0x05 /* mcasp0_ahclkx mcasp0_ahclkx
eQEP0_strobe mcasp0_axr3 mcasp1_axr1 EMU4
pru0_r30_7 pru0_r31_7 gpio3[21] */
/* 26 D16 0x180 0x00 uart1_rxd uart1_rxd mmc1_sdwp
dcan1_tx i2c1_sda - -
pru1_r30_16 gpio0[14] */
/* 27 C13 */ 0x1a4 0x05 /* mcasp0_fsr mcasp0_fsr eQEP0B_in
mcasp0_axr3 mcasp1_fsx EMU2 pru0_r30_5
pru0_r31_5 gpio3[19] */
/* 28 C12 */ 0x19c 0x05 /* mcasp0_ahclkr mcasp0_ahclkr
ehrpwm0_synci mcasp0_axr2 spi1_cs0 ecap2_in_pwm2_out
pru0_r30_3 pru0_r31_3 gpio3[17] */
/* 29 B13 */ 0x194 0x05 /* mcasp0_fsx mcasp0_fsx ehrpwm0B
- spi1_d0 mmc1_sdcd pru0_r30_1
pru0_r31_1 gpio3[15] */
/* 30 D12 */ 0x198 0x05 /* mcasp0_axr0 mcasp0_axr0
ehrpwm0_tripzone - spi1_d1 mmc2_sdcd
pru0_r30_2 pru0_r31_2 gpio3[16] */
/* 31 A13 */ 0x190 0x05 /* mcasp0_aclkx mcasp0_aclkx ehrpwm0A
- spi1_sclk mmc0_sdcd pru0_r30_0
pru0_r31_0 gpio3[14] */
/* 41 D14 */ 0x1b4 0x2f /* xdma_event_intr1 xdma_event_intr1 -
tclkin clkout2 timer7 -
EMU3 gpio0[20] */
/* 41 D13 */ 0x1A8 0x05 /* mcasp0_axr1 mcasp0_axr1
eQEPO_index - mcasp1_axr0 EMU3
pru0_r30_6 pru0_r31_6 gpio3[20] */
/* 42 C18 */ 0x164 0x2f /* ecap0_in_pwm0_out ecap0_in_pwm0_out uart3_txd
spi1_cs1 pr1_ecap0_ecap_cap_in_apwm_o spi1_sclk mmc0_sdwp
xdma_event_intr2 gpio0[7] */
/* 42 B12 */ 0x1A0 0x05 /* mcasp0_aclkr mcasp0_aclkr eQEPO_in
mcasp0_axr2 mcasp1_aclkx - pru0_r30_4
pru0_r31_4 gpio3[18] */
>;
};
};
};
fragment@1{
target = <&pruss>;
__overlay__ {
pinctrl-names = "default";
pinctrl-0 = <&ledmatrix>;
status = "okay";
};
};
};