blob: e41b3676347bad9ebe05e3fdfd6039674f0d7ba2 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
#define SII_HAL_LINUX_INIT_C
#include <linux/i2c.h>
#include "sii_hal.h"
#include "sii_hal_priv.h"
bool gHalInitedFlag = false;
DEFINE_SEMAPHORE(gIsrLock);
mhlDeviceContext_t gMhlDevice;
halReturn_t HalInitCheck(void)
{
if (!(gHalInitedFlag)) {
SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE,
"Error: Hal layer not currently initialize!\n");
return HAL_RET_NOT_INITIALIZED;
}
return HAL_RET_SUCCESS;
}
halReturn_t HalInit(void)
{
/* halReturn_t status; */
if (gHalInitedFlag) {
SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE, "Error: Hal layer already inited!\n");
return HAL_RET_ALREADY_INITIALIZED;
}
gMhlDevice.driver.driver.name = NULL;
gMhlDevice.driver.id_table = NULL;
gMhlDevice.driver.probe = NULL;
gMhlDevice.driver.remove = NULL;
gMhlDevice.pI2cClient = NULL;
gMhlDevice.irqHandler = NULL;
#ifdef RGB_BOARD
gMhlDevice.ExtDeviceirqHandler = NULL;
#endif
/*
status = HalGpioInit();
if(status != HAL_RET_SUCCESS)
{
return status;
}
*/
gHalInitedFlag = true;
return HAL_RET_SUCCESS;
}
halReturn_t HalTerm(void)
{
halReturn_t retStatus;
retStatus = HalInitCheck();
if (retStatus != HAL_RET_SUCCESS) {
return retStatus;
}
/* HalGpioTerm(); */
gHalInitedFlag = false;
return retStatus;
}
halReturn_t HalAcquireIsrLock(void)
{
halReturn_t retStatus;
int status;
retStatus = HalInitCheck();
if (retStatus != HAL_RET_SUCCESS) {
return retStatus;
}
status = down_interruptible(&gIsrLock);
if (status != 0) {
SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE, "HalAcquireIsrLock failed to acquire lock\n");
return HAL_RET_FAILURE;
}
return HAL_RET_SUCCESS;
}
halReturn_t HalReleaseIsrLock(void)
{
halReturn_t retStatus;
retStatus = HalInitCheck();
if (retStatus != HAL_RET_SUCCESS) {
return retStatus;
}
up(&gIsrLock);
return retStatus;
}
|