From: Aleš Nesrsta Date: Wed, 2 Jun 2010 15:16:20 +0000 (+0200) Subject: 2010-06-02 Aleš Nesrsta X-Git-Tag: 1.99~852 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1515ec8684534c1d4184d17b6b0a4ad98a7f67b3;p=thirdparty%2Fgrub.git 2010-06-02 Aleš Nesrsta 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 * 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 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 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 --- 1515ec8684534c1d4184d17b6b0a4ad98a7f67b3 diff --cc ChangeLog index fb73905e2,a693e4385..49583746c --- a/ChangeLog +++ b/ChangeLog @@@ -1,106 -1,122 +1,225 @@@ + 2010-06-02 AleÅ¡ Nesrsta + + 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 + + * 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 + + 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 + + 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + 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 + + * 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 + + * 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 + + * normal/main.c (grub_normal_add_menu_entry): Avoid going out of args. + Reported by: Seth Goldberg. + +2010-05-31 Vladimir Serbinenko + + * loader/multiboot_mbi2.c (grub_multiboot_make_mbi): Fix incorrect + addition of dest. + Reported by: Seth Goldberg. + +2010-05-31 Vladimir Serbinenko + + * commands/setpci.c (grub_setpci_iter): Fix an incorrect function check. + Reported by: Seth Goldberg. + +2010-05-31 Vladimir Serbinenko + + * loader/multiboot_elfxx.c (grub_multiboot_load_elfXX) [__mips]: Check + 64-bit address as signed on MIPS. + 2010-05-28 Colin Watson * configure.ac: AC_PROG_LEX sets LEX to ":" if lex is missing, not diff --cc bus/pci.c index a08e53446,1635e889b..bf14a8653 --- a/bus/pci.c +++ b/bus/pci.c @@@ -19,6 -19,50 +19,50 @@@ #include #include + #include + + /* 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) 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)