FB_INSTALL_CDEV: Remove this option and related code.
This option was never enabled in GENERIC and does not appear to work (the cdevsw is stored in a global array but never passed to make_dev to be associated with a character device). Reviewed by: emaste Differential Revision: https://reviews.freebsd.org/D35008
This commit is contained in:
parent
6b06f746db
commit
0b377a49fa
@ -639,8 +639,6 @@ options PV_STATS
|
||||
# More undocumented options for linting.
|
||||
# Note that documenting these are not considered an affront.
|
||||
|
||||
options FB_INSTALL_CDEV # install a CDEV entry in /dev
|
||||
|
||||
options KBDIO_DEBUG=2
|
||||
options KBD_MAXRETRY=4
|
||||
options KBD_MAXWAIT=6
|
||||
|
@ -586,7 +586,6 @@ IFMEDIA_DEBUG opt_ifmedia.h
|
||||
|
||||
# Fb options
|
||||
FB_DEBUG opt_fb.h
|
||||
FB_INSTALL_CDEV opt_fb.h
|
||||
|
||||
# ppbus related options
|
||||
PERIPH_1284 opt_ppb_1284.h
|
||||
|
243
sys/dev/fb/fb.c
243
sys/dev/fb/fb.c
@ -66,11 +66,6 @@ static video_adapter_t **adapter = &adp_ini;
|
||||
static video_switch_t *vidsw_ini;
|
||||
video_switch_t **vidsw = &vidsw_ini;
|
||||
|
||||
#ifdef FB_INSTALL_CDEV
|
||||
static struct cdevsw *vidcdevsw_ini;
|
||||
static struct cdevsw **vidcdevsw = &vidcdevsw_ini;
|
||||
#endif
|
||||
|
||||
#define ARRAY_DELTA 4
|
||||
|
||||
static int
|
||||
@ -78,9 +73,6 @@ vid_realloc_array(void)
|
||||
{
|
||||
video_adapter_t **new_adp;
|
||||
video_switch_t **new_vidsw;
|
||||
#ifdef FB_INSTALL_CDEV
|
||||
struct cdevsw **new_cdevsw;
|
||||
#endif
|
||||
int newsize;
|
||||
int s;
|
||||
|
||||
@ -92,27 +84,14 @@ vid_realloc_array(void)
|
||||
new_adp = malloc(sizeof(*new_adp)*newsize, M_DEVBUF, M_WAITOK | M_ZERO);
|
||||
new_vidsw = malloc(sizeof(*new_vidsw)*newsize, M_DEVBUF,
|
||||
M_WAITOK | M_ZERO);
|
||||
#ifdef FB_INSTALL_CDEV
|
||||
new_cdevsw = malloc(sizeof(*new_cdevsw)*newsize, M_DEVBUF,
|
||||
M_WAITOK | M_ZERO);
|
||||
#endif
|
||||
bcopy(adapter, new_adp, sizeof(*adapter)*adapters);
|
||||
bcopy(vidsw, new_vidsw, sizeof(*vidsw)*adapters);
|
||||
#ifdef FB_INSTALL_CDEV
|
||||
bcopy(vidcdevsw, new_cdevsw, sizeof(*vidcdevsw)*adapters);
|
||||
#endif
|
||||
if (adapters > 1) {
|
||||
free(adapter, M_DEVBUF);
|
||||
free(vidsw, M_DEVBUF);
|
||||
#ifdef FB_INSTALL_CDEV
|
||||
free(vidcdevsw, M_DEVBUF);
|
||||
#endif
|
||||
}
|
||||
adapter = new_adp;
|
||||
vidsw = new_vidsw;
|
||||
#ifdef FB_INSTALL_CDEV
|
||||
vidcdevsw = new_cdevsw;
|
||||
#endif
|
||||
adapters = newsize;
|
||||
splx(s);
|
||||
|
||||
@ -296,230 +275,8 @@ vid_configure(int flags)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Virtual frame buffer cdev driver functions
|
||||
* The virtual frame buffer driver dispatches driver functions to
|
||||
* appropriate subdrivers.
|
||||
*/
|
||||
|
||||
#define FB_DRIVER_NAME "fb"
|
||||
|
||||
#ifdef FB_INSTALL_CDEV
|
||||
|
||||
#if 0 /* experimental */
|
||||
|
||||
static devclass_t fb_devclass;
|
||||
|
||||
static int fbprobe(device_t dev);
|
||||
static int fbattach(device_t dev);
|
||||
|
||||
static device_method_t fb_methods[] = {
|
||||
DEVMETHOD(device_probe, fbprobe),
|
||||
DEVMETHOD(device_attach, fbattach),
|
||||
|
||||
DEVMETHOD_END
|
||||
};
|
||||
|
||||
static driver_t fb_driver = {
|
||||
FB_DRIVER_NAME,
|
||||
fb_methods,
|
||||
0,
|
||||
};
|
||||
|
||||
static int
|
||||
fbprobe(device_t dev)
|
||||
{
|
||||
int unit;
|
||||
|
||||
unit = device_get_unit(dev);
|
||||
if (unit >= adapters)
|
||||
return ENXIO;
|
||||
if (adapter[unit] == NULL)
|
||||
return ENXIO;
|
||||
|
||||
device_set_desc(dev, "generic frame buffer");
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
fbattach(device_t dev)
|
||||
{
|
||||
printf("fbattach: about to attach children\n");
|
||||
bus_generic_attach(dev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#define FB_UNIT(dev) dev2unit(dev)
|
||||
#define FB_MKMINOR(unit) (u)
|
||||
|
||||
#if 0 /* experimental */
|
||||
static d_open_t fbopen;
|
||||
static d_close_t fbclose;
|
||||
static d_read_t fbread;
|
||||
static d_write_t fbwrite;
|
||||
static d_ioctl_t fbioctl;
|
||||
static d_mmap_t fbmmap;
|
||||
|
||||
|
||||
static struct cdevsw fb_cdevsw = {
|
||||
.d_version = D_VERSION,
|
||||
.d_flags = D_NEEDGIANT,
|
||||
.d_open = fbopen,
|
||||
.d_close = fbclose,
|
||||
.d_read = fbread,
|
||||
.d_write = fbwrite,
|
||||
.d_ioctl = fbioctl,
|
||||
.d_mmap = fbmmap,
|
||||
.d_name = FB_DRIVER_NAME,
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
static int
|
||||
fb_modevent(module_t mod, int type, void *data)
|
||||
{
|
||||
|
||||
switch (type) {
|
||||
case MOD_LOAD:
|
||||
break;
|
||||
case MOD_UNLOAD:
|
||||
printf("fb module unload - not possible for this module type\n");
|
||||
return EINVAL;
|
||||
default:
|
||||
return EOPNOTSUPP;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static moduledata_t fb_mod = {
|
||||
"fb",
|
||||
fb_modevent,
|
||||
NULL
|
||||
};
|
||||
|
||||
DECLARE_MODULE(fb, fb_mod, SI_SUB_PSEUDO, SI_ORDER_ANY);
|
||||
|
||||
int
|
||||
fb_attach(int unit, video_adapter_t *adp, struct cdevsw *cdevsw)
|
||||
{
|
||||
int s;
|
||||
|
||||
if (adp->va_index >= adapters)
|
||||
return EINVAL;
|
||||
if (adapter[adp->va_index] != adp)
|
||||
return EINVAL;
|
||||
|
||||
s = spltty();
|
||||
adp->va_minor = unit;
|
||||
vidcdevsw[adp->va_index] = cdevsw;
|
||||
splx(s);
|
||||
|
||||
printf("fb%d at %s%d\n", adp->va_index, adp->va_name, adp->va_unit);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
fb_detach(int unit, video_adapter_t *adp, struct cdevsw *cdevsw)
|
||||
{
|
||||
int s;
|
||||
|
||||
if (adp->va_index >= adapters)
|
||||
return EINVAL;
|
||||
if (adapter[adp->va_index] != adp)
|
||||
return EINVAL;
|
||||
if (vidcdevsw[adp->va_index] != cdevsw)
|
||||
return EINVAL;
|
||||
|
||||
s = spltty();
|
||||
vidcdevsw[adp->va_index] = NULL;
|
||||
splx(s);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Generic frame buffer cdev driver functions
|
||||
* Frame buffer subdrivers may call these functions to implement common
|
||||
* driver functions.
|
||||
*/
|
||||
|
||||
int genfbopen(genfb_softc_t *sc, video_adapter_t *adp, int flag, int mode,
|
||||
struct thread *td)
|
||||
{
|
||||
int s;
|
||||
|
||||
s = spltty();
|
||||
if (!(sc->gfb_flags & FB_OPEN))
|
||||
sc->gfb_flags |= FB_OPEN;
|
||||
splx(s);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int genfbclose(genfb_softc_t *sc, video_adapter_t *adp, int flag, int mode,
|
||||
struct thread *td)
|
||||
{
|
||||
int s;
|
||||
|
||||
s = spltty();
|
||||
sc->gfb_flags &= ~FB_OPEN;
|
||||
splx(s);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int genfbread(genfb_softc_t *sc, video_adapter_t *adp, struct uio *uio,
|
||||
int flag)
|
||||
{
|
||||
int size;
|
||||
int offset;
|
||||
int error;
|
||||
int len;
|
||||
|
||||
error = 0;
|
||||
size = adp->va_buffer_size/adp->va_info.vi_planes;
|
||||
while (uio->uio_resid > 0) {
|
||||
if (uio->uio_offset >= size)
|
||||
break;
|
||||
offset = uio->uio_offset%adp->va_window_size;
|
||||
len = imin(uio->uio_resid, size - uio->uio_offset);
|
||||
len = imin(len, adp->va_window_size - offset);
|
||||
if (len <= 0)
|
||||
break;
|
||||
vidd_set_win_org(adp, uio->uio_offset);
|
||||
error = uiomove((caddr_t)(adp->va_window + offset), len, uio);
|
||||
if (error)
|
||||
break;
|
||||
}
|
||||
return error;
|
||||
}
|
||||
|
||||
int genfbwrite(genfb_softc_t *sc, video_adapter_t *adp, struct uio *uio,
|
||||
int flag)
|
||||
{
|
||||
return ENODEV;
|
||||
}
|
||||
|
||||
int genfbioctl(genfb_softc_t *sc, video_adapter_t *adp, u_long cmd,
|
||||
caddr_t arg, int flag, struct thread *td)
|
||||
{
|
||||
int error;
|
||||
|
||||
if (adp == NULL) /* XXX */
|
||||
return ENXIO;
|
||||
error = vidd_ioctl(adp, cmd, arg);
|
||||
if (error == ENOIOCTL)
|
||||
error = ENODEV;
|
||||
return error;
|
||||
}
|
||||
|
||||
int genfbmmap(genfb_softc_t *sc, video_adapter_t *adp, vm_ooffset_t offset,
|
||||
vm_paddr_t *paddr, int prot, vm_memattr_t *memattr)
|
||||
{
|
||||
return vidd_mmap(adp, offset, paddr, prot, memattr);
|
||||
}
|
||||
|
||||
#endif /* FB_INSTALL_CDEV */
|
||||
|
||||
static char
|
||||
*adapter_name(int type)
|
||||
{
|
||||
|
@ -294,37 +294,6 @@ video_adapter_t *vid_get_adapter(int index);
|
||||
int vid_configure(int flags);
|
||||
#define VIO_PROBE_ONLY (1 << 0) /* probe only, don't initialize */
|
||||
|
||||
#ifdef FB_INSTALL_CDEV
|
||||
|
||||
/* virtual frame buffer driver functions */
|
||||
int fb_attach(int unit, video_adapter_t *adp,
|
||||
struct cdevsw *cdevsw);
|
||||
int fb_detach(int unit, video_adapter_t *adp,
|
||||
struct cdevsw *cdevsw);
|
||||
|
||||
/* generic frame buffer cdev driver functions */
|
||||
|
||||
typedef struct genfb_softc {
|
||||
int gfb_flags; /* flag/status bits */
|
||||
#define FB_OPEN (1 << 0)
|
||||
} genfb_softc_t;
|
||||
|
||||
int genfbopen(genfb_softc_t *sc, video_adapter_t *adp,
|
||||
int flag, int mode, struct thread *td);
|
||||
int genfbclose(genfb_softc_t *sc, video_adapter_t *adp,
|
||||
int flag, int mode, struct thread *td);
|
||||
int genfbread(genfb_softc_t *sc, video_adapter_t *adp,
|
||||
struct uio *uio, int flag);
|
||||
int genfbwrite(genfb_softc_t *sc, video_adapter_t *adp,
|
||||
struct uio *uio, int flag);
|
||||
int genfbioctl(genfb_softc_t *sc, video_adapter_t *adp,
|
||||
u_long cmd, caddr_t arg, int flag, struct thread *td);
|
||||
int genfbmmap(genfb_softc_t *sc, video_adapter_t *adp,
|
||||
vm_ooffset_t offset, vm_paddr_t *paddr,
|
||||
int prot, vm_memattr_t *memattr);
|
||||
|
||||
#endif /* FB_INSTALL_CDEV */
|
||||
|
||||
/* generic low-level driver functions */
|
||||
|
||||
void fb_dump_adp_info(char *driver, video_adapter_t *adp, int level);
|
||||
|
@ -105,55 +105,6 @@ vga_attach_unit(int unit, vga_softc_t *sc, int flags)
|
||||
return (*sw->init)(unit, sc->adp, flags);
|
||||
}
|
||||
|
||||
/* cdev driver functions */
|
||||
|
||||
#ifdef FB_INSTALL_CDEV
|
||||
|
||||
int
|
||||
vga_open(struct cdev *dev, vga_softc_t *sc, int flag, int mode, struct thread *td)
|
||||
{
|
||||
if (sc == NULL)
|
||||
return ENXIO;
|
||||
if (mode & (O_CREAT | O_APPEND | O_TRUNC))
|
||||
return ENODEV;
|
||||
|
||||
return genfbopen(&sc->gensc, sc->adp, flag, mode, td);
|
||||
}
|
||||
|
||||
int
|
||||
vga_close(struct cdev *dev, vga_softc_t *sc, int flag, int mode, struct thread *td)
|
||||
{
|
||||
return genfbclose(&sc->gensc, sc->adp, flag, mode, td);
|
||||
}
|
||||
|
||||
int
|
||||
vga_read(struct cdev *dev, vga_softc_t *sc, struct uio *uio, int flag)
|
||||
{
|
||||
return genfbread(&sc->gensc, sc->adp, uio, flag);
|
||||
}
|
||||
|
||||
int
|
||||
vga_write(struct cdev *dev, vga_softc_t *sc, struct uio *uio, int flag)
|
||||
{
|
||||
return genfbread(&sc->gensc, sc->adp, uio, flag);
|
||||
}
|
||||
|
||||
int
|
||||
vga_ioctl(struct cdev *dev, vga_softc_t *sc, u_long cmd, caddr_t arg, int flag,
|
||||
struct thread *td)
|
||||
{
|
||||
return genfbioctl(&sc->gensc, sc->adp, cmd, arg, flag, td);
|
||||
}
|
||||
|
||||
int
|
||||
vga_mmap(struct cdev *dev, vga_softc_t *sc, vm_ooffset_t offset,
|
||||
vm_paddr_t *paddr, int prot, vm_memattr_t *memattr)
|
||||
{
|
||||
return genfbmmap(&sc->gensc, sc->adp, offset, paddr, prot, memattr);
|
||||
}
|
||||
|
||||
#endif /* FB_INSTALL_CDEV */
|
||||
|
||||
/* LOW-LEVEL */
|
||||
|
||||
#include <isa/rtc.h>
|
||||
|
@ -73,27 +73,11 @@ typedef struct vga_softc {
|
||||
struct video_adapter *adp;
|
||||
void *state_buf;
|
||||
void *pal_buf;
|
||||
#ifdef FB_INSTALL_CDEV
|
||||
genfb_softc_t gensc;
|
||||
#endif
|
||||
} vga_softc_t;
|
||||
|
||||
int vga_probe_unit(int unit, struct video_adapter *adp, int flags);
|
||||
int vga_attach_unit(int unit, vga_softc_t *sc, int flags);
|
||||
|
||||
#ifdef FB_INSTALL_CDEV
|
||||
int vga_open(struct cdev *dev, vga_softc_t *sc, int flag, int mode,
|
||||
struct thread *td);
|
||||
int vga_close(struct cdev *dev, vga_softc_t *sc, int flag, int mode,
|
||||
struct thread *td);
|
||||
int vga_read(struct cdev *dev, vga_softc_t *sc, struct uio *uio, int flag);
|
||||
int vga_write(struct cdev *dev, vga_softc_t *sc, struct uio *uio, int flag);
|
||||
int vga_ioctl(struct cdev *dev, vga_softc_t *sc, u_long cmd, caddr_t arg,
|
||||
int flag, struct thread *td);
|
||||
int vga_mmap(struct cdev *dev, vga_softc_t *sc, vm_ooffset_t offset,
|
||||
vm_paddr_t *paddr, int prot, vm_memattr_t *memattr);
|
||||
#endif
|
||||
|
||||
extern int (*vga_sub_configure)(int flags);
|
||||
|
||||
#endif /* _KERNEL */
|
||||
|
@ -877,8 +877,6 @@ options PV_STATS
|
||||
# More undocumented options for linting.
|
||||
# Note that documenting these are not considered an affront.
|
||||
|
||||
options FB_INSTALL_CDEV # install a CDEV entry in /dev
|
||||
|
||||
options KBDIO_DEBUG=2
|
||||
options KBD_MAXRETRY=4
|
||||
options KBD_MAXWAIT=6
|
||||
|
@ -131,34 +131,8 @@ vga_resume(device_t dev)
|
||||
}
|
||||
}
|
||||
|
||||
#define VGA_SOFTC(unit) \
|
||||
((vga_softc_t *)devclass_get_softc(isavga_devclass, unit))
|
||||
|
||||
static devclass_t isavga_devclass;
|
||||
|
||||
#ifdef FB_INSTALL_CDEV
|
||||
|
||||
static d_open_t isavga_open;
|
||||
static d_close_t isavga_close;
|
||||
static d_read_t isavga_read;
|
||||
static d_write_t isavga_write;
|
||||
static d_ioctl_t isavga_ioctl;
|
||||
static d_mmap_t isavga_mmap;
|
||||
|
||||
static struct cdevsw isavga_cdevsw = {
|
||||
.d_version = D_VERSION,
|
||||
.d_flags = D_NEEDGIANT,
|
||||
.d_open = isavga_open,
|
||||
.d_close = isavga_close,
|
||||
.d_read = isavga_read,
|
||||
.d_write = isavga_write,
|
||||
.d_ioctl = isavga_ioctl,
|
||||
.d_mmap = isavga_mmap,
|
||||
.d_name = VGA_DRIVER_NAME,
|
||||
};
|
||||
|
||||
#endif /* FB_INSTALL_CDEV */
|
||||
|
||||
static void
|
||||
isavga_identify(driver_t *driver, device_t parent)
|
||||
{
|
||||
@ -216,13 +190,6 @@ isavga_attach(device_t dev)
|
||||
if (error)
|
||||
return (error);
|
||||
|
||||
#ifdef FB_INSTALL_CDEV
|
||||
/* attach a virtual frame buffer device */
|
||||
error = fb_attach(VGA_MKMINOR(unit), sc->adp, &isavga_cdevsw);
|
||||
if (error)
|
||||
return (error);
|
||||
#endif /* FB_INSTALL_CDEV */
|
||||
|
||||
if (0 && bootverbose)
|
||||
vidd_diag(sc->adp, bootverbose);
|
||||
|
||||
@ -256,48 +223,6 @@ isavga_resume(device_t dev)
|
||||
return (bus_generic_resume(dev));
|
||||
}
|
||||
|
||||
#ifdef FB_INSTALL_CDEV
|
||||
|
||||
static int
|
||||
isavga_open(struct cdev *dev, int flag, int mode, struct thread *td)
|
||||
{
|
||||
return (vga_open(dev, VGA_SOFTC(VGA_UNIT(dev)), flag, mode, td));
|
||||
}
|
||||
|
||||
static int
|
||||
isavga_close(struct cdev *dev, int flag, int mode, struct thread *td)
|
||||
{
|
||||
return (vga_close(dev, VGA_SOFTC(VGA_UNIT(dev)), flag, mode, td));
|
||||
}
|
||||
|
||||
static int
|
||||
isavga_read(struct cdev *dev, struct uio *uio, int flag)
|
||||
{
|
||||
return (vga_read(dev, VGA_SOFTC(VGA_UNIT(dev)), uio, flag));
|
||||
}
|
||||
|
||||
static int
|
||||
isavga_write(struct cdev *dev, struct uio *uio, int flag)
|
||||
{
|
||||
return (vga_write(dev, VGA_SOFTC(VGA_UNIT(dev)), uio, flag));
|
||||
}
|
||||
|
||||
static int
|
||||
isavga_ioctl(struct cdev *dev, u_long cmd, caddr_t arg, int flag, struct thread *td)
|
||||
{
|
||||
return (vga_ioctl(dev, VGA_SOFTC(VGA_UNIT(dev)), cmd, arg, flag, td));
|
||||
}
|
||||
|
||||
static int
|
||||
isavga_mmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr,
|
||||
int prot, vm_memattr_t *memattr)
|
||||
{
|
||||
return (vga_mmap(dev, VGA_SOFTC(VGA_UNIT(dev)), offset, paddr, prot,
|
||||
memattr));
|
||||
}
|
||||
|
||||
#endif /* FB_INSTALL_CDEV */
|
||||
|
||||
static device_method_t isavga_methods[] = {
|
||||
DEVMETHOD(device_identify, isavga_identify),
|
||||
DEVMETHOD(device_probe, isavga_probe),
|
||||
|
Loading…
Reference in New Issue
Block a user