From owner-freebsd-current Sun Feb 7 07:39:59 1999 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id HAA08221 for freebsd-current-outgoing; Sun, 7 Feb 1999 07:39:59 -0800 (PST) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from mail.kt.rim.or.jp (mail.kt.rim.or.jp [202.247.130.53]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id HAA08215; Sun, 7 Feb 1999 07:39:53 -0800 (PST) (envelope-from kuriyama@sky.rim.or.jp) Received: from moon.sky.rim.or.jp (ppp388.kt.rim.or.jp [202.247.140.88]) by mail.kt.rim.or.jp (8.8.5/3.6W-RIMNET-98-06-09) with ESMTP id AAA25520; Mon, 8 Feb 1999 00:39:51 +0900 (JST) Received: from sky.rim.or.jp (earth.sky.rim.or.jp [192.168.1.2]) by moon.sky.rim.or.jp (8.8.8/3.5Wpl4/moon-1.0) with ESMTP id AAA27051; Mon, 8 Feb 1999 00:39:05 +0900 (JST) Message-ID: <36BDB2D0.CA3FE4BB@sky.rim.or.jp> Date: Mon, 08 Feb 1999 00:35:44 +0900 From: Jun Kuriyama X-Mailer: Mozilla 4.06 [ja] (Win95; I) MIME-Version: 1.0 To: FreeBSD-current , nate@FreeBSD.ORG Subject: Re: [Call for Review] new ioctl for src/sys/pccard/* References: <36BDAD4E.CC8A2452@sky.rim.or.jp> Content-Type: multipart/mixed; boundary="------------6331448DC47966073EBB6A88" Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG This is a multi-part message in MIME format. --------------6331448DC47966073EBB6A88 Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit Jun Kuriyama wrote: > I'm planning to commit these changes into src/sys/pccard/. This adds > two features. These features are obtained from PAO. Sorry, I forgot to add patch. :-) -- Jun Kuriyama // kuriyama@sky.rim.or.jp // kuriyama@FreeBSD.ORG --------------6331448DC47966073EBB6A88 Content-Type: text/plain; charset=iso-2022-jp; name="pccard.diff.txt" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="pccard.diff.txt" Index: cardinfo.h =================================================================== RCS file: /home/ncvs/src/sys/pccard/cardinfo.h,v retrieving revision 1.10 diff -u -r1.10 cardinfo.h --- cardinfo.h 1998/04/20 15:20:58 1.10 +++ cardinfo.h 1999/02/07 14:20:48 @@ -45,6 +45,8 @@ #define PIOCRWFLAG _IOW('P', 7, int) /* Set flags for drv use */ #define PIOCRWMEM _IOWR('P', 8, unsigned long) /* Set mem for drv use */ #define PIOCSPOW _IOW('P', 9, struct power) /* Set power structure */ +#define PIOCSVIR _IOW('P', 10, int) /* Virtual insert/remove */ +#define PIOCSBEEP _IOW('P', 11, int) /* Select Beep */ /* * Debug codes. */ @@ -54,7 +56,7 @@ /* * Slot states for PIOCGSTATE */ -enum cardstate { noslot, empty, suspend, filled }; +enum cardstate { noslot, empty, suspend, filled, inactive }; /* * Descriptor structure for memory map. Index: driver.h =================================================================== RCS file: /home/ncvs/src/sys/pccard/driver.h,v retrieving revision 1.6 diff -u -r1.6 driver.h --- driver.h 1999/01/19 00:18:25 1.6 +++ driver.h 1999/02/07 14:20:48 @@ -23,6 +23,6 @@ void pccard_remove_beep __P((void)); void pccard_success_beep __P((void)); void pccard_failure_beep __P((void)); -void pccard_beep_select __P((enum beepstate)); +int pccard_beep_select __P((enum beepstate)); #endif /* !_PCCARD_DRIVER_H_ */ Index: pccard.c =================================================================== RCS file: /home/ncvs/src/sys/pccard/pccard.c,v retrieving revision 1.70 diff -u -r1.70 pccard.c --- pccard.c 1999/01/27 23:45:40 1.70 +++ pccard.c 1999/02/07 14:20:48 @@ -897,6 +897,7 @@ struct mem_desc *mp; struct io_desc *ip; int s, err; + int pwval; /* beep is disabled until the 1st call of crdioctl() */ pccard_beep_select(BEEP_ON); @@ -1026,6 +1027,53 @@ else pccard_failure_beep(); return err; + /* + * Virtual removal/insertion + * + * State of cards: + * + * insertion virtual removal + * (empty) --------> (filled) --------> (inactive) + * ^ ^ | ^ | | + * | | | | | | + * | +---------------+ +-----------------+ | + * | removal virtual insertion | + * | | + * +----------------------------------------+ + * removal + * + * -- hosokawa + */ + case PIOCSVIR: + pwval = *(int *)data; + /* virtual removal */ + if (!pwval) { + if (slt->state != filled) { + return EINVAL; + } + s = splhigh(); + disable_slot(slt); + slt->state = inactive; + splx(s); + pccard_remove_beep(); + selwakeup(&slt->selp); + } + /* virtual insertion */ + else { + if (slt->state != inactive) { + return EINVAL; + } + slt->insert_seq = 1; + timeout(inserted, (void *)slt, hz/4); + pccard_insert_beep(); + break; + } + break; + case PIOCSBEEP: + if (pccard_beep_select(*(int *)data)) { + return EINVAL; + } + break; } return(0); } Index: pccard_beep.c =================================================================== RCS file: /home/ncvs/src/sys/pccard/pccard_beep.c,v retrieving revision 1.1 diff -u -r1.1 pccard_beep.c --- pccard_beep.c 1997/10/26 06:06:48 1.1 +++ pccard_beep.c 1999/02/07 14:20:48 @@ -64,7 +64,11 @@ sysbeep(PCCARD_BEEP_PITCH2, PCCARD_BEEP_DURATION2); } -void pccard_beep_select(enum beepstate state) +int pccard_beep_select(enum beepstate state) { - allow_beep = state; + if (state == BEEP_ON || state == BEEP_OFF) { + allow_beep = state; + return 0; + } + return 1; } --------------6331448DC47966073EBB6A88-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message