grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC] USB Support


From: Felix Zielcke
Subject: Re: [RFC] USB Support
Date: Thu, 28 Aug 2008 12:16:59 +0200

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 <config.h>
+#include <grub/misc.h>
+#include <grub/mm.h>
+#include <usb.h>
+#include <grub/usb.h>
+#include <grub/dl.h>
+
+

Again weird `'

+grub_err_t
+grub_libusb_fini (void)
+{
+  return 0;
+}
+
+

Again.


-- 
Felix Zielcke





reply via email to

[Prev in Thread] Current Thread [Next in Thread]