]> 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 8ebcda97380b38dbc0880411e85a3eff37a1720c..6913092231bf343879235d1dff4de86b42a323ae 100644 (file)
 #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
 \r
-#if ( DIO_VERSION_INFO_API == STD_ON )\r
-static Std_VersionInfoType _Dio_VersionInfo =\r
-{\r
-       .vendorID   = (uint16)1,\r
-       .moduleID   = (uint16)1,\r
-       .instanceID = (uint8)1,\r
-       .sw_major_version = (uint8)DIO_SW_MAJOR_VERSION,\r
-       .sw_minor_version = (uint8)DIO_SW_MINOR_VERSION,\r
-       .sw_patch_version = (uint8)DIO_SW_PATCH_VERSION,\r
-       .ar_major_version = (uint8)DIO_AR_MAJOR_VERSION,\r
-       .ar_minor_version = (uint8)DIO_AR_MINOR_VERSION,\r
-       .ar_patch_version = (uint8)DIO_AR_PATCH_VERSION,\r
-};\r
-#endif\r
-\r
 #if ( DIO_DEV_ERROR_DETECT == STD_ON )\r
 static int Channel_Config_Contains(Dio_ChannelType channelId)\r
 {\r
@@ -117,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
@@ -126,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
@@ -143,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
@@ -151,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
@@ -183,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
@@ -202,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