OSDN Git Service

(none)
[hos/hos-v4a.git] / aplfw / driver / serial / at91 / at91uartdrv_open.c
1 /** 
2  *  Hyper Operating System  Application Framework
3  *
4  * @file  at91uartdrv_open.c
5  * @brief %jp{ATMEL AT91シリーズUART用デバイスドライバ}
6  *
7  * Copyright (C) 2006-2007 by Project HOS
8  * http://sourceforge.jp/projects/hos/
9  */
10
11
12 #include "at91uartdrv_local.h"
13
14
15 /** オープン */
16 HANDLE At91UartDrv_Open(C_DRVOBJ *pDrvObj, const char *pszPath, int iMode)
17 {
18         C_AT91UARTDRV   *self;
19         C_CHRFILE               *pChrFile;
20         
21         /* upper cast */
22         self = (C_AT91UARTDRV *)pDrvObj;
23
24         /* create file descriptor */
25         if ( (pChrFile = SysMem_Alloc(sizeof(*pChrFile))) == NULL )
26         {
27                 return HANDLE_NULL;
28         }
29         ChrFile_Create(pChrFile, pDrvObj, NULL);
30
31         
32         /* オープン処理 */
33         if ( self->iOpenCount++ == 0 )
34         {
35                 AT91UART_REG_WRITE(self, AT91UART_US_MR,   0x000008c0); /* 8bit, non-paroty */
36                 AT91UART_REG_WRITE(self, AT91UART_US_CR,   0x00000050); /* enable */
37                 AT91UART_REG_WRITE(self, AT91UART_US_BRGR, 0x00000034);
38
39                 SysInt_Enable(self->iIntNum);
40         }
41
42         return (HANDLE)pChrFile;
43 }
44
45
46 /* end of file */