From owner-svn-src-user@FreeBSD.ORG Thu Oct 31 11:56:04 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id A6E76565; Thu, 31 Oct 2013 11:56:04 +0000 (UTC) (envelope-from ray@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 7D37A264D; Thu, 31 Oct 2013 11:56:04 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r9VBu4hv066837; Thu, 31 Oct 2013 11:56:04 GMT (envelope-from ray@svn.freebsd.org) Received: (from ray@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r9VBu4SU066836; Thu, 31 Oct 2013 11:56:04 GMT (envelope-from ray@svn.freebsd.org) Message-Id: <201310311156.r9VBu4SU066836@svn.freebsd.org> From: Aleksandr Rybalko Date: Thu, 31 Oct 2013 11:56:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r257438 - user/ed/newcons/sys/dev/fb X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Oct 2013 11:56:04 -0000 Author: ray Date: Thu Oct 31 11:56:03 2013 New Revision: 257438 URL: http://svnweb.freebsd.org/changeset/base/257438 Log: Allow fbd to be attached as newbus device. Sponsored by: The FreeBSD Foundation Modified: user/ed/newcons/sys/dev/fb/fbd.c Modified: user/ed/newcons/sys/dev/fb/fbd.c ============================================================================== --- user/ed/newcons/sys/dev/fb/fbd.c Thu Oct 31 11:51:18 2013 (r257437) +++ user/ed/newcons/sys/dev/fb/fbd.c Thu Oct 31 11:56:03 2013 (r257438) @@ -38,13 +38,20 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include +#include #include #include + +#include + #include +#include "fb_if.h" + LIST_HEAD(fb_list_head_t, fb_list_entry) fb_list_head = LIST_HEAD_INITIALIZER(fb_list_head); struct fb_list_entry { @@ -53,6 +60,11 @@ struct fb_list_entry { LIST_ENTRY(fb_list_entry) fb_list; }; +struct fbd_softc { + device_t sc_dev; + struct fb_info *sc_info; +}; + static void fbd_evh_init(void *); /* SI_ORDER_SECOND, just after EVENTHANDLERs initialized. */ SYSINIT(fbd_evh_init, SI_SUB_CONFIGURE, SI_ORDER_SECOND, fbd_evh_init, NULL); @@ -341,3 +353,65 @@ fbd_evh_init(void *ctx) EVENTHANDLER_REGISTER(unregister_framebuffer, unregister_fb_wrap, NULL, EVENTHANDLER_PRI_ANY); } + +/* Newbus methods. */ +static int +fbd_probe(device_t dev) +{ + + return (BUS_PROBE_NOWILDCARD); +} + +static int +fbd_attach(device_t dev) +{ + struct fbd_softc *sc; + int err; + + sc = device_get_softc(dev); + + sc->sc_dev = dev; + sc->sc_info = FB_GETINFO(device_get_parent(dev)); + err = fbd_register(sc->sc_info); + + return (err); +} + +static int +fbd_detach(device_t dev) +{ + struct fbd_softc *sc; + int err; + + sc = device_get_softc(dev); + + err = fbd_unregister(sc->sc_info); + + return (err); +} + + +static device_method_t fbd_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, fbd_probe), + DEVMETHOD(device_attach, fbd_attach), + DEVMETHOD(device_detach, fbd_detach), + + DEVMETHOD(device_shutdown, bus_generic_shutdown), + DEVMETHOD(device_suspend, bus_generic_suspend), + DEVMETHOD(device_resume, bus_generic_resume), + + { 0, 0 } +}; + +driver_t fbd_driver = { + "fbd", + fbd_methods, + sizeof(struct fbd_softc) +}; + +devclass_t fbd_devclass; + +DRIVER_MODULE(fbd, fb, fbd_driver, fbd_devclass, 0, 0); +MODULE_VERSION(fbd, 1); +