From owner-freebsd-hackers Tue Dec 11 9:41:21 2001 Delivered-To: freebsd-hackers@freebsd.org Received: from fledge.watson.org (fledge.watson.org [204.156.12.50]) by hub.freebsd.org (Postfix) with ESMTP id 8E52C37B405; Tue, 11 Dec 2001 09:41:09 -0800 (PST) Received: from localhost (arr@localhost) by fledge.watson.org (8.11.6/8.11.5) with SMTP id fBBHesi28058; Tue, 11 Dec 2001 12:40:54 -0500 (EST) (envelope-from arr@FreeBSD.org) X-Authentication-Warning: fledge.watson.org: arr owned process doing -bs Date: Tue, 11 Dec 2001 12:40:53 -0500 (EST) From: "Andrew R. Reiter" X-Sender: arr@fledge.watson.org To: Poul-Henning Kamp Cc: hackers@FreeBSD.org Subject: Re: Junior Kernel hacker task: Floppy driver mode handling. In-Reply-To: <31764.1008089464@critter.freebsd.dk> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG Someone already doing this? If not, I'm down. On Tue, 11 Dec 2001, Poul-Henning Kamp wrote: : :There exists a patch for adding a mode to our floppy driver to :add DEC RX50 media handling. : :The crucial part of this is the addition of this line: : { 10,2,0xFF,0x10,80, 800,1,FDC_300KBPS,1,0x2E,1 }, /* 400K DEC RX50 */ : :But if one examines the fd.c driver, one cannot help but notice that the :handling of densities is a bit convoluted, to put it mildly. : :I'm looking for a volounteer to do this, it is a quite simple job and :I am quite sure that practically everybody has the hardware they need to :do this :-) : :Cleaning it up consists of the following steps: : :1. Define a new set of (bitmap) macros to distinguish the drive type: : #define FD_3S 0x0001 /* 3.5" single density */ : #define FD_5S 0x0002 /* 5.25" single density */ : ... : And use these instead of the FD_1200 and similar in : struct fd_data->type. : :2. Augment the struct fd_type with two new fields: : int minor; /* minor device encoding */ : int drives; /* bitmap of compatible drives (FD_[35][SD]) */ : And fill these fields out in the fd_types[NUMTYPES] array. : Add a termination entry at the end of the table so the : NUMTYPES, NUMDENS, and FD_%d[5_25] #defines can be eliminated. : :3. Change the _clone code to use the new "minor" field instead of : the private table it uses now. (Eliminate and avoid any : use of NUMTYPES, NUMDENS and FD_%d[5_25]). : :4. Change the code in Fdopen to examine the "drives" field in the : fd_types[] array instead of the hardcoded switch. (Eliminate : and avoid any use of NUMTYPES, NUMDENS and and FD_%d[5_25]); : :5. Remove any other use of NUMTYPES, NUMDENS and FD_%d[5_25] : :6. Add the "rx50" entry from above to the table to show how simple : that is now. : :7. Make it possible to define a new mode from userland with an ioctl. : (hint: instead of the index, put a pointer to the struct fd_type into : the fd_data structure.) : :Preferably, send one patch per step rather than one huge patch since that :will make reviewing easier. : :First volounteer to send me email gets the assignment. : :-- :Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 :phk@FreeBSD.ORG | TCP/IP since RFC 956 :FreeBSD committer | BSD since 4.3-tahoe :Never attribute to malice what can adequately be explained by incompetence. : :To Unsubscribe: send mail to majordomo@FreeBSD.org :with "unsubscribe freebsd-hackers" in the body of the message : -- Andrew R. Reiter arr@watson.org arr@FreeBSD.org To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message