/************************************************************************************** * include/nuttx/lcd/mio283qt9a.h * * Interface definition for the MI0283QT-9A LCD from Multi-Inno Technology Co., Ltd. * This LCD is based on the Ilitek ILI9341 LCD controller. * * Copyright (C) 2012, 2014 Gregory Nutt. All rights reserved. * Authors: Gregory Nutt * Tobias Duckworth * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3. Neither the name NuttX nor the names of its contributors may be * used to endorse or promote products derived from this software * without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * **************************************************************************************/ #ifndef __INCLUDE_NUTTX_LCD_MIO283QT9A_H #define __INCLUDE_NUTTX_LCD_MIO283QT9A_H /************************************************************************************** * Included Files **************************************************************************************/ #include #ifdef CONFIG_LCD_MIO283QT9A /************************************************************************************** * Pre-processor Definitions **************************************************************************************/ /* Configuration **********************************************************************/ /* CONFIG_LCD_MIO283QT9A - Enables support for the MIO283QT9A-based LCD. * CONFIG_LCD_NOGETRUN * NX components need to know if it can read from the LCD or not. If reading from the * LCD is supported then some graphic operations can be improved. Default: Supported * CONFIG_LCD_LANDSCAPE - Define for 320x240 display "landscape" support. Default is * this 320x240 "landscape" orientation. * CONFIG_LCD_RLANDSCAPE - Define for 320x240 display "reverse landscape" support. * Default is this 320x240 "landscape" orientation * CONFIG_LCD_PORTRAIT - Define for 240x320 display "portrait" orientation support. * Default is this 320x240 "landscape" orientation * CONFIG_LCD_RPORTRAIT - Define for 240x320 display "reverse portrait" orientation * support. Default is this 320x240 "landscape" orientation */ /************************************************************************************** * Public Types **************************************************************************************/ /* This structure defines the interface to the LCD provided by the platform. The * nature of this interface is hidden from the MIO283QT2 driver. */ struct mio283qt9a_lcd_s { /* Interface to write to a MIO283QT9A register. * * - select Select the device (as necessary). The meaning of selecting (and * and deselecting) is not defined. select() will be called before * starting any sequence of operations. deselect() when that sequence * of operations is complete. * - deselect Deselect the device (as necessary) * - index Set register index * - read Read data from the LCD (auto-incrementing) * - write Write data to the LCD (auto-incrementing) * - backlight Set the backlight power level (0=OFF; CONFIG_LCD_MAXPOWER=MAX) */ void (*select)(FAR struct mio283qt9a_lcd_s *dev); void (*deselect)(FAR struct mio283qt9a_lcd_s *dev); void (*index)(FAR struct mio283qt9a_lcd_s *dev, uint8_t index); #ifndef CONFIG_LCD_NOGETRUN uint16_t (*read)(FAR struct mio283qt9a_lcd_s *dev); uint16_t (*readgram)(FAR struct mio283qt9a_lcd_s *dev); #endif void (*write)(FAR struct mio283qt9a_lcd_s *dev, uint16_t value); void (*backlight)(FAR struct mio283qt9a_lcd_s *dev, int power); /* platform-specific data may follow */ }; /************************************************************************************** * Public Data **************************************************************************************/ #ifdef __cplusplus #define EXTERN extern "C" extern "C" { #else #define EXTERN extern #endif /************************************************************************************** * Public Function Prototypes **************************************************************************************/ /************************************************************************************** * Name: mio283qt2_lcdinitialize * * Description: * Initialize the LCD video hardware. The initial state of the LCD is fully * initialized, display memory cleared, and the LCD ready to use, but with the power * setting at 0 (full off). * **************************************************************************************/ FAR struct lcd_dev_s *mio283qt2_lcdinitialize(FAR struct mio283qt9a_lcd_s *lcd); /************************************************************************************** * Name: mio283qt2_clear * * Description: * This is a non-standard LCD interface. Because of the various rotations, clearing * the display in the normal way by writing a sequences of runs that covers the * entire display can be very slow. Here the display is cleared by simply setting * all GRAM memory to the specified color. * **************************************************************************************/ void mio283qt2_clear(FAR struct lcd_dev_s *dev, uint16_t color); #undef EXTERN #ifdef __cplusplus } #endif #endif /* CONFIG_LCD_MIO283QT9A */ #endif /* __INCLUDE_NUTTX_LCD_MIO283QT9A_H */