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

Annotation of sys/arch/arm/xscale/pxa2x0_lcd.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: pxa2x0_lcd.h,v 1.11 2005/12/22 18:45:46 deraadt Exp $ */
                      2: /* $NetBSD: pxa2x0_lcd.h,v 1.2 2003/06/17 09:43:14 bsh Exp $ */
                      3: /*
                      4:  * Copyright (c) 2002  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. All advertising materials mentioning features or use of this software
                     16:  *    must display the following acknowledgement:
                     17:  *     This product includes software developed for the NetBSD Project by
                     18:  *     Genetec Corporation.
                     19:  * 4. The name of Genetec Corporation may not be used to endorse or
                     20:  *    promote products derived from this software without specific prior
                     21:  *    written permission.
                     22:  *
                     23:  * THIS SOFTWARE IS PROVIDED BY GENETEC CORPORATION ``AS IS'' AND
                     24:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
                     25:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
                     26:  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL GENETEC CORPORATION
                     27:  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
                     28:  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
                     29:  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
                     30:  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
                     31:  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
                     32:  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     33:  * POSSIBILITY OF SUCH DAMAGE.
                     34:  */
                     35:
                     36:
                     37: #ifndef _ARM_XSCALE_PXA2X0_LCD_H
                     38: #define _ARM_XSCALE_PXA2X0_LCD_H
                     39:
                     40: #include <dev/rasops/rasops.h>
                     41: #include <machine/bus.h>
                     42:
                     43: /* LCD Controller */
                     44:
                     45: struct lcd_dma_descriptor {
                     46:        uint32_t        fdadr;  /* next frame descriptor */
                     47:        uint32_t        fsadr;  /* frame start address */
                     48:        uint32_t        fidr;   /* frame ID */
                     49:        uint32_t        ldcmd;  /* DMA command */
                     50: #define        LDCMD_PAL       (1U<<26)        /* Palette buffer */
                     51: #define LDCMD_SOFINT   (1U<<22)        /* Start of Frame interrupt */
                     52: #define LDCMD_EOFINT   (1U<<21)        /* End of Frame interrupt */
                     53: };
                     54:
                     55:
                     56: struct pxa2x0_lcd_screen {
                     57:        LIST_ENTRY(pxa2x0_lcd_screen) link;
                     58:
                     59:        /* Frame buffer */
                     60:        bus_dmamap_t dma;
                     61:        bus_dma_segment_t segs[1];
                     62:        int     nsegs;
                     63:        size_t  buf_size;
                     64:        size_t  map_size;
                     65:        void    *buf_va;
                     66:        int     depth;
                     67:
                     68:        /* DMA frame descriptor */
                     69:        struct  lcd_dma_descriptor *dma_desc;
                     70:        paddr_t dma_desc_pa;
                     71:
                     72:        /* rasterop */
                     73:        struct rasops_info rinfo;
                     74: };
                     75:
                     76: struct pxa2x0_lcd_softc {
                     77:        struct device  dev;
                     78:        /* control register */
                     79:        bus_space_tag_t         iot;
                     80:        bus_space_handle_t      ioh;
                     81:        bus_dma_tag_t           dma_tag;
                     82:
                     83:        const struct lcd_panel_geometry *geometry;
                     84:
                     85:        int n_screens;
                     86:        LIST_HEAD(, pxa2x0_lcd_screen) screens;
                     87:        struct pxa2x0_lcd_screen *active;
                     88:
                     89:        void *ih;                       /* interrupt handler */
                     90: };
                     91:
                     92: struct lcd_panel_geometry {
                     93:        short panel_width;
                     94:        short panel_height;
                     95:        short extra_lines;
                     96:
                     97:        short panel_info;
                     98: #define LCDPANEL_VSP   (1<<0)          /* L_FCLK pin is active low */
                     99: #define LCDPANEL_HSP   (1<<1)          /* L_LCLK pin is active low */
                    100: #define LCDPANEL_PCP   (1<<2)          /* use L_PCLK falling edge */
                    101: #define LCDPANEL_OEP   (1<<3)          /* L_BIAS pin is active low */
                    102: #define LCDPANEL_DPC   (1<<4)          /* double pixel clock mode */
                    103:
                    104: #define LCDPANEL_DUAL  (1<<5)          /* Dual or single */
                    105: #define LCDPANEL_SINGLE 0
                    106: #define LCDPANEL_ACTIVE        (1<<6)          /* Active or Passive */
                    107: #define LCDPANEL_PASSIVE 0
                    108: #define LCDPANEL_MONOCHROME (1<<7)     /* depth=1 */
                    109:
                    110:        short pixel_clock_div;          /* pixel clock divider */
                    111:        short ac_bias;                  /* AC bias pin frequency */
                    112:
                    113:        short hsync_pulse_width;        /* Horizontal sync pulse width */
                    114:        short beg_line_wait;            /* beginning of line wait (BLW) */
                    115:        short end_line_wait;            /* end of line pxel wait (ELW) */
                    116:
                    117:        short vsync_pulse_width;        /* vertical sync pulse width */
                    118:        short beg_frame_wait;           /* beginning of frame wait (BFW) */
                    119:        short end_frame_wait;           /* end of frame wait (EFW) */
                    120: };
                    121:
                    122: /*
                    123:  * we need bits-per-pixel value to configure wsdisplay screen
                    124:  */
                    125: struct pxa2x0_wsscreen_descr {
                    126:        struct wsscreen_descr  c;       /* standard descriptor */
                    127:        int depth;                      /* bits per pixel */
                    128:        int flags;                      /* rasops flags */
                    129: };
                    130:
                    131: void   pxa2x0_lcd_attach_sub(struct pxa2x0_lcd_softc *,
                    132:            struct pxaip_attach_args *, struct pxa2x0_wsscreen_descr *,
                    133:            const struct lcd_panel_geometry *, int);
                    134: int    pxa2x0_lcd_cnattach(struct pxa2x0_wsscreen_descr *,
                    135:            const struct lcd_panel_geometry *, void (*)(u_int, int));
                    136:
                    137: int    pxa2x0_lcd_alloc_screen(void *, const struct wsscreen_descr *,
                    138:            void **, int *, int *, long *);
                    139: void   pxa2x0_lcd_free_screen(void *, void *);
                    140: int    pxa2x0_lcd_ioctl(void *, u_long, caddr_t, int, struct proc *);
                    141: paddr_t        pxa2x0_lcd_mmap(void *, off_t, int);
                    142: int    pxa2x0_lcd_show_screen(void *, void *, int, void (*)(void *, int, int),
                    143:            void *);
                    144: void   pxa2x0_lcd_power(int, void *);
                    145: void   pxa2x0_lcd_suspend(struct pxa2x0_lcd_softc *);
                    146: void   pxa2x0_lcd_resume(struct pxa2x0_lcd_softc *);
                    147:
                    148: #endif /* _ARM_XSCALE_PXA2X0_LCD_H */

CVSweb