Annotation of sys/arch/arm/s3c2xx0/s3c24x0_lcd.h, Revision 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