]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
2010-06-02 Aleš Nesrsta <starous@volny.cz>
authorAleš Nesrsta <starous@volny.cz>
Wed, 2 Jun 2010 15:16:20 +0000 (17:16 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Wed, 2 Jun 2010 15:16:20 +0000 (17:16 +0200)
Finally make USB usable.

* bus/usb/ohci.c (grub_ohci_reg_t): Add missing values.
(GRUB_OHCI_RHUB_PORT_POWER_MASK): New macro.
(GRUB_OHCI_RHUB_PORT_ALL_POWERED): Likewise.
(GRUB_OHCI_REG_FRAME_INTERVAL_FSMPS_MASK): Likewise.
(GRUB_OHCI_REG_FRAME_INTERVAL_FSMPS_SHIFT): Likewise.
(GRUB_OHCI_REG_FRAME_INTERVAL_FI_SHIFT): Likewise.
(GRUB_OHCI_FSMPS): Likewise.
(GRUB_OHCI_PERIODIC_START): Likewise.
(GRUB_OHCI_FRAME_INTERVAL): Likewise.
(GRUB_OHCI_SET_PORT_ENABLE): Likewise.
(GRUB_OHCI_CLEAR_PORT_ENABLE): Likewise.
(GRUB_OHCI_SET_PORT_RESET): Likewise.
(GRUB_OHCI_SET_PORT_RESET_STATUS_CHANGE): Likewise.
* bus/usb/ohci.c (grub_ohci_pci_iter): Various important fixups.
(grub_ohci_transaction): Likewise.
(grub_ohci_transfer): Improve condition detection algorithms.
Handle toggle property. Program the transactions correctly.
Improve error handling. Various important fixups.
(grub_ohci_portstatus): Put register writes in right order.
* bus/usb/uhci.c (grub_free_queue): Compute last_trans.
(grub_uhci_transfer): Don't show "failed" message on success.
* bus/usb/usb.c (grub_usb_set_configuration): Zero-fill whole "toggle"
array.
(grub_usb_device_initialize): Read first 8 bytes of descriptor to
determine its size.
* bus/usb/usbtrans.c (grub_usb_control_msg): Use descdev.maxsize0 even
before initialization is completed. Use IN direction for empty
transfers. Use last_trans and compute toggle.
* include/grub/usbtrans.h (grub_usb_transfer): New field last_trans.
(GRUB_USB_FEATURE_ENDP_HALT): Correct the value.
(GRUB_USB_FEATURE_DEV_REMOTE_WU): Likewise.
(GRUB_USB_FEATURE_TEST_MODE): Likewise.
* include/grub/usb.h (grub_usb_err_t): New value GRUB_USB_ERR_UNRECOVERABLE.
(grub_usb_device): Increase toggle to 256.
(grub_usbms_subclass_t): New values GRUB_USBMS_SUBCLASS_RBC,
GRUB_USBMS_SUBCLASS_MMC2, GRUB_USBMS_SUBCLASS_UFI and
GRUB_USBMS_SUBCLASS_SFF8070.
* include/grub/scsicmd.h (grub_scsi_test_unit_ready): New structure.
(grub_scsi_inquiry): New member page and alloc_length.
(grub_scsi_request_sense): New structure.
(grub_scsi_request_sense_data): Likewise.
(grub_scsi_read_capacity): New fields logical_block_addr, PMI and
control.
* disk/scsi.c (grub_scsi_request_sense): New function.
(grub_scsi_test_unit_ready): Likewise.
(grub_scsi_inquiry): Fill new fields.
(grub_scsi_read_capacity): Likewise.
(grub_scsi_read10): Add request sense at the end.
(grub_scsi_read12): Likewise.
(grub_scsi_write10): Likewise.
(grub_scsi_write12): Likewise.
(grub_scsi_open): Add Test Unit Ready.
* disk/usbms.c (grub_usbms_finddevs): Check configcnt.
Support additional subclasses. Con't clear halt yet. Activate the
proper config. Calculate LUNs correctly.
(grub_usbms_transfer): Various important fixups.

2010-06-02  Vladimir Serbinenko  <phcoder@gmail.com>

* bus/pci.c (grub_pci_iterate) [GRUB_MACHINE_MIPS_YEELOONG]: Skip ghosts.
* bus/usb/ohci.c (grub_ohci_portstatus): Handle R/WC correctly.
(grub_ohci_fini_hw): New function.
(grub_ohci_restore_hw): Likewise.
(GRUB_MOD_INIT(ohci)): Register preboot hook.
(GRUB_MOD_FINI(ohci)): Shutdown OHCI.
* term/usb_keyboard.c: Remove include of grub/machine/console.h.

2010-06-02  Vladimir Serbinenko  <phcoder@gmail.com>

Dedicated DMA allocations.

* bus/pci.c (grub_memalign_dma32): New function
(grub_dma_free): Likewise.
(grub_dma_get_virt): Likewise.
(grub_dma_get_phys): Likewise.
* bus/usb/ohci.c (grub_ohci): New members hcca_addr and hcca_chunk.
(grub_ohci_pci_iter): Use dma32_alloc.
(grub_ohci_transfer): Likewise.
* bus/usb/usbtrans.c (grub_usb_control_msg): Likewise.
(grub_usb_bulk_readwrite): Likewise.
* include/grub/pci.h: Add declarations.

2010-06-02  Vladimir Serbinenko  <phcoder@gmail.com>

CS5536 support.

* bus/cs5536.c: New file.
* bus/usb/ohci.c (grub_ohci_pci_iter): Check for CS5536.
* conf/i386.rmk (pkglib_MODULES): Add cs5536.mod.
(cs5536_mod_SOURCES): New variable.
(cs5536_mod_CFLAGS): Likewise.
(cs5536_mod_LDFLAGS): Likewise.
* conf/mips-yeeloong.rmk (kernel_img_HEADERS): Add cs5536.h and
machine/pci.h.
(kernel_img_SOURCES): Add bus/cs5536.c.
(pkglib_MODULES): Add usb.mod, usbtest.mod, ohci.mod, usbms.mod and
usb_keyboard.mod.
(usb_mod_SOURCES): New variable.
(usb_mod_CFLAGS): New variable.
(usb_mod_LDFLAGS): New variable.
(usbtest_mod_SOURCES): New variable.
(usbtest_mod_CFLAGS): New variable.
(usbtest_mod_LDFLAGS): New variable.
(ohci_mod_SOURCES): New variable.
(ohci_mod_CFLAGS): New variable.
(ohci_mod_LDFLAGS): New variable.
(usbms_mod_SOURCES): New variable.
(usbms_mod_CFLAGS): New variable.
(usbms_mod_LDFLAGS): New variable.
(usb_keyboard_mod_SOURCES): New variable.
(usb_keyboard_mod_CFLAGS): New variable.
(usb_keyboard_mod_LDFLAGS): New variable.
* include/grub/smbus.h: New file.
* include/grub/cs5536.h: New file.

Also-By: Vladimir Serbinenko <phcoder@gmail.com>
1  2 
ChangeLog
bus/pci.c

diff --cc ChangeLog
index fb73905e22efacc114bd0df4a2257f2015b3db2f,a693e43857aadc722dcdbc6f25314d07b4f61feb..49583746cf2cb67c3bd46c32262b36fa7f94d276
+++ b/ChangeLog
+ 2010-06-02  Aleš Nesrsta <starous@volny.cz>
+       Finally make USB usable.
+       * bus/usb/ohci.c (grub_ohci_reg_t): Add missing values.
+       (GRUB_OHCI_RHUB_PORT_POWER_MASK): New macro.
+       (GRUB_OHCI_RHUB_PORT_ALL_POWERED): Likewise.
+       (GRUB_OHCI_REG_FRAME_INTERVAL_FSMPS_MASK): Likewise.
+       (GRUB_OHCI_REG_FRAME_INTERVAL_FSMPS_SHIFT): Likewise.
+       (GRUB_OHCI_REG_FRAME_INTERVAL_FI_SHIFT): Likewise.
+       (GRUB_OHCI_FSMPS): Likewise.
+       (GRUB_OHCI_PERIODIC_START): Likewise.
+       (GRUB_OHCI_FRAME_INTERVAL): Likewise.
+       (GRUB_OHCI_SET_PORT_ENABLE): Likewise.
+       (GRUB_OHCI_CLEAR_PORT_ENABLE): Likewise.
+       (GRUB_OHCI_SET_PORT_RESET): Likewise.
+       (GRUB_OHCI_SET_PORT_RESET_STATUS_CHANGE): Likewise.
+       * bus/usb/ohci.c (grub_ohci_pci_iter): Various important fixups.
+       (grub_ohci_transaction): Likewise.
+       (grub_ohci_transfer): Improve condition detection algorithms.
+       Handle toggle property. Program the transactions correctly.
+       Improve error handling. Various important fixups.
+       (grub_ohci_portstatus): Put register writes in right order.
+       * bus/usb/uhci.c (grub_free_queue): Compute last_trans.
+       (grub_uhci_transfer): Don't show "failed" message on success.
+       * bus/usb/usb.c (grub_usb_set_configuration): Zero-fill whole "toggle"
+       array.
+       (grub_usb_device_initialize): Read first 8 bytes of descriptor to
+       determine its size.
+       * bus/usb/usbtrans.c (grub_usb_control_msg): Use descdev.maxsize0 even
+       before initialization is completed. Use IN direction for empty
+       transfers. Use last_trans and compute toggle.
+       * include/grub/usbtrans.h (grub_usb_transfer): New field last_trans.
+       (GRUB_USB_FEATURE_ENDP_HALT): Correct the value.
+       (GRUB_USB_FEATURE_DEV_REMOTE_WU): Likewise.
+       (GRUB_USB_FEATURE_TEST_MODE): Likewise.
+       * include/grub/usb.h (grub_usb_err_t): New value GRUB_USB_ERR_UNRECOVERABLE.
+       (grub_usb_device): Increase toggle to 256.
+       (grub_usbms_subclass_t): New values GRUB_USBMS_SUBCLASS_RBC,
+       GRUB_USBMS_SUBCLASS_MMC2, GRUB_USBMS_SUBCLASS_UFI and
+       GRUB_USBMS_SUBCLASS_SFF8070.
+       * include/grub/scsicmd.h (grub_scsi_test_unit_ready): New structure.
+       (grub_scsi_inquiry): New member page and alloc_length.
+       (grub_scsi_request_sense): New structure.
+       (grub_scsi_request_sense_data): Likewise.
+       (grub_scsi_read_capacity): New fields logical_block_addr, PMI and
+       control.
+       * disk/scsi.c (grub_scsi_request_sense): New function.
+       (grub_scsi_test_unit_ready): Likewise.
+       (grub_scsi_inquiry): Fill new fields.
+       (grub_scsi_read_capacity): Likewise.
+       (grub_scsi_read10): Add request sense at the end.
+       (grub_scsi_read12): Likewise.
+       (grub_scsi_write10): Likewise.
+       (grub_scsi_write12): Likewise.
+       (grub_scsi_open): Add Test Unit Ready.
+       * disk/usbms.c (grub_usbms_finddevs): Check configcnt.
+       Support additional subclasses. Con't clear halt yet. Activate the
+       proper config. Calculate LUNs correctly.
+       (grub_usbms_transfer): Various important fixups.
+ 2010-06-02  Vladimir Serbinenko  <phcoder@gmail.com>
+       * bus/pci.c (grub_pci_iterate) [GRUB_MACHINE_MIPS_YEELOONG]: Skip ghosts.
+       * bus/usb/ohci.c (grub_ohci_portstatus): Handle R/WC correctly.
+       (grub_ohci_fini_hw): New function.
+       (grub_ohci_restore_hw): Likewise.
+       (GRUB_MOD_INIT(ohci)): Register preboot hook.
+       (GRUB_MOD_FINI(ohci)): Shutdown OHCI.
+       * term/usb_keyboard.c: Remove include of grub/machine/console.h.
+ 2010-06-02  Vladimir Serbinenko  <phcoder@gmail.com>
+       Dedicated DMA allocations.
+       * bus/pci.c (grub_memalign_dma32): New function
+       (grub_dma_free): Likewise.
+       (grub_dma_get_virt): Likewise.
+       (grub_dma_get_phys): Likewise.
+       * bus/usb/ohci.c (grub_ohci): New members hcca_addr and hcca_chunk.
+       (grub_ohci_pci_iter): Use dma32_alloc.
+       (grub_ohci_transfer): Likewise.
+       * bus/usb/usbtrans.c (grub_usb_control_msg): Likewise.
+       (grub_usb_bulk_readwrite): Likewise.
+       * include/grub/pci.h: Add declarations.
+ 2010-06-02  Vladimir Serbinenko  <phcoder@gmail.com>
+       CS5536 support.
+       * bus/cs5536.c: New file.
+       * bus/usb/ohci.c (grub_ohci_pci_iter): Check for CS5536.
+       * conf/i386.rmk (pkglib_MODULES): Add cs5536.mod.
+       (cs5536_mod_SOURCES): New variable.
+       (cs5536_mod_CFLAGS): Likewise.
+       (cs5536_mod_LDFLAGS): Likewise.
+       * conf/mips-yeeloong.rmk (kernel_img_HEADERS): Add cs5536.h and
+       machine/pci.h.
+       (kernel_img_SOURCES): Add bus/cs5536.c.
+       (pkglib_MODULES): Add usb.mod, usbtest.mod, ohci.mod, usbms.mod and
+       usb_keyboard.mod.
+       (usb_mod_SOURCES): New variable.
+       (usb_mod_CFLAGS): New variable.
+       (usb_mod_LDFLAGS): New variable.
+       (usbtest_mod_SOURCES): New variable.
+       (usbtest_mod_CFLAGS): New variable.
+       (usbtest_mod_LDFLAGS): New variable.
+       (ohci_mod_SOURCES): New variable.
+       (ohci_mod_CFLAGS): New variable.
+       (ohci_mod_LDFLAGS): New variable.
+       (usbms_mod_SOURCES): New variable.
+       (usbms_mod_CFLAGS): New variable.
+       (usbms_mod_LDFLAGS): New variable.
+       (usb_keyboard_mod_SOURCES): New variable.
+       (usb_keyboard_mod_CFLAGS): New variable.
+       (usb_keyboard_mod_LDFLAGS): New variable.
+       * include/grub/smbus.h: New file.
+       * include/grub/cs5536.h: New file.
 +2010-06-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * util/grub.d/00_header.in: Add safety check to make sure that
 +      ${locale_dir} exists before trying to probe it.
 +
 +2010-06-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (SCO UnixWare): Remove, at Vladimir's request and
 +      per the GNU Coding Standards; this is now too obscure to be worth
 +      documenting.
 +      (QNX): Likewise.
 +      (chainloader): Remove cross-reference to `SCO UnixWare'.
 +
 +2010-06-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Chain-loading): New section.
 +      (DOS/Windows): New section, borrowed from GRUB Legacy with details
 +      adjusted for GRUB 2.
 +      (SCO UnixWare): Likewise.
 +      (QNX): Likewise.
 +      (chainloader): Add reference to `Block list syntax'.
 +      (drivemap): New section.
 +      (parttool): New section.
 +
 +2010-06-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (GNU GRUB manual): Remove reference to `Invoking
 +      the grub shell'.
 +      (Installation): Add reference to `Making a GRUB bootable CD-ROM'.
 +      (Installing GRUB using grub-install): Remove reference to the grub
 +      shell; mention `grub-mkimage' and `grub-setup' instead.
 +      (Invoking grub-install): Likewise.
 +      (Interface): Add reference to `Menu entry editor'.
 +      (serial): Remove `--device' option.
 +
 +2010-06-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (Configuration): New section, documenting
 +      configuration file generation using grub-mkconfig.  I've left a slot
 +      for documenting the full shell scripting format but have not yet
 +      started on writing that up.
 +      (Invoking grub-mkconfig): New section.
 +
 +2010-06-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * docs/grub.texi (direntry): Remove grub-terminfo reference.
 +      (GNU GRUB manual): Likewise.
 +      (General commands): Update description of `terminfo' for GRUB 2.
 +
 +2010-06-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * commands/gptsync.c (grub_cmd_gptsync): Fix typos.
 +      (GRUB_MOD_INIT): Fix capitalisation.
 +      * docs/grub.texi (Command-line and menu entry commands): Document
 +      gettext and gptsync commands.
 +
 +2010-06-02  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      * conf/any-emu.rmk (kernel_img_SOURCES) [!x86]: Include
 +      kern/$(target_cpu)/cache.S even if TARGET_NO_MODULES = yes.
 +
 +2010-06-01  Colin Watson  <cjwatson@ubuntu.com>
 +
 +      Add btrfs probing support, currently only in the single-device case.
 +
 +      * kern/emu/getroot.c (find_root_device_from_mountinfo): New
 +      function.
 +      (grub_guess_root_device): Call find_root_device_from_mountinfo
 +      before looking in /dev.
 +
 +2010-05-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * disk/i386/pc/biosdisk.c (grub_biosdisk_open): Use
 +      GRUB_DISK_SIZE_UNKNOWN.
 +      * disk/ieee1275/ofdisk.c (grub_ofdisk_open): Likewise.
 +
 +2010-05-31  Jiro SEKIBA <jir@unicus.jp>
 +
 +      * include/grub/disk.h (GRUB_DISK_SIZE_UNKNOWN): New macro.
 +      * fs/nilfs.c: Support 2nd super block in case 1st one is accidently
 +      corrupted or not synced properly.
 +
 +2010-05-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * normal/main.c (grub_normal_add_menu_entry): Avoid going out of args.
 +      Reported by: Seth Goldberg.
 +
 +2010-05-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * loader/multiboot_mbi2.c (grub_multiboot_make_mbi): Fix incorrect
 +      addition of dest.
 +      Reported by: Seth Goldberg.
 +
 +2010-05-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * commands/setpci.c (grub_setpci_iter): Fix an incorrect function check.
 +      Reported by: Seth Goldberg.
 +
 +2010-05-31  Vladimir Serbinenko  <phcoder@gmail.com>
 +
 +      * loader/multiboot_elfxx.c (grub_multiboot_load_elfXX) [__mips]: Check
 +      64-bit address as signed on MIPS.
 +
  2010-05-28  Colin Watson  <cjwatson@ubuntu.com>
  
        * configure.ac: AC_PROG_LEX sets LEX to ":" if lex is missing, not
diff --cc bus/pci.c
index a08e53446106e7c19662967cc5897d1c41162a1d,1635e889bc3f4f3c8c25432d8505e371f4bd4850..bf14a8653ed6d09d025ffdea1ae9ce4f67b31f73
+++ b/bus/pci.c
  
  #include <grub/dl.h>
  #include <grub/pci.h>
 -  return (grub_uint32_t) ch;
+ #include <grub/mm.h>
+ /* FIXME: correctly support 64-bit architectures.  */
+ /* #if GRUB_TARGET_SIZEOF_VOID_P == 4 */
+ struct grub_pci_dma_chunk *
+ grub_memalign_dma32 (grub_size_t align, grub_size_t size)
+ {
+   return grub_memalign (align, size);
+ }
+ void
+ grub_dma_free (struct grub_pci_dma_chunk *ch)
+ {
+   grub_free (ch);
+ }
+ /* #endif */
+ #ifdef GRUB_MACHINE_MIPS_YEELOONG
+ volatile void *
+ grub_dma_get_virt (struct grub_pci_dma_chunk *ch)
+ {
+   return (void *) ((((grub_uint32_t) ch) & 0x1fffffff) | 0xa0000000);
+ }
+ grub_uint32_t
+ grub_dma_get_phys (struct grub_pci_dma_chunk *ch)
+ {
+   return (((grub_uint32_t) ch) & 0x1fffffff) | 0x80000000;
+ }
+ #else
+ volatile void *
+ grub_dma_get_virt (struct grub_pci_dma_chunk *ch)
+ {
+   return (void *) ch;
+ }
+ grub_uint32_t
+ grub_dma_get_phys (struct grub_pci_dma_chunk *ch)
+ {
++  return (grub_uint32_t) (grub_addr_t) ch;
+ }
+ #endif
  
  grub_pci_address_t
  grub_pci_make_address (grub_pci_device_t dev, int reg)