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:
John Baldwin 2022-04-21 10:29:14 -07:00
parent 6b06f746db
commit 0b377a49fa
8 changed files with 0 additions and 419 deletions

View File

@ -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

View File

@ -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

View File

@ -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)
{

View File

@ -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);

View File

@ -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>

View File

@ -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 */

View File

@ -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

View File

@ -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),