View difference between Paste ID: tSehd55H and MKtWJ8G8
SHOW: | | - or go back to the newest paste.
1
# from #beagle on Freenode
2
3
# use
4
5
# from bone_pinmux import set_pinmux_state
6
# https://pastebin.com/MKtWJ8G8
7
# set_pinmux_state( 'P8_37', 'uart' )
8
# set_pinmux_state( 'P8_38', 'uart' )
9
10
from glob import glob
11
from pathlib import Path
12
import errno
13
14
def pinmux_path( name ):
15
    paths = glob( '/sys/bus/platform/drivers/bone-pinmux-helper/*%s*/state' % name )
16
    if len(paths) == 0:
17
        raise KeyError( 'Pinmux node not found: ' + name )
18
    if len(paths) > 1:
19
        raise KeyError( 'Pinmux node ambiguous: ' + name )
20
    return Path( paths[0] )
21
22
def get_pinmux_state( name ):
23
    return pinmux_path( name ).read_text().rstrip()
24
25
def set_pinmux_state( name, state ):
26
    try:
27
        pinmux_path( name ).write_text( state )
28
    except OSError as err:
29
        if err.errno == errno.ENODEV:
30
            raise ValueError( 'Invalid state for ' + name + ': ' + state ) from None
31
        else:
32
            raise