Commit graph

105 commits

Author SHA1 Message Date
Vladimir 'phcoder' Serbinenko
3593f89bf3 clear port status change afte polling it 2010-08-21 21:39:15 +02:00
Vladimir 'phcoder' Serbinenko
b481fe847a really set controller_data in ohci 2010-08-21 20:54:20 +02:00
Vladimir 'phcoder' Serbinenko
0aaf4938c7 Fix incorrect toggle calculation 2010-08-21 19:41:37 +02:00
Vladimir 'phcoder' Serbinenko
2eb310be79 Enable usb device polling again 2010-08-21 18:24:09 +02:00
Vladimir 'phcoder' Serbinenko
e959937cfd Use background transfers for usb_keyboard 2010-08-21 17:12:51 +02:00
Vladimir 'phcoder' Serbinenko
3ee4474e8d Prepare infrastructure for background USB transfers 2010-08-21 16:09:43 +02:00
Vladimir 'phcoder' Serbinenko
12cbb3ccd0 Don't retire active transaction on a NAK 2010-08-21 13:55:06 +02:00
Vladimir 'phcoder' Serbinenko
d10d149667 Return USB_ERR_INTERNAL instead of grub_errno when appropriate 2010-08-21 13:54:10 +02:00
Vladimir 'phcoder' Serbinenko
1420c1d54a Remove unused buffer0 2010-08-20 21:25:20 +02:00
Vladimir 'phcoder' Serbinenko
2823526d28 Acount for transfer->size being size-1 when counting *actual 2010-08-20 19:54:40 +02:00
Vladimir 'phcoder' Serbinenko
52d8255d20 Support hot unplugging 2010-08-20 19:34:29 +02:00
Vladimir 'phcoder' Serbinenko
60c1ffdfdc Fix OHCI error message 2010-08-20 19:33:44 +02:00
Vladimir 'phcoder' Serbinenko
24582ab39b Correct *actual counting in OHCI 2010-08-20 16:56:03 +02:00
Vladimir 'phcoder' Serbinenko
443a6c4b21 Skip unexpected descriptors 2010-08-01 23:08:03 +02:00
Vladimir 'phcoder' Serbinenko
fafc23e90a merge mainline into usb 2010-08-01 21:23:18 +02:00
Colin Watson
c03507dfb8 * bus/usb/emu/usb.c (grub_usb_poll_devices): Add a dummy
implementation of this so that grub-emu links again, with a note
that this should support hotplugging in the future.
2010-07-20 23:16:32 +01:00
Vladimir 'phcoder' Serbinenko
34787305df Allow psartial transfers and use them for usbserial 2010-07-19 08:43:01 +02:00
Vladimir 'phcoder' Serbinenko
ac2534273b fix losing pl2303 input at the price of losing some input bytes sometimes. 2010-07-19 00:12:59 +02:00
Vladimir 'phcoder' Serbinenko
9685412782 PL2303 works and is configurable. But sometime input is lost 2010-07-18 23:12:08 +02:00
Vladimir 'phcoder' Serbinenko
9edd681bbc Somewhat working although a lot of hardcoding pl2303 2010-07-18 21:36:00 +02:00
Vladimir 'phcoder' Serbinenko
d556277751 Add possibility of bulk reading with short timeout 2010-07-18 21:35:22 +02:00
Vladimir 'phcoder' Serbinenko
a531fd134d Split common usbserial function. PL2303 skeleton 2010-07-18 19:10:57 +02:00
Vladimir 'phcoder' Serbinenko
24494d478a Add fini routines for usbserial and rename grub_usbserial to grub_ftdi 2010-07-18 17:40:42 +02:00
Vladimir 'phcoder' Serbinenko
dd20a7868b Rename usbserial to usbserial_ftdi 2010-07-18 16:31:42 +02:00
Vladimir 'phcoder' Serbinenko
34364df689 usbserial basic support. Works in qemu 2010-07-18 12:53:35 +02:00
Vladimir 'phcoder' Serbinenko
cbf41813b3 Don't check transaction active flag as it's not updated and creates problems for usbserial 2010-07-18 12:53:08 +02:00
Vladimir 'phcoder' Serbinenko
a17b90f0ec Support USB device drivers autoloading 2010-07-17 03:58:23 +02:00
Aleš Nesrsta
5dab68dfa4 Hotplugging and USB hub support.
* bus/usb/ohci.c (grub_ohci_td): Add convenience fields.
	(grub_ohci): Likewise.
	(GRUB_OHCI_REG_CONTROL_BULK_ENABLE): New definition.
	(GRUB_OHCI_REG_CONTROL_CONTROL_ENABLE): Likewise.
	(GRUB_OHCI_RESET_CONNECT_CHANGE): Likewise.
	(GRUB_OHCI_CTRL_EDS): Likewise.
	(GRUB_OHCI_BULK_EDS): Likewise.
	(GRUB_OHCI_TDS): Likewise.
	(GRUB_OHCI_ED_ADDR_MASK): Likewise.
	(grub_ohci_ed_phys2virt): New function.
	(grub_ohci_virt_to_phys): Likewise.
	(grub_ohci_td_phys2virt): Likewise.
	(grub_ohci_td_virt2phys): Likewise.
	(grub_ohci_pci_iter): Allocate memory and don't wait for stable
	attachment.
	(grub_ohci_find_ed): New function.
	(grub_ohci_alloc_td): Likewise.
	(grub_ohci_free_td): Likewise.
	(grub_ohci_free_tds): Likewise.
	(grub_ohci_transfer): Use previously allocated memory.
	(grub_ohci_portstatus): Reset status changed bit.
	(grub_ohci_detect_dev): Supply status changed.
	(grub_ohci_fini_hw): Free memory.
	(grub_ohci_restore_hw): Reallocate memory.
	* bus/usb/uhci.c (grub_uhci_portstatus): Don't reset on disable.
	Reset status change.
	(grub_uhci_detect_dev): Supply status_change.
	* bus/usb/usb.c (attach_hooks): New var.
	(grub_usb_device_attach): New function.
	(grub_usb_register_attach_hook_class): Likewise.
	(grub_usb_unregister_attach_hook_class): Likewise.
	* bus/usb/usbhub.c (grub_usb_hub_add_dev): Handle errors correctly.
	(grub_usb_add_hub): Reset connection changed bit.
	(attach_root_port): New function.
	(grub_usb_root_hub): Likewise.
	(poll_nonroot_hub): Likewise.
	(grub_usb_poll_devices): Likewise.
	* commands/usbtest.c (grub_cmd_usbtest): Poll devices before listing.
	* disk/usbms.c (grub_usbms_open): Use device hooks.
	(grub_usbms_iterate) :Poll devices.
	(grub_usbms_finddevs): Split into ...
	(grub_usbms_attach): ... this ...
	(grub_usbms_attach): ... and this.
	* include/grub/usb.h (grub_usb_controller_dev): Supply status_changed
	in detect_dev.
	(grub_usb_interface): New fields attached and detach_hook.
	(grub_usb_attach_hook_class): New type.
	(grub_usb_attach_desc): New struct.
	(grub_usb_register_attach_hook_class): New function.
	(grub_usb_unregister_attach_hook_class): Likewise.
	(grub_usb_poll_devices): Likewise.
	(grub_usb_device_attach): Likewise.
	* include/grub/usbtrans.h (GRUB_USB_HUB_FEATURE_C_CONNECTED): New const.
	(GRUB_USB_HUB_STATUS_C_CONNECTED): Likewise.
2010-07-17 03:06:34 +02:00
Vladimir 'phcoder' Serbinenko
af0bedf8af merge mainline into usb 2010-07-17 01:14:13 +02:00
Vladimir 'phcoder' Serbinenko
36f84f1a7c Use inline functions instead of macros 2010-07-17 00:57:14 +02:00
starous
1b43dba911 USB hot-plugging 2010-07-08 22:54:35 +02:00
BVK Chaitanya
29d7e783d2 * bus/usb/usbhub.c: #include time.h header. 2010-07-06 14:53:55 +05:30
Vladimir 'phcoder' Serbinenko
75d959ea7c Revert latest two Aleš' commits 2010-07-06 01:55:26 +02:00
starous
f1f7d19ead ChangeLog & usbhub.c correction 2010-07-05 20:34:27 +02:00
starous
525ba5f9d0 UHCI portstatus correction 2010-07-05 19:06:47 +02:00
starous
1a0742d4e2 USB hub support 2010-07-05 19:02:05 +02:00
Vladimir 'phcoder' Serbinenko
b7e79e8a6a Merge mainline into yeeloongfw 2010-06-30 02:30:05 +02:00
starous
12cd7239d9 Faster OHCI, USB hub support, UHCI portstatus corr. 2010-06-21 21:12:20 +02:00
Vladimir 'phcoder' Serbinenko
f5db3949e7 Some hotplug support (buggy) 2010-06-02 21:54:51 +02:00
Vladimir 'phcoder' Serbinenko
5434f8bf3a Remove extra empty line 2010-06-02 21:54:25 +02:00
Vladimir 'phcoder' Serbinenko
440ab68551 Restructure usbms as a preparation for hotplug 2010-06-02 19:52:17 +02:00
Aleš Nesrsta
1515ec8684 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.

	Also-By: Vladimir Serbinenko <phcoder@gmail.com>
2010-06-02 17:16:20 +02:00
Vladimir 'phcoder' Serbinenko
7db51e329b Remove double defines and use dma_free 2010-06-02 16:51:54 +02:00
Vladimir 'phcoder' Serbinenko
5d538b8b4a Use memset 2010-06-02 16:49:22 +02:00
Vladimir 'phcoder' Serbinenko
f133a8a74b Enable USB on 64-bit (still won't work with >= 4GiB memory). 2010-06-02 16:48:10 +02:00
Vladimir 'phcoder' Serbinenko
d495544497 Shut down PHCI controller harder 2010-06-02 05:00:54 +02:00
Vladimir 'phcoder' Serbinenko
f1cb760c99 Disable unused list 2010-06-02 04:52:52 +02:00
Vladimir 'phcoder' Serbinenko
2325800310 Fix last_trans determination 2010-06-02 04:52:35 +02:00
Vladimir 'phcoder' Serbinenko
a18c783473 Fewstylistic fixes 2010-06-02 04:51:35 +02:00
Aleš Nesrsta
390b0676c4 Use dev->descdev.maxsize0 even if dev->initialized isn't set 2010-06-02 02:04:45 +02:00