Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/vt/hw/vga/vt_vga.c
Show All 24 Lines | |||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | * 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 | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||||
* SUCH DAMAGE. | * SUCH DAMAGE. | ||||
*/ | */ | ||||
#include "opt_acpi.h" | |||||
#include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||
__FBSDID("$FreeBSD$"); | __FBSDID("$FreeBSD$"); | ||||
#include <sys/param.h> | #include <sys/param.h> | ||||
#include <sys/kernel.h> | #include <sys/kernel.h> | ||||
#include <sys/systm.h> | #include <sys/systm.h> | ||||
#include <sys/bus.h> | #include <sys/bus.h> | ||||
#include <sys/module.h> | #include <sys/module.h> | ||||
#include <sys/rman.h> | #include <sys/rman.h> | ||||
#include <dev/vt/vt.h> | #include <dev/vt/vt.h> | ||||
#include <dev/vt/hw/vga/vt_vga_reg.h> | #include <dev/vt/hw/vga/vt_vga_reg.h> | ||||
#include <dev/pci/pcivar.h> | #include <dev/pci/pcivar.h> | ||||
#include <machine/bus.h> | #include <machine/bus.h> | ||||
#if ((defined(__amd64__) || defined(__i386__)) && defined(DEV_ACPI)) | |||||
#include <contrib/dev/acpica/include/acpi.h> | |||||
#endif | |||||
struct vga_softc { | struct vga_softc { | ||||
bus_space_tag_t vga_fb_tag; | bus_space_tag_t vga_fb_tag; | ||||
bus_space_handle_t vga_fb_handle; | bus_space_handle_t vga_fb_handle; | ||||
bus_space_tag_t vga_reg_tag; | bus_space_tag_t vga_reg_tag; | ||||
bus_space_handle_t vga_reg_handle; | bus_space_handle_t vga_reg_handle; | ||||
int vga_wmode; | int vga_wmode; | ||||
term_color_t vga_curfg, vga_curbg; | term_color_t vga_curfg, vga_curbg; | ||||
boolean_t vga_enabled; | boolean_t vga_enabled; | ||||
▲ Show 20 Lines • Show All 1,134 Lines • ▼ Show 20 Lines | if (!textmode) { | ||||
* the latches. | * the latches. | ||||
*/ | */ | ||||
sc->vga_curfg = sc->vga_curbg = 0xff; | sc->vga_curfg = sc->vga_curbg = 0xff; | ||||
} | } | ||||
return (0); | return (0); | ||||
} | } | ||||
static bool | |||||
vga_acpi_disabled(void) | |||||
{ | |||||
#if ((defined(__amd64__) || defined(__i386__)) && defined(DEV_ACPI)) | |||||
ACPI_TABLE_FADT *fadt; | |||||
vm_paddr_t physaddr; | |||||
uint16_t flags; | |||||
physaddr = acpi_find_table(ACPI_SIG_FADT); | |||||
if (physaddr == 0) | |||||
return (false); | |||||
fadt = acpi_map_table(physaddr, ACPI_SIG_FADT); | |||||
if (fadt == NULL) { | |||||
printf("vt_vga: unable to map FADT ACPI table\n"); | |||||
return (false); | |||||
} | |||||
flags = fadt->BootFlags; | |||||
acpi_unmap_table(fadt); | |||||
if (flags & ACPI_FADT_NO_VGA) | |||||
return (true); | |||||
#endif | |||||
return (false); | |||||
} | |||||
static int | static int | ||||
vga_probe(struct vt_device *vd) | vga_probe(struct vt_device *vd) | ||||
{ | { | ||||
return (CN_INTERNAL); | return (vga_acpi_disabled() ? CN_DEAD : CN_INTERNAL); | ||||
} | } | ||||
static int | static int | ||||
vga_init(struct vt_device *vd) | vga_init(struct vt_device *vd) | ||||
{ | { | ||||
struct vga_softc *sc; | struct vga_softc *sc; | ||||
int textmode; | int textmode; | ||||
▲ Show 20 Lines • Show All 104 Lines • Show Last 20 Lines |