diff options
author | Matthew N. Dodd <mdodd@FreeBSD.org> | 2002-10-28 02:00:09 +0000 |
---|---|---|
committer | Matthew N. Dodd <mdodd@FreeBSD.org> | 2002-10-28 02:00:09 +0000 |
commit | c7f718ec6a4086070f4f5f78a670db311f85538b (patch) | |
tree | 9cef31e1794e2ba07a05237e71d6ee724c9e5bcd /sys/dev/speaker | |
parent | d506d5dc0e91e1a84eb8d54456f530b88adf5127 (diff) | |
download | src-c7f718ec6a4086070f4f5f78a670db311f85538b.tar.gz src-c7f718ec6a4086070f4f5f78a670db311f85538b.zip |
Handle hints for the atspeaker device.
Document same.
Notes
Notes:
svn path=/head/; revision=106070
Diffstat (limited to 'sys/dev/speaker')
-rw-r--r-- | sys/dev/speaker/spkr.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/sys/dev/speaker/spkr.c b/sys/dev/speaker/spkr.c index 522e6c60c09c..e560fe694341 100644 --- a/sys/dev/speaker/spkr.c +++ b/sys/dev/speaker/spkr.c @@ -602,12 +602,36 @@ static dev_t atspeaker_dev; static int atspeaker_probe(device_t dev) { - return(ISA_PNP_PROBE(device_get_parent(dev), dev, atspeaker_ids)); + int error; + + error = ISA_PNP_PROBE(device_get_parent(dev), dev, atspeaker_ids); + + /* PnP match */ + if (error == 0) + return (0); + + /* No match */ + if (error == ENXIO) + return (ENXIO); + + /* Not configured by hints. */ + if (strncmp(device_get_name(dev), "atspeaker", 9)) + return (ENXIO); + + device_set_desc(dev, "AT speaker"); + + return (0); } static int atspeaker_attach(device_t dev) { + + if (atspeaker_dev) { + device_printf(dev, "Already attached!\n"); + return (ENXIO); + } + atspeaker_dev = make_dev(&spkr_cdevsw, 0, UID_ROOT, GID_WHEEL, 0600, "speaker"); return (0); |