From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with archive (Exim 4.43) id 1KYeZE-0006M4-21 for mharc-grub-devel@gnu.org; Thu, 28 Aug 2008 06:17:28 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KYeZ5-0006IN-Kd for grub-devel@gnu.org; Thu, 28 Aug 2008 06:17:20 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KYeZ1-0006GI-5V for grub-devel@gnu.org; Thu, 28 Aug 2008 06:17:17 -0400 Received: from [199.232.76.173] (port=56899 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KYeYz-0006Fh-DT for grub-devel@gnu.org; Thu, 28 Aug 2008 06:17:13 -0400 Received: from moutng.kundenserver.de ([212.227.126.171]:62070) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KYeYy-0006O9-7N for grub-devel@gnu.org; Thu, 28 Aug 2008 06:17:12 -0400 Received: from [85.180.50.80] (e180050080.adsl.alicedsl.de [85.180.50.80]) by mrelayeu.kundenserver.de (node=mrelayeu4) with ESMTP (Nemesis) id 0ML21M-1KYeYm0thu-00083p; Thu, 28 Aug 2008 12:17:00 +0200 From: Felix Zielcke To: The development of GRUB 2 In-Reply-To: <87prnuw7tl.fsf@xs4all.nl> References: <87prnuw7tl.fsf@xs4all.nl> Content-Type: text/plain Date: Thu, 28 Aug 2008 12:16:59 +0200 Message-Id: <1219918619.4598.43.camel@fz.local> Mime-Version: 1.0 X-Mailer: Evolution 2.22.3.1 Content-Transfer-Encoding: 7bit X-Provags-ID: V01U2FsdGVkX18fvqOBJB7P5gPIit4ntfICAAQu2JAaSoHssUO SGUvnh7S2HH8v1haMEj8QYjHVVEUWqcyftq05E5w8hXDnPH0/n sqZbxTiC4uAOrV1/sInu0l8epBEItsc X-detected-kernel: by monty-python.gnu.org: Linux 2.6? (barebone, rare!) Subject: Re: [RFC] USB Support X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: The development of GRUB 2 List-Id: The development of GRUB 2 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Aug 2008 10:17:21 -0000 Am Mittwoch, den 27.08.2008, 21:56 +0200 schrieb Marco Gerards: > Hi, Hello Marco, not that big as you might have expected, but maybe not that bad start. I try to get more used to this :) > - Broken OHCI support, it works in QEMu but I haven't tested on real > hardware. Please do not review ohci.c, it won't be committed but I > included it now in case someone wants to test it anyways :-) ;) Index: conf/i386-pc.rmk =================================================================== --- conf/i386-pc.rmk (revision 1830) +++ conf/i386-pc.rmk (working copy) @@ -140,14 +140,21 @@ grub_emu_SOURCES = commands/boot.c comma fs/ufs.c fs/xfs.c fs/afs.c \ \ util/console.c util/hostfs.c util/grub-emu.c util/misc.c \ - util/biosdisk.c util/getroot.c \ + util/biosdisk.c util/getroot.c \ Janitor work? :) @@ -165,7 +172,8 @@ pkglib_MODULES = biosdisk.mod _chain.mod vbe.mod vbetest.mod vbeinfo.mod video.mod gfxterm.mod \ videotest.mod play.mod bitmap.mod tga.mod cpuid.mod serial.mod \ ata.mod vga.mod memdisk.mod jpeg.mod png.mod pci.mod lspci.mod \ - aout.mod _bsd.mod bsd.mod pxe.mod pxecmd.mod datetime.mod date.mod \ + aout.mod _bsd.mod bsd.mod usb.mod uhci.mod ohci.mod usbtest.mod usbms.mod \ + pxe.mod pxecmd.mod datetime.mod date.mod \ datehook.mod I think datehook.mod feels more comfortable if it would be along with datetime.mod and date.mod Index: disk/usbms.c =================================================================== --- disk/usbms.c (revision 0) +++ disk/usbms.c (revision 0) + int usb_iterate (grub_usb_device_t usbdev) + { + grub_usb_err_t err; + struct grub_usb_desc_device *descdev = &usbdev->descdev; + int i; + + if (descdev->class != 0 || descdev->subclass || descdev->protocol != 0) + return 0; Please be consistent, != 0 isn't needed anyway. + grub_usb_iterate (usb_iterate); +} + + Weird ` ' character which seems not to make sense. + +static int +grub_usbms_iterate (int (*hook) (const char *name, int luns)) + /* XXX: Magic and check this code. */ + if (status.status == 2) A structure named status with a field status looks a bit funny, but I don't have a suggestion for you :( +static struct grub_scsi_dev grub_usbms_dev = + { + .name = "usb", Shouldn't this be "usbms" ? + .iterate = grub_usbms_iterate, + .open = grub_usbms_open, + .close = grub_usbms_close, + .read = grub_usbms_read, + .write = grub_usbms_write + }; +grub_usb_err_t +grub_usb_root_hub (grub_usb_controller_t controller); + + Again weird ` ' +/* XXX: All handled by libusb for now. */ +struct grub_usb_controller_dev +struct grub_usb_controller +{ + /* The underlying USB Host Controller device. */ + grub_usb_controller_dev_t dev; + + /* Data used by the USB Host Controller Driver. */ + void *data; +}; + Again. + +struct grub_usb_interface +{ + struct grub_usb_desc_if *descif; + + struct grub_usb_desc_endp *descendp; +}; +}; + + Again. + +typedef enum + { +typedef struct grub_usb_transfer *grub_usb_transfer_t; + + Again. +#define GRUB_USB_REQTYPE_IN (1 << 7) +#define GRUB_USB_REQTYPE_OUT (0 << 7) Index: bus/usb/uhci.c =================================================================== --- bus/usb/uhci.c (revision 0) +++ bus/usb/uhci.c (revision 0) + fail: + if (u) + { + grub_free ((void *) u->qh); + grub_free (u->framelist); + } + grub_free (u); util/misc.c: grub_free () doestn't check *ptr before calling free () But better util/misc.c get's changed then your code and bus/usb/uhci isn't compiled for grub-emu anyway :) +static int +grub_uhci_hubports (grub_usb_controller_t dev __attribute__((unused))) +{ + /* The root hub has exactly two ports. */ + return 2; +} + + Again weird ` ' character. +static struct grub_usb_controller_dev usb_controller = +{ + .name = "uhci", + .iterate = grub_uhci_iterate, + .transfer = grub_uhci_transfer, + .hubports = grub_uhci_hubports, + .portstatus = grub_uhci_portstatus, + .detect_dev = grub_uhci_detect_dev +}; Index: bus/usb/usbhub.c =================================================================== --- bus/usb/usbhub.c (revision 0) +++ bus/usb/usbhub.c (revision 0) + return dev; +} + + Again. +static grub_err_t +grub_usb_add_hub (grub_usb_device_t dev) +{ Index: bus/usb/usb.c =================================================================== --- bus/usb/usb.c (revision 0) +++ bus/usb/usb.c (revision 0) + return 0; +} +#endif + + And again weird ` ' +grub_usb_err_t +grub_usb_clear_halt (grub_usb_device_t dev, int endpoint) +{ Index: commands/usbtest.c =================================================================== --- commands/usbtest.c (revision 0) +++ commands/usbtest.c (revision 0) +static const char *usb_classes[] = + { + "", + "Audio", + "Communication Interface", + "HID", + "", Does this empty string makes sense? + "Physical", + "Image", + "Printer", + "Mass Storage", + "Hub", + "Data Interface", + "Smart Card", + "Content Security", + "Video" + }; Index: util/usb.c =================================================================== --- util/usb.c (revision 0) +++ util/usb.c (revision 0) +#include +#include +#include +#include +#include +#include + + Again weird ` ' +grub_err_t +grub_libusb_fini (void) +{ + return 0; +} + + Again. -- Felix Zielcke