]> rtime.felk.cvut.cz Git - arc.git/blobdiff - arch/arm/arm_cr4/drivers/Dio.c
LED Blinker running on TMS570LS31x Hercules Development Kit (HDK) (TMS570LS3137ZWT)
[arc.git] / arch / arm / arm_cr4 / drivers / Dio.c
index 74bd21185fbdf99b31983ecb2cdacfd25e135f07..6913092231bf343879235d1dff4de86b42a323ae 100644 (file)
@@ -19,8 +19,9 @@
 #include "Det.h"\r
 #include "Cpu.h"\r
 #include <string.h>\r
+#include "../kernel/core_cr4.h"\r
 \r
-GIO_RegisterType *GPIO_ports[] = { GIO_PORTA_BASE, GIO_PORTB_BASE };\r
+GIO_RegisterType *GPIO_ports[] = { GIO_PORTA_BASE, GIO_PORTB_BASE, GIO_HET_PORT1_BASE };\r
 \r
 #define DIO_GET_PORT_FROM_CHANNEL_ID(_channelId) (_channelId >> 8)\r
 #define DIO_GET_BIT_FROM_CHANNEL_ID(_channelId) (1 << (_channelId & 0x1F))\r
@@ -102,7 +103,10 @@ Dio_PortLevelType Dio_ReadPort(Dio_PortType portId)
 \r
        level = (uint8)GPIO_ports[portId]->DIN;\r
 \r
-       cleanup: return level;\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+       cleanup:\r
+#endif\r
+       return level;\r
 }\r
 \r
 void Dio_WritePort(Dio_PortType portId, Dio_PortLevelType level)\r
@@ -111,7 +115,10 @@ void Dio_WritePort(Dio_PortType portId, Dio_PortLevelType level)
 \r
        GPIO_ports[portId]->DOUT = (uint32)level;\r
 \r
-    cleanup: return;\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+       cleanup:\r
+#endif\r
+       return;\r
 }\r
 \r
 Dio_LevelType Dio_ReadChannel(Dio_ChannelType channelId)\r
@@ -128,7 +135,10 @@ Dio_LevelType Dio_ReadChannel(Dio_ChannelType channelId)
                level = STD_LOW;\r
        }\r
 \r
-       cleanup: return (level);\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+       cleanup:\r
+#endif\r
+       return (level);\r
 }\r
 \r
 void Dio_WriteChannel(Dio_ChannelType channelId, Dio_LevelType level)\r
@@ -136,7 +146,7 @@ void Dio_WriteChannel(Dio_ChannelType channelId, Dio_LevelType level)
        VALIDATE_CHANNEL(channelId, DIO_WRITECHANNEL_ID);\r
 \r
        Dio_PortType port = DIO_GET_PORT_FROM_CHANNEL_ID(channelId);\r
-       uint16 bit = DIO_GET_BIT_FROM_CHANNEL_ID(channelId);\r
+       uint32 bit = DIO_GET_BIT_FROM_CHANNEL_ID(channelId);\r
 \r
        if (!( GPIO_ports[port]->DIR & bit)) { // This is an input channel.\r
                goto cleanup;\r
@@ -168,7 +178,10 @@ Dio_PortLevelType Dio_ReadChannelGroup(
        // Shift down\r
        level = level >> channelGroupIdPtr->offset;\r
 \r
-       cleanup: return level;\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+       cleanup:\r
+#endif\r
+       return level;\r
 }\r
 \r
 void Dio_WriteChannelGroup(const Dio_ChannelGroupType *channelGroupIdPtr,\r
@@ -187,7 +200,10 @@ void Dio_WriteChannelGroup(const Dio_ChannelGroupType *channelGroupIdPtr,
 \r
        Dio_WritePort(channelGroupIdPtr->port, portVal);\r
 \r
-       cleanup: return;\r
+#if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
+       cleanup:\r
+#endif\r
+       return;\r
 }\r
 \r
 \r