Copyright clean-up (part 1):
[AROS.git] / arch / arm-raspi / i2c / i2c-bcm2835.c
blob949837159c79274992196ef1dc637209fb10e49c
1 /*
2 Copyright © 2010-2014, The AROS Development Team. All rights reserved.
3 $Id$
4 */
6 #include <aros/symbolsets.h>
7 #include <aros/debug.h>
8 #include <proto/exec.h>
10 #include <hidd/i2c.h>
12 #include <asm/bcm2835.h>
13 #include <asm/io.h>
15 #include "i2c-bcm2835.h"
17 void METHOD(I2CBCM2835, Hidd_I2C, PutByte)
19 while (!((*(volatile UBYTE *)BSC0_STATUS) & BSC_STATUS_DONE))
21 asm volatile ("mov r2,r2\n");
24 *(volatile UBYTE *)BSC0_DATALEN = 1;
25 *(volatile UBYTE *)BSC0_FIFO = msg->data;
27 *(volatile UBYTE *)BSC0_STATUS = BSC_CLEAR;
28 *(volatile UBYTE *)BSC0_CONTROL = BSC_WRITE;
31 void METHOD(I2CBCM2835, Hidd_I2C, GetByte)
33 while (!((*(volatile UBYTE *)BSC0_STATUS) & BSC_STATUS_DONE))
35 asm volatile ("mov r2,r2\n");
38 *(volatile UBYTE *)BSC0_DATALEN = 1;
39 *(volatile UBYTE *)BSC0_STATUS = BSC_CLEAR;
40 *(volatile UBYTE *)BSC0_CONTROL = BSC_READ;
42 *msg->data = *(volatile UBYTE *)BSC0_FIFO;
45 void I2CBCM2835_Init(void)
47 /* BSC0 is on GPIO 0 & 1 */
48 *(volatile UBYTE *)GPFSEL0 &= ~0x3f; // Mask out bits 0-5
49 *(volatile UBYTE *)GPFSEL0 |= 0x24; // Set bits 0-5 to binary '100100'
53 ADD2LIBS((STRPTR)"i2c.hidd", 0, static struct Library *, I2CBase);