diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2019-07-28 11:39:57 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2019-07-28 11:39:57 +0200 |
commit | 05f9a66fd4ea4a3744847d354bda9a1f4aefcdbc (patch) | |
tree | 5dd3c46f7c05d5d554ae7d7106dce5eb958d7c52 /sys/src/9/bcm | |
parent | 8630bd35a636a463bcf7211aaa0f014600013463 (diff) |
bcm, bcm64: add vcore support for raspberry pi 3 GPIO expander
Diffstat (limited to 'sys/src/9/bcm')
-rw-r--r-- | sys/src/9/bcm/fns.h | 1 | ||||
-rw-r--r-- | sys/src/9/bcm/vcore.c | 30 |
2 files changed, 28 insertions, 3 deletions
diff --git a/sys/src/9/bcm/fns.h b/sys/src/9/bcm/fns.h index 0853f7614..125dd4f4c 100644 --- a/sys/src/9/bcm/fns.h +++ b/sys/src/9/bcm/fns.h @@ -32,6 +32,7 @@ extern void dmaflush(int, void*, ulong); extern void dmastart(int, int, int, void*, void*, int); extern int dmawait(int); extern uintptr dmaaddr(void *va); +extern void egpset(uint, int); extern int fbblank(int); extern void* fbinit(int, int*, int*, int*); extern u32int farget(void); diff --git a/sys/src/9/bcm/vcore.c b/sys/src/9/bcm/vcore.c index 53293b0d4..9b9b8cc1a 100644 --- a/sys/src/9/bcm/vcore.c +++ b/sys/src/9/bcm/vcore.c @@ -40,9 +40,18 @@ enum { TagGetpower = 0x00020001, TagSetpower = 0x00028001, Powerwait = 1<<1, - TagGetclkspd= 0x00030002, - TagGetclkmax= 0x00030004, - TagSetclkspd= 0x00038002, + TagGetclkstate = 0x00030001, + TagGetclkspd = 0x00030002, + TagGetclkmax = 0x00030004, + TagSetclkstate = 0x00038001, + TagSetclkspd = 0x00038002, + + TagGetEgpioState= 0x00030041, + TagSetEgpioState= 0x00038041, + TagSetSdhostClk = 0x00038042, + TagGetEgpioConf = 0x00030043, + TagSetEgpioConf = 0x00038043, + TagGettemp = 0x00030006, TagFballoc = 0x00040001, TagFbfree = 0x00048001, @@ -388,3 +397,18 @@ vgpset(uint port, int on) vgpio.counts[port] = (vgpio.incs << 16) | vgpio.decs; vgpio.ison = on; } + +/* + * Raspberry Pi GPIO expander (Pi 3 and 4) + */ +void +egpset(uint port, int on) +{ + u32int buf[2]; + + if(port >= 8) + return; + buf[0] = 128 + port; + buf[1] = on; + vcreq(TagSetEgpioState, buf, sizeof(buf), sizeof(buf)); +} |