ODROID-M1/S: Rename/Update Read/Write Byte and DS LEVEL
Signed-off-by: Steve Jeong <steve@how2flow.net> Change-Id: I4e803c6410efb4924473b17e6857848ee7edbe0a
This commit is contained in:
@@ -524,22 +524,22 @@ static int _getDrive(int pin)
|
|||||||
data = (groupOffset % 2 == 0 ? data & 0x3f : data >> 8);
|
data = (groupOffset % 2 == 0 ? data & 0x3f : data >> 8);
|
||||||
|
|
||||||
switch (data) {
|
switch (data) {
|
||||||
case DS_LEVEL_0:
|
case M1_DS_LEVEL_0:
|
||||||
value = 0;
|
value = 0;
|
||||||
break;
|
break;
|
||||||
case DS_LEVEL_1:
|
case M1_DS_LEVEL_1:
|
||||||
value = 1;
|
value = 1;
|
||||||
break;
|
break;
|
||||||
case DS_LEVEL_2:
|
case M1_DS_LEVEL_2:
|
||||||
value = 2;
|
value = 2;
|
||||||
break;
|
break;
|
||||||
case DS_LEVEL_3:
|
case M1_DS_LEVEL_3:
|
||||||
value = 3;
|
value = 3;
|
||||||
break;
|
break;
|
||||||
case DS_LEVEL_4:
|
case M1_DS_LEVEL_4:
|
||||||
value = 4;
|
value = 4;
|
||||||
break;
|
break;
|
||||||
case DS_LEVEL_5:
|
case M1_DS_LEVEL_5:
|
||||||
value = 5;
|
value = 5;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -578,22 +578,22 @@ static int _setDrive(int pin, int value)
|
|||||||
|
|
||||||
switch (value) {
|
switch (value) {
|
||||||
case 0:
|
case 0:
|
||||||
data |= (groupOffset % 2 == 0 ? DS_LEVEL_0 : (DS_LEVEL_0 << 8));
|
data |= (groupOffset % 2 == 0 ? M1_DS_LEVEL_0 : (M1_DS_LEVEL_0 << 8));
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
data |= (groupOffset % 2 == 0 ? DS_LEVEL_1 : (DS_LEVEL_1 << 8));
|
data |= (groupOffset % 2 == 0 ? M1_DS_LEVEL_1 : (M1_DS_LEVEL_1 << 8));
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
data |= (groupOffset % 2 == 0 ? DS_LEVEL_2 : (DS_LEVEL_2 << 8));
|
data |= (groupOffset % 2 == 0 ? M1_DS_LEVEL_2 : (M1_DS_LEVEL_2 << 8));
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
data |= (groupOffset % 2 == 0 ? DS_LEVEL_3 : (DS_LEVEL_3 << 8));
|
data |= (groupOffset % 2 == 0 ? M1_DS_LEVEL_3 : (M1_DS_LEVEL_3 << 8));
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
data |= (groupOffset % 2 == 0 ? DS_LEVEL_4 : (DS_LEVEL_4 << 8));
|
data |= (groupOffset % 2 == 0 ? M1_DS_LEVEL_4 : (M1_DS_LEVEL_4 << 8));
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
data |= (groupOffset % 2 == 0 ? DS_LEVEL_5 : (DS_LEVEL_5 << 8));
|
data |= (groupOffset % 2 == 0 ? M1_DS_LEVEL_5 : (M1_DS_LEVEL_5 << 8));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -890,11 +890,11 @@ static int _digitalWriteByte (const unsigned int value)
|
|||||||
gpio0.bits.bit14 = ((value & 0x80) >> 7);
|
gpio0.bits.bit14 = ((value & 0x80) >> 7);
|
||||||
|
|
||||||
/* Update data register */
|
/* Update data register */
|
||||||
*(gpio[0] + (M1_GPIO_SET_OFFSET + 0x1)) = (WRITE_BYTE_MASK_GPIO0_H | (gpio0.wvalue >> 16));
|
*(gpio[0] + (M1_GPIO_SET_OFFSET + 0x1)) = (M1_WRITE_BYTE_MASK_GPIO0_H | (gpio0.wvalue >> 16));
|
||||||
*(gpio[0] + M1_GPIO_SET_OFFSET) = (WRITE_BYTE_MASK_GPIO0_L | (gpio0.wvalue & 0xffff));
|
*(gpio[0] + M1_GPIO_SET_OFFSET) = (M1_WRITE_BYTE_MASK_GPIO0_L | (gpio0.wvalue & 0xffff));
|
||||||
|
|
||||||
*(gpio[3] + (M1_GPIO_SET_OFFSET + 0x1)) = (WRITE_BYTE_MASK_GPIO3_H | (gpio3.wvalue >> 16));
|
*(gpio[3] + (M1_GPIO_SET_OFFSET + 0x1)) = (M1_WRITE_BYTE_MASK_GPIO3_H | (gpio3.wvalue >> 16));
|
||||||
*(gpio[3] + M1_GPIO_SET_OFFSET) = (WRITE_BYTE_MASK_GPIO3_L | (gpio3.wvalue & 0xffff));
|
*(gpio[3] + M1_GPIO_SET_OFFSET) = (M1_WRITE_BYTE_MASK_GPIO3_L | (gpio3.wvalue & 0xffff));
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,18 +70,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
#define M1_GPIO_GET_OFFSET (0x70 >> 2)
|
#define M1_GPIO_GET_OFFSET (0x70 >> 2)
|
||||||
|
|
||||||
// GPIO DS LEVELS
|
// GPIO DS LEVELS
|
||||||
#define DS_LEVEL_0 0x01 //0b000001
|
#define M1_DS_LEVEL_0 0x01 //0b000001
|
||||||
#define DS_LEVEL_1 0x03 //0b000011
|
#define M1_DS_LEVEL_1 0x03 //0b000011
|
||||||
#define DS_LEVEL_2 0x07 //0b000111
|
#define M1_DS_LEVEL_2 0x07 //0b000111
|
||||||
#define DS_LEVEL_3 0x0f //0b001111
|
#define M1_DS_LEVEL_3 0x0f //0b001111
|
||||||
#define DS_LEVEL_4 0x1f //0b011111
|
#define M1_DS_LEVEL_4 0x1f //0b011111
|
||||||
#define DS_LEVEL_5 0x3f //0b111111
|
#define M1_DS_LEVEL_5 0x3f //0b111111
|
||||||
|
|
||||||
// GPIO write mask for WriteByte
|
// GPIO write mask for WriteByte
|
||||||
#define WRITE_BYTE_MASK_GPIO0_H 0x00030000
|
#define M1_WRITE_BYTE_MASK_GPIO0_H 0x00070000
|
||||||
#define WRITE_BYTE_MASK_GPIO0_L 0x40000000
|
#define M1_WRITE_BYTE_MASK_GPIO0_L 0x40000000
|
||||||
#define WRITE_BYTE_MASK_GPIO3_H 0x03C00000
|
#define M1_WRITE_BYTE_MASK_GPIO2_L 0x61100000
|
||||||
#define WRITE_BYTE_MASK_GPIO3_L 0x04000000
|
#define M1_WRITE_BYTE_MASK_GPIO3_H 0x03C00000
|
||||||
|
#define M1_WRITE_BYTE_MASK_GPIO3_L 0x04000000
|
||||||
|
|
||||||
#define CONSUMER "consumer"
|
#define CONSUMER "consumer"
|
||||||
|
|
||||||
|
|||||||
@@ -526,22 +526,22 @@ static int _getDrive(int pin)
|
|||||||
data = (groupOffset % 2 == 0 ? data & 0x3f : data >> 8);
|
data = (groupOffset % 2 == 0 ? data & 0x3f : data >> 8);
|
||||||
|
|
||||||
switch (data) {
|
switch (data) {
|
||||||
case DS_LEVEL_0:
|
case M1_DS_LEVEL_0:
|
||||||
value = 0;
|
value = 0;
|
||||||
break;
|
break;
|
||||||
case DS_LEVEL_1:
|
case M1_DS_LEVEL_1:
|
||||||
value = 1;
|
value = 1;
|
||||||
break;
|
break;
|
||||||
case DS_LEVEL_2:
|
case M1_DS_LEVEL_2:
|
||||||
value = 2;
|
value = 2;
|
||||||
break;
|
break;
|
||||||
case DS_LEVEL_3:
|
case M1_DS_LEVEL_3:
|
||||||
value = 3;
|
value = 3;
|
||||||
break;
|
break;
|
||||||
case DS_LEVEL_4:
|
case M1_DS_LEVEL_4:
|
||||||
value = 4;
|
value = 4;
|
||||||
break;
|
break;
|
||||||
case DS_LEVEL_5:
|
case M1_DS_LEVEL_5:
|
||||||
value = 5;
|
value = 5;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -580,22 +580,22 @@ static int _setDrive(int pin, int value)
|
|||||||
|
|
||||||
switch (value) {
|
switch (value) {
|
||||||
case 0:
|
case 0:
|
||||||
data |= (groupOffset % 2 == 0 ? DS_LEVEL_0 : (DS_LEVEL_0 << 8));
|
data |= (groupOffset % 2 == 0 ? M1_DS_LEVEL_0 : (M1_DS_LEVEL_0 << 8));
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
data |= (groupOffset % 2 == 0 ? DS_LEVEL_1 : (DS_LEVEL_1 << 8));
|
data |= (groupOffset % 2 == 0 ? M1_DS_LEVEL_1 : (M1_DS_LEVEL_1 << 8));
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
data |= (groupOffset % 2 == 0 ? DS_LEVEL_2 : (DS_LEVEL_2 << 8));
|
data |= (groupOffset % 2 == 0 ? M1_DS_LEVEL_2 : (M1_DS_LEVEL_2 << 8));
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
data |= (groupOffset % 2 == 0 ? DS_LEVEL_3 : (DS_LEVEL_3 << 8));
|
data |= (groupOffset % 2 == 0 ? M1_DS_LEVEL_3 : (M1_DS_LEVEL_3 << 8));
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
data |= (groupOffset % 2 == 0 ? DS_LEVEL_4 : (DS_LEVEL_4 << 8));
|
data |= (groupOffset % 2 == 0 ? M1_DS_LEVEL_4 : (M1_DS_LEVEL_4 << 8));
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
data |= (groupOffset % 2 == 0 ? DS_LEVEL_5 : (DS_LEVEL_5 << 8));
|
data |= (groupOffset % 2 == 0 ? M1_DS_LEVEL_5 : (M1_DS_LEVEL_5 << 8));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -861,42 +861,41 @@ static int _analogRead (int pin)
|
|||||||
static int _digitalWriteByte (const unsigned int value)
|
static int _digitalWriteByte (const unsigned int value)
|
||||||
{
|
{
|
||||||
union reg_bitfield gpio0;
|
union reg_bitfield gpio0;
|
||||||
union reg_bitfield gpio3;
|
union reg_bitfield gpio2;
|
||||||
|
|
||||||
if (lib->mode == MODE_GPIO_SYS) {
|
if (lib->mode == MODE_GPIO_SYS) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
setClkState(GPIO_SIZE * 0, M1_CLK_ENABLE);
|
setClkState(GPIO_SIZE * 0, M1_CLK_ENABLE);
|
||||||
setClkState(GPIO_SIZE * 3, M1_CLK_ENABLE);
|
setClkState(GPIO_SIZE * 2, M1_CLK_ENABLE);
|
||||||
|
|
||||||
/* Read data register */
|
/* Read data register */
|
||||||
gpio0.wvalue = *(gpio[0] + M1_GPIO_GET_OFFSET);
|
gpio0.wvalue = *(gpio[0] + M1_GPIO_GET_OFFSET);
|
||||||
gpio3.wvalue = *(gpio[3] + M1_GPIO_GET_OFFSET);
|
gpio2.wvalue = *(gpio[2] + M1_GPIO_GET_OFFSET);
|
||||||
|
|
||||||
/* Wiring PI GPIO0 = M1 GPIO0_C.0 */
|
/* Wiring PI GPIO0 = M1S GPIO0_C.0 */
|
||||||
gpio0.bits.bit16 = ((value & 0x01) >> 0);
|
gpio0.bits.bit16 = ((value & 0x01) >> 0);
|
||||||
/* Wiring PI GPIO1 = M1 GPIO3_D.0 */
|
/* Wiring PI GPIO1 = M1S GPIO2_A.7 */
|
||||||
gpio3.bits.bit24 = ((value & 0x02) >> 1);
|
gpio2.bits.bit7 = ((value & 0x02) >> 1);
|
||||||
/* Wiring PI GPIO2 = M1 GPIO0_C.1 */
|
/* Wiring PI GPIO2 = M1S GPIO0_C.1 */
|
||||||
gpio0.bits.bit17 = ((value & 0x04) >> 2);
|
gpio0.bits.bit17 = ((value & 0x04) >> 2);
|
||||||
/* Wiring PI GPIO3 = M1 GPIO3_B.2 */
|
/* Wiring PI GPIO3 = M1S GPIO0_C.2 */
|
||||||
gpio3.bits.bit10 = ((value & 0x08) >> 3);
|
gpio0.bits.bit18 = ((value & 0x08) >> 3);
|
||||||
/* Wiring PI GPIO4 = M1 GPIO3_C.6 */
|
/* Wiring PI GPIO4 = M1S GPIO2_B.5 */
|
||||||
gpio3.bits.bit22 = ((value & 0x10) >> 4);
|
gpio2.bits.bit13 = ((value & 0x10) >> 4);
|
||||||
/* Wiring PI GPIO5 = M1 GPIO3_C.7 */
|
/* Wiring PI GPIO5 = M1S GPIO2_B.6 */
|
||||||
gpio3.bits.bit23 = ((value & 0x20) >> 5);
|
gpio2.bits.bit14 = ((value & 0x20) >> 5);
|
||||||
/* Wiring PI GPIO6 = M1 GPIO3_D.1 */
|
/* Wiring PI GPIO6 = M1S GPIO2_B.0 */
|
||||||
gpio3.bits.bit25 = ((value & 0x40) >> 6);
|
gpio2.bits.bit8 = ((value & 0x40) >> 6);
|
||||||
/* Wiring PI GPIO7 = M1 GPIO0_B.6 */
|
/* Wiring PI GPIO7 = M1S GPIO0_B.6 */
|
||||||
gpio0.bits.bit14 = ((value & 0x80) >> 7);
|
gpio0.bits.bit14 = ((value & 0x80) >> 7);
|
||||||
|
|
||||||
/* Update data register */
|
/* Update data register */
|
||||||
*(gpio[0] + (M1_GPIO_SET_OFFSET + 0x1)) = (WRITE_BYTE_MASK_GPIO0_H | (gpio0.wvalue >> 16));
|
*(gpio[0] + (M1_GPIO_SET_OFFSET + 0x1)) = (M1_WRITE_BYTE_MASK_GPIO0_H | (gpio0.wvalue >> 16));
|
||||||
*(gpio[0] + M1_GPIO_SET_OFFSET) = (WRITE_BYTE_MASK_GPIO0_L | (gpio0.wvalue & 0xffff));
|
*(gpio[0] + M1_GPIO_SET_OFFSET) = (M1_WRITE_BYTE_MASK_GPIO0_L | (gpio0.wvalue & 0xffff));
|
||||||
|
|
||||||
*(gpio[3] + (M1_GPIO_SET_OFFSET + 0x1)) = (WRITE_BYTE_MASK_GPIO3_H | (gpio3.wvalue >> 16));
|
*(gpio[2] + M1_GPIO_SET_OFFSET) = (M1_WRITE_BYTE_MASK_GPIO2_L | (gpio2.wvalue & 0xffff));
|
||||||
*(gpio[3] + M1_GPIO_SET_OFFSET) = (WRITE_BYTE_MASK_GPIO3_L | (gpio3.wvalue & 0xffff));
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -904,7 +903,7 @@ static int _digitalWriteByte (const unsigned int value)
|
|||||||
static unsigned int _digitalReadByte (void)
|
static unsigned int _digitalReadByte (void)
|
||||||
{
|
{
|
||||||
union reg_bitfield gpio0;
|
union reg_bitfield gpio0;
|
||||||
union reg_bitfield gpio3;
|
union reg_bitfield gpio2;
|
||||||
|
|
||||||
unsigned int value = 0;
|
unsigned int value = 0;
|
||||||
|
|
||||||
@@ -913,34 +912,35 @@ static unsigned int _digitalReadByte (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
setClkState(GPIO_SIZE * 0, M1_CLK_ENABLE);
|
setClkState(GPIO_SIZE * 0, M1_CLK_ENABLE);
|
||||||
setClkState(GPIO_SIZE * 3, M1_CLK_ENABLE);
|
setClkState(GPIO_SIZE * 2, M1_CLK_ENABLE);
|
||||||
|
|
||||||
/* Read data register */
|
/* Read data register */
|
||||||
gpio0.wvalue = *(gpio[0] + M1_GPIO_GET_OFFSET);
|
gpio0.wvalue = *(gpio[0] + M1_GPIO_GET_OFFSET);
|
||||||
gpio3.wvalue = *(gpio[3] + M1_GPIO_GET_OFFSET);
|
gpio2.wvalue = *(gpio[2] + M1_GPIO_GET_OFFSET);
|
||||||
|
|
||||||
/* Wiring PI GPIO0 = M1 GPIO0_C.0 */
|
|
||||||
|
/* Wiring PI GPIO0 = M1S GPIO0_C.0 */
|
||||||
if (gpio0.bits.bit16)
|
if (gpio0.bits.bit16)
|
||||||
value |= 0x01;
|
value |= 0x01;
|
||||||
/* Wiring PI GPIO1 = M1 GPIO3_D.0 */
|
/* Wiring PI GPIO1 = M1S GPIO2_A.7 */
|
||||||
if (gpio3.bits.bit24)
|
if (gpio2.bits.bit7)
|
||||||
value |= 0x02;
|
value |= 0x02;
|
||||||
/* Wiring PI GPIO2 = M1 GPIO0_C.1 */
|
/* Wiring PI GPIO2 = M1S GPIO0_C.1 */
|
||||||
if (gpio0.bits.bit17)
|
if (gpio0.bits.bit17)
|
||||||
value |= 0x04;
|
value |= 0x04;
|
||||||
/* Wiring PI GPIO3 = M1 GPIO3_B.2 */
|
/* Wiring PI GPIO3 = M1S GPIO0_C.2 */
|
||||||
if (gpio3.bits.bit10)
|
if (gpio0.bits.bit18)
|
||||||
value |= 0x08;
|
value |= 0x08;
|
||||||
/* Wiring PI GPIO4 = M1 GPIO3_C.6 */
|
/* Wiring PI GPIO4 = M1S GPIO2_B.5 */
|
||||||
if (gpio3.bits.bit22)
|
if (gpio2.bits.bit13)
|
||||||
value |= 0x10;
|
value |= 0x10;
|
||||||
/* Wiring PI GPIO5 = M1 GPIO3_C.7 */
|
/* Wiring PI GPIO5 = M1S GPIO2_B.6 */
|
||||||
if (gpio3.bits.bit23)
|
if (gpio2.bits.bit14)
|
||||||
value |= 0x20;
|
value |= 0x20;
|
||||||
/* Wiring PI GPIO6 = M1 GPIO3_D.1 */
|
/* Wiring PI GPIO6 = M1S GPIO2_B.0 */
|
||||||
if (gpio3.bits.bit25)
|
if (gpio2.bits.bit8)
|
||||||
value |= 0x40;
|
value |= 0x40;
|
||||||
/* Wiring PI GPIO7 = M1 GPIO0_B.6 */
|
/* Wiring PI GPIO7 = M1S GPIO0_B.6 */
|
||||||
if (gpio0.bits.bit14)
|
if (gpio0.bits.bit14)
|
||||||
value |= 0x80;
|
value |= 0x80;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user