亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? lcd_if.c

?? MMI層OBJ不能完全編譯
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/******************************************************************************
 *                   WIRELESS COMMUNICATION SYSTEM DEVELOPMENT
 *
 *             (C) 2002 Texas Instruments France. All rights reserved
 *
 *                          Author : Philippe MARTINEZ
 *
 *
 *  Important Note
 *  --------------
 *
 *  This S/W is a preliminary version. It contains information on a product 
 *  under development and is issued for evaluation purposes only. Features 
 *  characteristics, data and other information are subject to change.
 *
 *  The S/W is furnished under Non Disclosure Agreement and may be used or
 *  copied only in accordance with the terms of the agreement. It is an offence
 *  to copy the software in any way except as specifically set out in the 
 *  agreement. No part of this document may be reproduced or transmitted in any
 *  form or by any means, electronic or mechanical, including photocopying and
 *  recording, for any purpose without the express written permission of Texas
 *  Instruments Inc.
 *
 ******************************************************************************
 *
 *  FILE NAME: lcd_if.c
 *
 *
 *  PURPOSE:  LCD Interface driver compiled in 16-bits mode (thumb mode)
 *
 *
 *  FILE REFERENCES:
 *
 *  Name                  IO      Description
 *  -------------         --      ---------------------------------------------
 *  
 *
 *
 *  EXTERNAL VARIABLES:
 *
 *  Source:
 *
 *  Name                  Type              IO   Description
 *  -------------         ---------------   --   ------------------------------
 *
 *
 *
 *  EXTERNAL REFERENCES:
 *
 *  Name                Description
 *  ------------------  -------------------------------------------------------
 *
 *
 *
 *  ABNORMAL TERMINATION CONDITIONS, ERROR AND WARNING MESSAGES:
 *  
 *
 *
 *  ASSUMPTION, CONSTRAINTS, RESTRICTIONS:
 *  
 *
 *
 *  NOTES:
 *  
 *
 *
 *  REQUIREMENTS/FUNCTIONAL SPECIFICATION REFERENCES:
 *
 *
 *
 *
 *  DEVELOPMENT HISTORY:
 *
 *  Date         Name(s)           Version  Description
 *  -----------  --------------    -------  -------------------------------------
 *  30-Oct-2002  Philippe MARTINEZ  0.0.1    First implementation
 *
 *  ALGORITHM: 
 *
 *
 *****************************************************************************/

#include "r2d/lcds/i_sample/lcd_if.h"
#include "memif/mem.h"


  /****************************************************************************
   *                         GLOBAL VARIABLES 
   ***************************************************************************/

   /* internal structure instance */

   T_LCD_IF_INTERNAL d_lcd_if_internal;

#ifdef R2D_ISAMPLE_USE_MUXING

   /* Mutex for resolving multiplexed bus accesses */
   T_RVF_MUTEX  lcd_cam_nandflash_bus_mutex;
#endif
  /****************************************************************************
   *                         INTERNAL FUNCTION PROTOTYPE 
   ***************************************************************************/
 
   void f_lcd_if_set_cs_and_data_type( E_LCD_IF_CS d_cs, 
                                              E_LCD_IF_DATA_TYPE d_type, 
                                              E_LCD_IF_DATA_ACCESS d_access );
                                              
   static E_LCD_IF_CALLBACK_RET f_lcd_if_dummy_callback( void );



  /******************************************************************************
   *
   *  FUNCTION NAME: f_lcd_if_init
   *
   *    Initialize the internal initialization structure.
   *
   *
   *  ARGUMENT LIST:
   *
   *  Argument       Type                   IO  Description
   *  ------------   -------------------    --  ---------------------------------
   *  d_cs  		 E_LCD_IF_CS            I   LCD Controller Chip select
   *  p_init         T_LCD_IF_INIT*         I   Pointer on the external initialization 
   *                                            structure
   * RETURN VALUE: None
   *
   *****************************************************************************/

  void f_lcd_if_init( E_LCD_IF_CS   d_cs, T_LCD_IF_INIT *p_init ) 
  {


	  /* reset internal state to IDLE */

    d_lcd_if_internal.d_interrupt_state = C_LCD_IF_IDLE;

    /* What is the chip select value ? */

    if( d_cs == C_LCD_IF_CS_NOT_SELECTED )
	{
	  /* not a valid CS */
	  return;
	} // End if
	 
   /* update current struct pointer */

	//d_lcd_if_internal.p_current_struct = &d_lcd_if_internal.d_cs_struct[d_cs];
  
    /* Copy the LCD manager init structure to the internal structure */
	/* and initialize the internal structure */

	d_lcd_if_internal.d_cs_struct[d_cs].d_mode               = p_init->d_mode;
	d_lcd_if_internal.d_cs_struct[d_cs].b_flip_bytes         = p_init->b_flip_bytes;
	d_lcd_if_internal.d_cs_struct[d_cs].d_isll               = p_init->d_isll;
	d_lcd_if_internal.d_cs_struct[d_cs].d_tx.d_clock_divider = p_init->d_tx_init.d_clock_divider;
        d_lcd_if_internal.d_cs_struct[d_cs].d_tx.p_callback      = f_lcd_if_dummy_callback;
	d_lcd_if_internal.d_cs_struct[d_cs].d_tx.p_buffer        = (SYS_UWORD16*) NULL;
	d_lcd_if_internal.d_cs_struct[d_cs].d_tx.d_buffer_size   = 0;
	d_lcd_if_internal.d_cs_struct[d_cs].d_rx.d_clock_divider = p_init->d_rx_init.d_clock_divider;
	d_lcd_if_internal.d_cs_struct[d_cs].d_rx.d_dummy_cycles  = p_init->d_rx_init.d_dummy_cycles;

	/* compose the CNTL_REG and LCD_CNTL_REG bit fields */

	d_lcd_if_internal.d_cs_struct[d_cs].d_cntl_reg = 
	 (C_LCD_IF_CNTL_REG_SOFT_NRST_INIT                         << C_LCD_IF_CNTL_REG_SOFT_NRST_POS)            |
	 (C_LCD_IF_CNTL_REG_CLOCK13_EN_INIT                        << C_LCD_IF_CNTL_REG_CLOCK13_EN_POS)           |
	 (d_lcd_if_internal.d_cs_struct[d_cs].d_tx.d_clock_divider << C_LCD_IF_CNTL_REG_TX_CLOCK_DIV_POS)         |
	 (d_lcd_if_internal.d_cs_struct[d_cs].d_rx.d_clock_divider << C_LCD_IF_CNTL_REG_RX_CLOCK_DIV_POS)         |
	 (C_LCD_IF_CNTL_REG_FIFO_EMPTY_IT_EN_INIT                  << C_LCD_IF_CNTL_REG_FIFO_EMPTY_IT_EN_POS)     |
	 (C_LCD_IF_CNTL_REG_LCD_READ_EVENT_IT_EN_INIT              << C_LCD_IF_CNTL_REG_LCD_READ_EVENT_IT_EN_POS) |
	 (C_LCD_IF_CNTL_REG_DMA_EN_INIT                            << C_LCD_IF_CNTL_REG_DMA_EN_POS)               |
	 (d_lcd_if_internal.d_cs_struct[d_cs].d_mode               << C_LCD_IF_CNTL_REG_MODE_POS)                 |
	 (d_lcd_if_internal.d_cs_struct[d_cs].b_flip_bytes         << C_LCD_IF_CNTL_REG_FLIP_BYTES_POS)           |
	 (C_LCD_IF_CNTL_REG_SUSPEND_EN_INIT                        << C_LCD_IF_CNTL_REG_SUSPEND_EN_POS)           |
	 (C_LCD_IF_CNTL_REG_MIN_FRAME_SIZE_INIT                    << C_LCD_IF_CNTL_REG_MIN_FRAME_SIZE_POS)       |
	 (d_lcd_if_internal.d_cs_struct[d_cs].d_rx.d_dummy_cycles  << C_LCD_IF_CNTL_REG_N_DUMMY_POS);

	d_lcd_if_internal.d_cs_struct[d_cs].d_lcd_cntl_reg = 
	 (d_cs                                                     << C_LCD_IF_LCD_CNTL_REG_LCD_NCS0_POS)         |
	 (C_LCD_IF_LCD_CNTL_REG_LCD_RS_INIT                        << C_LCD_IF_LCD_CNTL_REG_LCD_RS_POS)           |
	 (C_LCD_IF_LCD_CNTL_REG_LCD_START_READ_INIT                << C_LCD_IF_LCD_CNTL_REG_LCD_START_READ_POS)   |
	 (C_LCD_IF_LCD_CNTL_REG_LCD_NRESET_INIT                    << C_LCD_IF_LCD_CNTL_REG_LCD_NRESET_POS)       |
	 (~d_cs                                                    << C_LCD_IF_LCD_CNTL_REG_LCD_NCS1_POS);

    /* Force Switch to Chip select */
	
    d_lcd_if_internal.d_current_cs = C_LCD_IF_CS_NOT_SELECTED;

    /* Switch to chip select */
    /* Set data type and access to instruction (arbitrary) and write */

	 F_LCD_CAM_NANDFLASH_AQUIRE_BUS;
	 F_LCD_SET_PIN_CONFIG;

    f_lcd_if_set_cs_and_data_type( d_cs, C_LCD_IF_INSTRUCTION, C_LCD_IF_WRITE );

	 F_LCD_CAM_NANDFLASH_RELEASE_BUS;

  
  } /* f_lcd_if_init */

  /******************************************************************************
   *
   *  FUNCTION NAME: f_lcd_if_reset
   *
   *    Reset the LCD Interface Hardware.
   *
   *
   *  ARGUMENT LIST:
   *
   *  Argument       Type                   IO  Description
   *  ------------   -------------------    --  ---------------------------------
   *  None 
   *                                            
   * RETURN VALUE: None
   *
   *****************************************************************************/

  void f_lcd_if_reset( void )
  {
     /* Reset CNTL_REG:SOFT_NRST bit */
	  
    (*(volatile SYS_UWORD16*) C_LCD_IF_CNTL_REG) &= ~(C_LCD_IF_CNTL_REG_SOFT_NRST_MASK);

     /* loop to wait for CNTL_REG:SOFT_NRST bit return back to 1 */

     F_LCD_IF_WAIT_LCD_IF_RESET;

  } /* f_lcd_if_reset */

  /******************************************************************************
   *
   *  FUNCTION NAME: f_lcd_if_get_version
   *
   *    Return the LCD Interface driver version.
   *
   *
   *  ARGUMENT LIST:
   *
   *  Argument       Type                   IO  Description
   *  ------------   -------------------    --  ---------------------------------
   *  None 
   *                                            
   * RETURN VALUE: SYS_UWORD16 : Version number.
   *
   *****************************************************************************/

  SYS_UWORD16 f_lcd_if_get_version( void )
  {
    return ((SYS_UWORD16) C_LCD_IF_DRIVER_VERSION);
  } /* f_lcd_if_get_version */

  /******************************************************************************
   *
   *  FUNCTION NAME: f_lcd_if_reset_lcd_controller
   *
   *    Resets the LCD Controller hardware.
   *
   *
   *  ARGUMENT LIST:
   *
   *  Argument       Type                   IO  Description
   *  ------------   -------------------    --  ---------------------------------
   *  d_cs  	     E_LCD_IF_CS            I   LCD Controller Chip select 
   *  d_reset        E_LCD_IF_RESET         I   ON => reset state
   *                                        
   * RETURN VALUE: None
   *
   *****************************************************************************/

  void f_lcd_if_reset_lcd_controller( E_LCD_IF_CS     d_cs,
                                      E_LCD_IF_RESET d_reset )
  {

    /* Switch to chip select */
    /* Set data type and access to instruction (arbitrary) and write */
	  
	  f_lcd_if_set_cs_and_data_type( d_cs, C_LCD_IF_INSTRUCTION, C_LCD_IF_WRITE );

   /* Apply the LCD Controller reset on the LCD Interface line (LCD_CNTL_REG:LCD_nRESET bit) */

	 
    if( d_reset == C_LCD_IF_OFF)
    {
      (*(volatile SYS_UWORD16*) C_LCD_IF_LCD_CNTL_REG) |= (d_reset << C_LCD_IF_LCD_CNTL_REG_LCD_NRESET_POS);
    }
    else
    {
      (*(volatile SYS_UWORD16*) C_LCD_IF_LCD_CNTL_REG) &= ~(d_reset << C_LCD_IF_LCD_CNTL_REG_LCD_NRESET_POS);      
    } // End if
    
  } /* f_lcd_if_reset_lcd_controller */

  /******************************************************************************
   *
   *  FUNCTION NAME: f_lcd_if_clock
   *
   *    Enable/disable the LCD Interface 13 MHx clock in.
   *
   *
   *  ARGUMENT LIST:
   *
   *  Argument       Type                   IO  Description
   *  ------------   -------------------    --  ---------------------------------
   *  d_clock_switch E_LCD_IF_CLOCK         I   CLOCK_ON/CLOCK_OFF state
   *                                        
   * RETURN VALUE: None
   *
   *****************************************************************************/

  void f_lcd_if_clock( E_LCD_IF_CLOCK d_clock_switch )
  {
    /* write argument into CNTL_REG:CLOCK13_EN bit */
    
    if( d_clock_switch == C_LCD_IF_CLOCK_ON )
    {
      (*(volatile SYS_UWORD16*) C_LCD_IF_CNTL_REG) |= (d_clock_switch << C_LCD_IF_CNTL_REG_CLOCK13_EN_POS);
    }
    else
    {
      (*(volatile SYS_UWORD16*) C_LCD_IF_CNTL_REG) &= ~(d_clock_switch << C_LCD_IF_CNTL_REG_CLOCK13_EN_POS);    
    } // End if

  } /* f_lcd_if_clock */

  /******************************************************************************
   *
   *  FUNCTION NAME: f_lcd_if_poll_write
   *
   *    LCD Controller write procedure in polling mode.
   *
   *
   *  ARGUMENT LIST:
   *
   *  Argument       Type                   IO  Description
   *  ------------   -------------------    --  ---------------------------------
   *  d_cs  		 E_LCD_IF_CS            I   LCD Controller Chip select 
   *  p_data         SYS_UWORD16*           I   pointer on data buffer
   *  d_size         SYS_UWORD32            I   data buffe size
   *  d_type         E_LCD_IF_DATA_TYPE     I   Instruction / Data type selector
   *                                        
   * RETURN VALUE: None
   *
   *****************************************************************************/

  void f_lcd_if_poll_write( E_LCD_IF_CS        d_cs,
                            SYS_UWORD16        *p_data,
                            SYS_UWORD32        d_size,
                            E_LCD_IF_DATA_TYPE d_type )
  {

    SYS_UWORD32    d_nb_words_to_copy = d_size;
    SYS_UWORD32    d_nb_words_in_loop = 0;
    SYS_UWORD16    *p_buffer          = p_data;
  //SYS_UWORD8     d_data_type        = 0;
    SYS_UWORD8     i                  = 0;

    /* Switch to chip select */
    /* Set data type and access */

	 F_LCD_CAM_NANDFLASH_AQUIRE_BUS;
	 F_LCD_SET_PIN_CONFIG;

    f_lcd_if_set_cs_and_data_type( d_cs, d_type, C_LCD_IF_WRITE );
        
    /* infinite loop : exit loop when no words to copy and Tx FIFO empty */

    while( C_LCD_IF_INFINITE_LOOP )
	{

      /*  Wait for the LCD Interface Tx FIFO is empty LCD_IF_STS_REG:FIFO_EMPTY_STATUS_BIT */

      F_LCD_IF_WAIT_TX_FIFO_EMPTY;

   	  /* Check if all data have been copied */

      if( d_nb_words_to_copy == 0 )
	  {
		  F_LCD_CAM_NANDFLASH_RELEASE_BUS;
		  return;
	  } // End if

      /* Copy up to C_LCD_IF_TX_FIFO_SIZE words into the TX FIFO. */

	  if( d_nb_words_to_copy >= C_LCD_IF_TX_FIFO_SIZE)
	  {
	    d_nb_words_in_loop = C_LCD_IF_TX_FIFO_SIZE; 
      }
	  else
	  {
	    d_nb_words_in_loop = d_nb_words_to_copy; 
	  } // End if

      for( i=0; i<d_nb_words_in_loop ;i++ )
	  {
	    F_LCD_IF_WRITE_IN_FIFO( p_buffer[i] );
      } // End for

      /* update d_nb_words_to copy and p_buffer */
      d_nb_words_to_copy -=  d_nb_words_in_loop;
	  p_buffer           +=  d_nb_words_in_loop;

	} // End while
    
  } /* f_lcd_if_poll_write */

  /******************************************************************************
   *
   *  FUNCTION NAME: f_lcd_if_poll_read
   *
   *    LCD Controller read procedure in polling mode.
   *
   *
   *  ARGUMENT LIST:
   *
   *  Argument       Type                   IO  Description
   *  ------------   -------------------    --  ---------------------------------
   *  d_cs  		 E_LCD_IF_CS            I   LCD Controller Chip select 
   *  d_type         E_LCD_IF_DATA_TYPE     I   Instruction / Data type selector
   *                                        
   * RETURN VALUE: SYS_UWORD16 : read data word

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美做爰猛烈大尺度电影无法无天| 欧美午夜一区二区| 国产69精品久久久久毛片| 一区二区在线看| 老司机免费视频一区二区三区| 久久久久久99精品| 粉嫩av一区二区三区| 一区二区三区 在线观看视频| 欧美大胆人体bbbb| 一卡二卡三卡日韩欧美| 精品国产一区二区精华| 欧美在线你懂得| 懂色av中文字幕一区二区三区 | 黑人巨大精品欧美一区| 日韩一区欧美一区| 久久综合99re88久久爱| 欧美日韩电影在线| 97se狠狠狠综合亚洲狠狠| 国产大片一区二区| 麻豆成人在线观看| 三级亚洲高清视频| 一二三四区精品视频| 国产精品九色蝌蚪自拍| 久久久久亚洲综合| 在线成人高清不卡| 色噜噜狠狠色综合中国| 成人蜜臀av电影| 国产成人亚洲精品狼色在线| 三级一区在线视频先锋 | www.欧美日韩| 亚洲精品日韩综合观看成人91| 精品国产一区久久| 欧美久久免费观看| 91国产视频在线观看| 99久久免费精品高清特色大片| 国产一区不卡在线| 国产欧美精品国产国产专区| 视频在线观看一区二区三区| 欧美成人在线直播| 日韩一二三四区| 日韩欧美一区二区免费| 91麻豆精品国产91久久久使用方法| 欧美一区二区三区免费大片| 在线观看免费视频综合| 在线看国产一区二区| 在线日韩av片| 91成人在线免费观看| 91精彩视频在线观看| 欧美亚洲国产bt| 欧美日韩成人综合天天影院| 69成人精品免费视频| 日韩欧美一级特黄在线播放| 日韩精品中文字幕一区二区三区 | 在线免费一区三区| 91麻豆精品国产91久久久久久久久| 欧美日韩精品三区| 日韩欧美123| 国产欧美日韩不卡免费| 国产片一区二区三区| 久久久www成人免费毛片麻豆| 日韩精品最新网址| 欧美极品美女视频| 亚洲欧美一区二区三区久本道91 | 国产综合久久久久影院| 国产成人综合网站| 色综合天天综合在线视频| 欧美午夜电影网| 精品少妇一区二区三区日产乱码 | 99免费精品在线| 欧美中文字幕一二三区视频| 制服丝袜亚洲色图| 26uuuu精品一区二区| 国产精品免费视频观看| 亚洲成在人线免费| 国产精品自拍一区| 在线日韩av片| 久久人人爽爽爽人久久久| 亚洲欧美日韩中文字幕一区二区三区| 亚洲国产精品一区二区www在线| 美女mm1313爽爽久久久蜜臀| 成人av免费在线观看| 欧美日韩成人在线| 欧美激情综合五月色丁香| 亚洲国产精品欧美一二99| 国产揄拍国内精品对白| 色av成人天堂桃色av| 欧美tickling网站挠脚心| 樱桃视频在线观看一区| 久久精品二区亚洲w码| 99re热视频这里只精品| 精品久久久久久久人人人人传媒| 亚洲三级电影全部在线观看高清| 免费av成人在线| 91女厕偷拍女厕偷拍高清| 日韩你懂的在线观看| 亚洲精品视频自拍| 狠狠色丁香婷综合久久| 91麻豆产精品久久久久久| 亚洲精品国产一区二区精华液 | 久久久精品中文字幕麻豆发布| 亚洲欧美日韩国产一区二区三区| 蜜臀久久久久久久| 色欧美日韩亚洲| 国产清纯白嫩初高生在线观看91| 日韩不卡一区二区三区| 色视频一区二区| 日韩午夜精品电影| 亚洲人成精品久久久久| 国产成人在线视频网站| 日韩欧美国产三级电影视频| 亚洲视频资源在线| 高清在线成人网| 欧美zozo另类异族| 欧美a一区二区| 欧美色涩在线第一页| 亚洲丝袜另类动漫二区| av在线播放一区二区三区| 久久综合色一综合色88| 美美哒免费高清在线观看视频一区二区| 欧美综合在线视频| 一区二区三区精品在线| 99久久er热在这里只有精品15| 久久精品视频一区二区三区| 另类调教123区| 91精品福利在线一区二区三区| 一区二区三区波多野结衣在线观看 | 欧美人妖巨大在线| 一级做a爱片久久| 91久久一区二区| 亚洲精品免费播放| 9i在线看片成人免费| 久久久99精品免费观看不卡| 老色鬼精品视频在线观看播放| 欧美日韩国产高清一区二区三区 | 免费三级欧美电影| 7878成人国产在线观看| 日韩和欧美的一区| 欧美一区二区三区系列电影| 日韩福利电影在线| 日韩色视频在线观看| 激情文学综合网| 久久中文娱乐网| 久久国产精品99久久久久久老狼| 欧美中文字幕亚洲一区二区va在线| 一区二区三区成人在线视频| 在线亚洲精品福利网址导航| 一区二区国产盗摄色噜噜| 在线观看91精品国产入口| 性久久久久久久久| 日韩欧美色综合| 国产精品综合一区二区三区| 国产精品乱码妇女bbbb| 色综合色综合色综合色综合色综合 | 亚洲影院免费观看| 欧美精品日韩综合在线| 日本系列欧美系列| 欧美精品一区男女天堂| 国产99久久久国产精品| 日韩理论在线观看| 欧美另类久久久品| 国产在线精品一区二区不卡了| 久久久一区二区三区捆绑**| 国产最新精品精品你懂的| 国产精品视频线看| 色综合中文字幕国产 | 亚洲国产精品精华液网站| 欧美一级片在线| 国产91精品在线观看| 亚洲欧美国产毛片在线| 欧美精品在欧美一区二区少妇| 婷婷亚洲久悠悠色悠在线播放| 欧美人xxxx| 国产一区二区三区免费在线观看| 国产午夜一区二区三区| 色婷婷av一区二区三区软件| 日韩av电影天堂| 国产日本一区二区| 欧美色老头old∨ideo| 日本不卡视频一二三区| 国产精品免费av| 欧美中文字幕一二三区视频| 视频一区在线视频| 日本一区二区三区国色天香| 在线观看免费成人| 国产成人亚洲精品狼色在线| 亚洲成人777| 国产欧美综合在线| 欧美人妖巨大在线| 丁香婷婷综合五月| 日韩av一级电影| 亚洲欧美区自拍先锋| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 午夜私人影院久久久久| 久久久国产精品麻豆| 正在播放亚洲一区| 色综合一区二区| 成人免费看片app下载| 免费看欧美美女黄的网站| 日韩美女视频一区二区| 精品国产91亚洲一区二区三区婷婷|