diff options
| author | Søren Schmidt <sos@FreeBSD.org> | 2000-03-10 08:09:53 +0000 |
|---|---|---|
| committer | Søren Schmidt <sos@FreeBSD.org> | 2000-03-10 08:09:53 +0000 |
| commit | 643b70ec9d3664f96e03271d05b390205809dba8 (patch) | |
| tree | 1e0ba9e4396f1900e8ab0608c93748254bf2967c /sys/dev/ata/atapi-cd.c | |
| parent | 595166f0f76af11583145c317edaf55ec8fae674 (diff) | |
Notes
Diffstat (limited to 'sys/dev/ata/atapi-cd.c')
| -rw-r--r-- | sys/dev/ata/atapi-cd.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/sys/dev/ata/atapi-cd.c b/sys/dev/ata/atapi-cd.c index 027f5103a0292..37b707b3aae7b 100644 --- a/sys/dev/ata/atapi-cd.c +++ b/sys/dev/ata/atapi-cd.c @@ -73,6 +73,7 @@ static struct cdevsw acd_cdevsw = { int32_t acdattach(struct atapi_softc *); void acddetach(struct atapi_softc *); static struct acd_softc *acd_init_lun(struct atapi_softc *, struct devstat *); +static void acd_make_dev(struct acd_softc *); static void acd_describe(struct acd_softc *); static void lba2msf(int32_t, u_int8_t *, u_int8_t *, u_int8_t *); static int32_t msf2lba(u_int8_t, u_int8_t, u_int8_t); @@ -178,6 +179,7 @@ acdattach(struct atapi_softc *atp) DEVSTAT_NO_ORDERED_TAGS, DEVSTAT_TYPE_CDROM | DEVSTAT_TYPE_IF_IDE, DEVSTAT_PRIORITY_CD); + acd_make_dev(cdp); } } else { @@ -185,6 +187,7 @@ acdattach(struct atapi_softc *atp) DEVSTAT_NO_ORDERED_TAGS, DEVSTAT_TYPE_CDROM | DEVSTAT_TYPE_IF_IDE, DEVSTAT_PRIORITY_CD); + acd_make_dev(cdp); } acd_describe(cdp); return 0; @@ -212,7 +215,6 @@ static struct acd_softc * acd_init_lun(struct atapi_softc *atp, struct devstat *stats) { struct acd_softc *cdp; - dev_t dev; if (!(cdp = malloc(sizeof(struct acd_softc), M_ACD, M_NOWAIT))) return NULL; @@ -234,8 +236,13 @@ acd_init_lun(struct atapi_softc *atp, struct devstat *stats) else cdp->stats = stats; - cdp->atp->flags |= ATAPI_F_MEDIA_CHANGED; - cdp->atp->driver = cdp; + return cdp; +} + +static void +acd_make_dev(struct acd_softc *cdp) +{ + dev_t dev; dev = make_dev(&acd_cdevsw, dkmakeminor(cdp->lun, 0, 0), UID_ROOT, GID_OPERATOR, 0644, "acd%da", cdp->lun); @@ -249,9 +256,10 @@ acd_init_lun(struct atapi_softc *atp, struct devstat *stats) dev->si_iosize_max = 252 * DEV_BSIZE; dev->si_bsize_phys = 2048; /* XXX SOS */ cdp->dev2 = dev; + cdp->atp->flags |= ATAPI_F_MEDIA_CHANGED; + cdp->atp->driver = cdp; if ((cdp->atp->devname = malloc(8, M_ACD, M_NOWAIT))) sprintf(cdp->atp->devname, "acd%d", cdp->lun); - return cdp; } static void |
