| 1 | /*************************************************************************** |
|---|
| 2 | * Copyright (c) 2003-2011, Broadcom Corporation |
|---|
| 3 | * All Rights Reserved |
|---|
| 4 | * Confidential Property of Broadcom Corporation |
|---|
| 5 | * |
|---|
| 6 | * THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE |
|---|
| 7 | * AGREEMENT BETWEEN THE USER AND BROADCOM. YOU HAVE NO RIGHT TO USE OR |
|---|
| 8 | * EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT. |
|---|
| 9 | * |
|---|
| 10 | * $brcm_Workfile: bgio.c $ |
|---|
| 11 | * $brcm_Revision: Hydra_Software_Devel/3 $ |
|---|
| 12 | * $brcm_Date: 6/16/11 5:58p $ |
|---|
| 13 | * |
|---|
| 14 | * Module Description: |
|---|
| 15 | * |
|---|
| 16 | * |
|---|
| 17 | * Revision History: |
|---|
| 18 | * $brcm_Log: /magnum/portinginterface/gio/7038/bgio.c $ |
|---|
| 19 | * |
|---|
| 20 | * Hydra_Software_Devel/3 6/16/11 5:58p tdo |
|---|
| 21 | * SWDTV-7592: add BDBG_OBJECT_ASSERT for BGIO. |
|---|
| 22 | * |
|---|
| 23 | * Hydra_Software_Devel/2 9/12/07 5:58p syang |
|---|
| 24 | * PR 30391, PR 32351: BGIO only init for the pin created by BGIO to ovoid |
|---|
| 25 | * override configures by other sw entity; BGIO read from HW reg (no more |
|---|
| 26 | * sw buffering); |
|---|
| 27 | * |
|---|
| 28 | * Hydra_Software_Devel/1 2/24/04 7:17p syang |
|---|
| 29 | * PR 9785: init version |
|---|
| 30 | * |
|---|
| 31 | ***************************************************************************/ |
|---|
| 32 | |
|---|
| 33 | #include "bgio.h" /* */ |
|---|
| 34 | #include "bgio_priv.h" /* */ |
|---|
| 35 | #include "bkni.h" |
|---|
| 36 | |
|---|
| 37 | BDBG_MODULE(BGIO); |
|---|
| 38 | BDBG_OBJECT_ID(BGIO); |
|---|
| 39 | |
|---|
| 40 | /*************************************************************************** |
|---|
| 41 | * |
|---|
| 42 | */ |
|---|
| 43 | BERR_Code BGIO_Open( |
|---|
| 44 | BGIO_Handle * phGpio, |
|---|
| 45 | BCHP_Handle hChip, |
|---|
| 46 | BREG_Handle hRegister ) |
|---|
| 47 | { |
|---|
| 48 | BERR_Code eResult = BERR_SUCCESS; |
|---|
| 49 | BGIO_P_Context * pGpio = NULL; |
|---|
| 50 | |
|---|
| 51 | if ( (NULL == phGpio) || |
|---|
| 52 | (NULL == hChip) || |
|---|
| 53 | (NULL == hRegister) ) |
|---|
| 54 | { |
|---|
| 55 | return BERR_TRACE(BERR_INVALID_PARAMETER); |
|---|
| 56 | } |
|---|
| 57 | |
|---|
| 58 | pGpio = (BGIO_P_Context *)BKNI_Malloc( sizeof(BGIO_P_Context) ); |
|---|
| 59 | if ( NULL == pGpio ) |
|---|
| 60 | { |
|---|
| 61 | return BERR_TRACE(BERR_OUT_OF_SYSTEM_MEMORY); |
|---|
| 62 | } |
|---|
| 63 | BKNI_Memset((void*)pGpio, 0x0, sizeof(BGIO_P_Context)); |
|---|
| 64 | BDBG_OBJECT_SET(pGpio, BGIO); |
|---|
| 65 | |
|---|
| 66 | /* init pin list */ |
|---|
| 67 | BLST_D_INIT(&pGpio->PinHead); |
|---|
| 68 | |
|---|
| 69 | pGpio->hChip = hChip; |
|---|
| 70 | pGpio->hRegister = hRegister; |
|---|
| 71 | BGIO_P_MAIN_SET_BLACK_MAGIC(pGpio); |
|---|
| 72 | |
|---|
| 73 | *phGpio = pGpio; |
|---|
| 74 | return eResult; |
|---|
| 75 | } |
|---|
| 76 | |
|---|
| 77 | /*************************************************************************** |
|---|
| 78 | * |
|---|
| 79 | */ |
|---|
| 80 | BERR_Code BGIO_Close( |
|---|
| 81 | BGIO_Handle hGpio ) |
|---|
| 82 | { |
|---|
| 83 | BDBG_OBJECT_ASSERT(hGpio, BGIO); |
|---|
| 84 | |
|---|
| 85 | /* sub-modules have to be explicitly destroied first */ |
|---|
| 86 | if ( true != BLST_D_EMPTY(&hGpio->PinHead) ) |
|---|
| 87 | { |
|---|
| 88 | return BERR_TRACE(BERR_LEAKED_RESOURCE); |
|---|
| 89 | } |
|---|
| 90 | |
|---|
| 91 | BDBG_OBJECT_DESTROY(hGpio, BGIO); |
|---|
| 92 | BKNI_Free((void*)hGpio); |
|---|
| 93 | return BERR_SUCCESS; |
|---|
| 94 | } |
|---|
| 95 | |
|---|
| 96 | /* End of File */ |
|---|