1 /*        $NetBSD: igmavar.h,v 1.1 2014/01/21 14:52:07 mlelstv Exp $  */
2 
3 /*
4  * Copyright (c) 2014 Michael van Elst
5  *
6  * Permission to use, copy, modify, and distribute this software for any
7  * purpose with or without fee is hereby granted, provided that the above
8  * copyright notice and this permission notice appear in all copies.
9  *
10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17  */
18 
19 #ifndef IGMAVAR_H
20 #define IGMAVAR_H
21 
22 #include <dev/pci/pcivar.h>
23 #include <dev/pci/pcireg.h>
24 
25 struct igma_chip;
26 struct igma_chip_ops {
27           void (*barrier)(const struct igma_chip *, int);
28           u_int32_t (*read_reg)(const struct igma_chip *, int);
29           void (*write_reg)(const struct igma_chip *, int, u_int32_t);
30           u_int8_t (*read_vga)(const struct igma_chip *, int);
31           void (*write_vga)(const struct igma_chip *, int, u_int8_t);
32 #if 0
33           u_int8_t (*read_crtc)(const struct igma_chip *, int);
34           void (*write_crtc)(const struct igma_chip *, int, u_int8_t);
35 #endif
36 };
37 
38 struct igma_chip {
39           const struct igma_chip_ops    *ops;
40 
41           bus_space_tag_t         gttt;
42           bus_space_handle_t      gtth;
43 
44           bus_space_tag_t         mmiot;
45           bus_space_handle_t      mmioh;
46 
47           bus_space_tag_t         vgat;
48           bus_space_handle_t      vgah;
49 
50           bus_space_tag_t         gmt;
51           bus_space_handle_t      gmh;
52           bus_addr_t                    gmb;
53 
54           int num_gmbus;
55           int gpio_offset;
56           int vga_cntrl;
57           int num_pipes;
58           int use_pipe;
59           u_int32_t pri_cntrl;
60           int backlight_cntrl;
61           int backlight_cntrl2;
62           int backlight_factor;
63 
64           unsigned quirks;
65 };
66 #define IGMA_PLANESTART_QUIRK   (1L << 0)
67 #define IGMA_PFITDISABLE_QUIRK  (1L << 1)
68 
69 struct igma_attach_args {
70           const struct igma_chip_ops    *iaa_chip_ops;
71           struct igma_chip    iaa_chip;
72           bool                                    iaa_console;
73           char                                    iaa_name[32];
74 };
75 
76 #endif
77