[BACK]Return to s3c24x0_lcd.h CVS log [TXT][DIR] Up to [local] / sys / arch / arm / s3c2xx0

Annotation of sys/arch/arm/s3c2xx0/s3c24x0_lcd.h, Revision 1.1.1.1

1.1       nbrk        1: /* $NetBSD: s3c24x0_lcd.h,v 1.4 2007/03/04 05:59:38 christos Exp $ */
                      2:
                      3: /*
                      4:  * Copyright (c) 2004  Genetec Corporation.  All rights reserved.
                      5:  * Written by Hiroyuki Bessho for Genetec Corporation.
                      6:  *
                      7:  * Redistribution and use in source and binary forms, with or without
                      8:  * modification, are permitted provided that the following conditions
                      9:  * are met:
                     10:  * 1. Redistributions of source code must retain the above copyright
                     11:  *    notice, this list of conditions and the following disclaimer.
                     12:  * 2. Redistributions in binary form must reproduce the above copyright
                     13:  *    notice, this list of conditions and the following disclaimer in the
                     14:  *    documentation and/or other materials provided with the distribution.
                     15:  * 3. The name of Genetec Corporation may not be used to endorse or
                     16:  *    promote products derived from this software without specific prior
                     17:  *    written permission.
                     18:  *
                     19:  * THIS SOFTWARE IS PROVIDED BY GENETEC CORPORATION ``AS IS'' AND
                     20:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
                     21:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
                     22:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL GENETEC CORPORATION
                     23:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
                     24:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
                     25:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                     26:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                     27:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                     28:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     29:  * POSSIBILITY OF SUCH DAMAGE.
                     30:  */
                     31:
                     32:
                     33: #ifndef _ARM_S3C2XX0_S3C24X0_LCD_H
                     34: #define        _ARM_S3C2XX0_S3C24X0_LCD_H
                     35:
                     36: #include <dev/rasops/rasops.h>
                     37: #include <machine/bus.h>
                     38:
                     39: /* LCD Contoroller */
                     40:
                     41: struct s3c24x0_lcd_screen {
                     42:        LIST_ENTRY(s3c24x0_lcd_screen) link;
                     43:
                     44:        /* Frame buffer */
                     45:        bus_dmamap_t dma;
                     46:        bus_dma_segment_t segs[1];
                     47:        int     nsegs;
                     48:        size_t  buf_size;
                     49:        size_t  map_size;
                     50:        void    *buf_va;
                     51:        int     depth;
                     52:        int     stride;
                     53:
                     54:        /* rasterop */
                     55:        struct rasops_info rinfo;
                     56: };
                     57:
                     58: struct s3c24x0_lcd_softc {
                     59:        struct device  dev;
                     60:
                     61:        /* control registers */
                     62:        bus_space_tag_t         iot;
                     63:        bus_space_handle_t      ioh;
                     64:        bus_dma_tag_t           dma_tag;
                     65:
                     66:        const struct s3c24x0_lcd_panel_info *panel_info;
                     67:
                     68:        LIST_HEAD(, s3c24x0_lcd_screen) screens;
                     69:        struct s3c24x0_lcd_screen *active;
                     70:        void *ih;                       /* interrupt handler */
                     71:
                     72:        int n_screens;
                     73:        int lcd_on;                     /* LCD is turned on */
                     74: };
                     75:
                     76: void s3c24x0_lcd_attach_sub(struct s3c24x0_lcd_softc *,
                     77:     struct s3c2xx0_attach_args *, const struct s3c24x0_lcd_panel_info *);
                     78: int s3c24x0_lcd_start_dma(struct s3c24x0_lcd_softc *,
                     79:     struct s3c24x0_lcd_screen *);
                     80:
                     81: struct s3c24x0_lcd_panel_info {
                     82:        short panel_width;
                     83:        short panel_height;
                     84:        int   pixel_clock;              /* in Hz */
                     85:
                     86:        /* Initial values to go to LCD controll registers */
                     87:        uint32_t lcdcon1;
                     88:        uint32_t lcdcon2;
                     89:        uint32_t lcdcon3;
                     90:        uint32_t lcdcon4;
                     91:        uint32_t lcdcon5;
                     92:        uint32_t lpcsel;
                     93:
                     94: #define        s3c24x0_lcd_panel_tft(info)     \
                     95:        (((info)->lcdcon1 & LCDCON1_PNRMODE_MASK) == LCDCON1_PNRMODE_TFT)
                     96: };
                     97:
                     98: void s3c24x0_set_lcd_panel_info(struct s3c24x0_lcd_softc *,
                     99:     const struct s3c24x0_lcd_panel_info *);
                    100:
                    101: struct s3c24x0_lcd_screen *s3c24x0_lcd_new_screen(struct s3c24x0_lcd_softc *,
                    102:     int, int, int);
                    103:
                    104: /*
                    105:  * we need bits-per-pixel value to configure wsdisplay screen
                    106:  */
                    107: struct s3c24x0_wsscreen_descr {
                    108:        struct wsscreen_descr  c;       /* standard descriptor */
                    109:        int depth;                      /* bits per pixel */
                    110: };
                    111:
                    112: int s3c24x0_lcd_show_screen(void *, void *, int, void (*)(void *, int, int),
                    113:     void *);
                    114: int s3c24x0_lcd_ioctl(void *v, void *vs, u_long cmd, void *data, int flag,
                    115:     struct lwp *p);
                    116: paddr_t        s3c24x0_lcd_mmap(void *, void *, off_t, int);
                    117: int s3c24x0_lcd_alloc_screen(void *, const struct wsscreen_descr *, void **,
                    118:     int *, int *, long *);
                    119: void s3c24x0_lcd_free_screen(void *, void *);
                    120: void s3c24x0_lcd_power(struct s3c24x0_lcd_softc *, int);
                    121:
                    122: extern const struct wsdisplay_emulops s3c24x0_lcd_emulops;
                    123:
                    124: #endif /* _ARM_S3C2XX0_S3C24X0_LCD_H */

CVSweb