Commit Graph
100 Commits
Author SHA1 Message Date
Michael Lotz 13cf6c7044 Forgot to change the grist of the GCC4 wpa_supplicant package in r42800. Sorry.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42803 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-05 18:56:58 +00:00
Michael Lotz e3e636ae3a Update the GCC4 wpa_supplicant package to one built with GCC4.5.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42800 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-03 18:53:34 +00:00
Michael Lotz 2348de0bbc Small cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42799 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-03 18:36:00 +00:00
Michael Lotz 3c920dad10 Add missing dependency of wpa_supplicant on OpenSSL.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42798 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-03 16:06:10 +00:00
Michael Lotz 2a77028057 Relax ensure_all_functions_matched() to assume no interrupt use when a device
has no routing information but wasn't configured by the BIOS either. The
function will now only panic if a device that was previously configured would
not be so anymore after enabling the IO-APIC. Fixes #7971.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42795 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-10-02 21:25:15 +00:00
Michael Lotz e94e30ff78 Add the wpa_supplicant optional package. It should be stable and is working on
the limited set of hardware I could test it with.
By installing the wpa_supplicant one can now join WEP/WPA/WPA2 networks by
either selecting them in the network prefs/network status applet or using
"ifconfig <interface> join <network name> [password]". The wpa_supplicant opens
a dialog asking for more details if it can't connect with the given information.
Note that there is no way to automatically store that extra info right now, so
it has to be provided on each join. The configuration can however be stored
manually into the /boot/common/settings/network/wireless_networks config file.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42775 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-09-28 00:33:45 +00:00
Michael Lotz dd9a0d1d4b * Fill out the wireless network join request as detailed as possible, but don't
fail when encountering missing information (like the password). This gives the
  supplicant an opportunity to ask for the required information as needed.
* Remove (currently broken) WEP support from the net_server. It will be
  delegated to the supplicant as well, as that one already handles all the
  key/password conversion.

In the absence of a supplicant the net_server can therefore only join open
networks now. It will also only attempt that if it is sure that the network in
question is actually an open network (by means of scan results or explicit
configuration) and will otherwise delegate the join request.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42774 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-09-28 00:21:32 +00:00
Michael Lotz 2815c2d2c6 Use the device name instead of the "external name" as the interface in network
monitor messages. Due to how our compatibility layer works the latter is always
just "wlan" (and even if it worked as expected it'd be mapped to the BSD short
names i.e. "iwn" or "iwnX"). The device name is of the format "net/<driver>/X",
which is what we use as interface names througout the API (minus the "/dev/").


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42771 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-09-27 14:11:03 +00:00
Michael Lotz 0d890a6821 Do some minimal sanity checks on the message data. Avoids trying to allocate
random amounts of memory when getting an invalid header.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42770 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-09-26 20:32:55 +00:00
Michael Lotz 716e16d4c3 Change the test frame type to something that differs depending on endianness so
that swapping issues as in r42357 can be detected.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42358 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-07-01 21:33:42 +00:00
Michael Lotz 4cde5cc228 * Fix binding to link level sockets. The bound type was constructed using the
sdl_e_type in network byte order, causing such a socket not to receive
  anything.
  When working around that by not using htons() on bind, sending would then fail
  on such a socket because the byte order is actually required to be swapped
  there.
* Extend the comment for the B_NET_FRAME_TYPE macro to document that the input
  types are supposed to be in host byte order to avoid future confusion.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42357 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-07-01 20:26:37 +00:00
Michael Lotz 961a96a987 Optimize the configuration of the port heap. Previously the max bin size was
512 bytes with a heap page of 2048 bytes resulting in excessive waste for
allocations between 512 and 1023 bytes. Also tune the requested alignment so
that sizeof(port_message) (currently 28 bytes) can occupy one allocation unit
without waste.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42340 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-29 18:03:42 +00:00
Michael Lotz 02cd58f418 Move resizing the page_protections before resizing the cache to avoid a needless
resize operation that has to be undone and may fail when doing so.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42332 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-28 00:15:12 +00:00
Michael Lotz 3fb17998a7 When resizing an area that has individual page protections (set via mprotect),
we have to enlarge/shrink the array that holds them and assign a protection
value for the additional pages as necessary. Otherwise we'll access invalid
memory when looking up page protections for enlarged areas and get random
protection values.
Experienced with QEMU that sets page protections via mprotect on heap memory.
When the heap was later enlarged, write access to the additional memory would
result in permission denied errors and crashes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42330 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-27 23:24:17 +00:00
Michael Lotz d535a2bec8 While there are USE_SSL checks in the code, provide the corresponding Jamfile
rules. Otherwise the IMAP add-on is always built without SSL support.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42326 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-26 22:30:36 +00:00
Michael Lotz 14c345e147 * Revert r42319 as it introduces a race condition when entering the kernel
debugger. As sInDebugger is already > 0 when the first CPU enters KDL, code
  from other CPUs might see debug_debugger_running() == true already before they
  enter the debugger.
* Instead, move the sDebuggerOnCPU setting out of the debugger loop and hold the
  value until after calling exit_kernel_debugger() so that the exit hooks still
  see debug_debugger_running() == true.
* Also avoid calling exit_kernel_debugger() when we've been called recursively
  (previousCPU != -1). Previously the exit hooks would've been called and the
  debugger state reset erroneously. To balance the missing decrement of
  sInDebugger in that case we decrement sInDebugger in enter_kernel_debugger()
  also when detecting the recursion case.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42320 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-26 00:06:52 +00:00
Michael Lotz 3214710036 Use sInDebugger instead of sDebuggerOnCPU to determine if the debugger is
running. The former has a broader scope and lasts until the debugger exit is
actually done whereas the latter is already reset when the inner loop is exited.
This fixes the issue Ingo saw where the USB physical memory manager wasn't able
to free resources used for the debug transfer. It has reserved debug memory that
it uses depending on debug_debugger_running() and was therefore confused when
it returned false when called from the kernel debugger module exit hook.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42319 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-25 22:48:38 +00:00
Michael Lotz 50a9a98edb Add the pcnet driver to the image and remove reference to the old vlance driver.
It seems to work fine in VirtualBox and makes the network card work that is
emulated by default. From the log it looks like Hugo actually ported/implemented
the driver under VMWare and it worked, so that it isn't in the image looks like
an oversight.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42295 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-24 15:37:51 +00:00
Michael Lotz 80ad7275a9 Fix the build of the pcnet driver. It should probably be updated to the current
FreeBSD version though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42294 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-24 15:19:05 +00:00
Michael Lotz 3270af3ca7 * Check the no-init case consistently, no need to crash when we failed to
allocate the header.
* Code style cleanups: 80-char limit, pointer style of recent additions,
  explicit NULL checks, check ports against 0 instead of B_OK, results != B_OK.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42281 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-22 08:47:30 +00:00
Michael Lotz 4a3d2e7808 Make the heap debug functions available when USE_SLAB_ALLOCATOR_FOR_MALLOC is
enabled as well. As this heap implementation is still used for the port heap
(as it handles B_NO_LOCK areas) those are still useful.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42278 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-21 20:25:49 +00:00
Michael Lotz 6244ea5051 Fix range check. The previous check would produce an off by one error making the
last byte of an unmapped-but-still-there page non-readable (i.e. from B_NO_LOCK
areas), causing such reads to fail in KDL.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42276 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-21 13:06:26 +00:00
Michael Lotz 97184c6965 Tiny comment cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42275 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-21 12:35:50 +00:00
Michael Lotz 2b86134925 * Actually include an offset to write to in writev_port_etc(). It would
previously just always write over the beginning of the buffer for each vector.
  Since the writev version isn't exposed to userland by means of a syscall and
  kernel internally nobody used it, nobody noticed so far.
* Merge the two loops for user and kernel copy to remove the code duplication.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42273 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-21 01:13:43 +00:00
Michael Lotz cd3e02ca1e * Growing the port heap by adding new areas was broken in various ways. For one
the acquired quota in sTotalSpaceInUse wasn't released in all cases leading to
  it eventually reaching the limit (after a _very_ long time though, so this is
  more theoretical than anything else). The sAllocatingArea flag wasn't reset in
  the case that an area was already added in the meantime, resulting in no
  further growing being possible. Then there were race conditions between
  waiting for space to become available and the situations which made that space
  available (freeing port_messages and adding new areas).
* Fix these race conditions by using a mutex (sPortQuotaLock) to protect the
  various quota and allocation related variables. Instead removed the atomic_*
  operations that were previously used.
* Had to move some static functions around.

Should make port heap growing more robust, even though in normal use you'll
likely never encounter it...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42272 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-21 00:56:20 +00:00
Michael Lotz b617e8daff A blast from the past: r15048 from way back removed the wrong boolean parameter
causing the message to be sent with a timeout of "true" (getting converted to 1)
instead of the intended 0 meaning no/infinite timeout. This caused the message
sending to be aborted due to the timeout if it was blocking on a full port for
example. Since the return value is never checked noone noticed.
It's possible that this was the cause of some lost input messages (mouse,
keyboard) when the system was under heavy enough load for either the port heap
to be exhausted (unlikely) or the input_server <-> app_server port to run full
(quite possible).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42271 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-20 22:24:36 +00:00
Michael Lotz 71b9d8cf3b Check for the (local) APIC feature on the CPU before moving on to SMP config and
APIC enumeration. As the local APIC is the basis for inter-CPU communication, we
can't do SMP when it's absent.
Fixes #7692, but indeed it makes no real sense for QEMU to provide the APIC info
in the MP and ACPI tables (and actually emulate the hardware) when it disables
the APIC support flag at the same time.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42215 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-16 22:36:22 +00:00
Michael Lotz 08c7202f8a * Add a termios member that stores the config across open/close cycles. This
allows the use of stty to configure the serial device and later using other
  commands with these settings still in place.
* Store incoming termios settings when they are set, restore the previous
  settings on open and apply the control modes to the device side as well.
* Only send the control to the system side tty cookie again. Doing it for both
  cookies was only done to configure the termios, which isn't necessary anymore.
* Remove fallbacks to c_{i|o}speed fields and always use c_cflag & CBAUD for the
  single speed setting we have.
* Remove some leftover control line state logic that doesn't apply anymore.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42161 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 00:09:33 +00:00
Michael Lotz 75a4759d33 Since the c_ispeed and c_ospeed fields are marked unused, and since I don't see
how one could actually apply different speeds, make cf{set|get}{i|o}speed() use
the c_cflag field with the CBAUD mask instead.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42160 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 23:58:26 +00:00
Michael Lotz e176082424 Add the usb_serial driver and the tty module dependency to the image.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42157 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 21:35:52 +00:00
Michael Lotz 77a5d93e96 * Remove the output thread again and write to the device in the write call. To
ensure that we don't block on the tty buffer, we chop up the data into blocks
  that are written into the tty and then the buffer is flushed to the device
  each time. This resolves the issue that a quick open/write/close would not
  actually send the data to the device as it would cancel the transfer before
  the output thread had a chance to run.
* Use the tty_close_cookie() call. Doing the close before waiting for the input
  thread ensures that it is woken up if it blocked on writing into the tty.
* Correct the type of the USB callback status and only try to clear a halt if
  the device was actually stalled.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42156 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 21:33:55 +00:00
Michael Lotz bd1aad8366 Add some more function return tracing.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42155 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 20:46:42 +00:00
Michael Lotz 16c5a72847 * Seperate out the tty_close_cookie from tty_destory_cookie and make the former
available as a module function as well.
* Remove some unneeded resetting from tty_destroy_cookie.
* Move the public module functions to the public API section of the file and
  order them by their declaration order in the module info.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42154 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 20:44:22 +00:00
Michael Lotz 224d969b1d * When determining the bit to be set for RTS/DTR there was a missing comparison
to op which would've caused a wrong line state to be set.
* Add some more allocation checks.
* Some cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42151 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 17:54:59 +00:00
Michael Lotz f1ec739ed7 Style and text cleanups and some added clarifications. No functional changes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42148 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 13:06:45 +00:00
Michael Lotz 7c865cf94d usb_floppy is for the most part a copy of usb_disk and should probably be merged
into it again (adding generic CBI support). It is so much of a copy even that it
still claimed to have the original 3 support descriptors while in fact it only
has one. Since the memory beyond that one support descriptor was probably just
zeros, making them complete wildcards usb_support_descriptor wise, this lead to
every single USB device being handed to the usb_floppy device added hook.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42145 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 02:15:48 +00:00
Michael Lotz 051cb22a2a Add serial_io, a simplistic BSerialPort based command line tool that prints what
it reads from the specified port and writes what gets input on stdin. It
currently hardcodes the basic setup of the serial port.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42131 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-12 20:40:33 +00:00
Michael Lotz 36986acbbd * Finish the port to the new tty module. Back when I left off last time it was
only halfway finished. The way it is supposed to work is that there are two
  tty cookies, representing the system and the device side. Reads and writes
  coming from the system and going to the device are using the system cookie
  while reads and writes coming from the device use the device cookie.
* Move writing to the device into an output thread, similar to how reading from
  the device works. This isn't necessarily a good idea and might be moved back
  into the write hook again to ensure that writes can be made blocking. Right
  now if you just write and then close, the writes will most likely be canceled
  before every going out to the device.
* Removed the read and write lock mutex. They aren't necessary as the tty layer
  will serialize the reads and writes anyway.
* Made simply copying the data to the write buffer the default implementation of
  the OnWrite callback and removed the OnWrite in ACMDevice. The ProlificDevice
  didn't provide an OnWrite hook before, so it would've never written anything.
* Break out the baud index to speed mapping into an inline function. Since the
  defines might change in termios.h just adding an array is a bit fragile (it
  already missed one entry and would've been broken for certain speeds).

This should make usb_serial usable for some (most?) cases. I've tested this with
an Arduino board that uses an FTDI interface. As mentioned above, since writes
currently just write into the tty layer and don't wait for the data to be
flushed, and since close doesn't wait for the output buffers to be drained
either, a simple write and close (as in "echo a > /dev/ports/usb0") will in most
cases cancel the output before it is written to the device. I'm looking into
a few ways to fix that next.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42089 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-10 17:35:46 +00:00
Michael Lotz 5cc760197a Apply limits to the transfer lengths. At least in the case where a one byte FTDI
header is used that only has 6 bits of length info this would've previously
potentially overflowed depending on the input size.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42088 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-10 17:20:27 +00:00
Michael Lotz f7868b8f1a * Print the speeds even though they are marked as not used (as the baud index
is inside the cflags) since stty for example sets them.
* Turn off debug output by default and fix a warning due to that.
* Some minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42087 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-10 17:18:06 +00:00
Michael Lotz 6e72f897f4 Remove the global lock and the documentation for it. It was specific to the tty
driver and doesn't apply to the generic module.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42086 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-10 17:12:51 +00:00
Michael Lotz 4e1d68e994 Style cleanup, 80 char limit. No functional changes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42072 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-09 19:00:37 +00:00
Michael Lotz 1b7d2a5498 Add hat support to the JoystickProtocolHandler. Completely untested for lack of
hardware though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42035 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-08 00:27:31 +00:00
Michael Lotz 9028fd53bd Add HIDReportItem::ScaledRangeData() that scales the data into a pariticular
range.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42033 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-08 00:26:04 +00:00
Michael Lotz 7802e2dd2c Get the HID descriptor from the already retrieved configuration info instead of
always calling the device and requesting it. If no HID descriptor is found in
the configuration we fall back to retrieving it manually and if that fails we
fall back to a dummy report descriptor length. In the most usual case this will
save one unnecessary USB control request.

Incidentally this also fixes the absolute pointing device under VirtualBox. VBox
stalled the retrieval of the HID descriptor. That alone wasn't so problematic as
in this case we just fell back to the dummy report descriptor length which
would've been large enough. But VBox also times out the next request after the
stall, which in this case was the retrieval of the report descriptor, hence no
HIDDevice could be created.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42019 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-07 18:17:08 +00:00
Michael Lotz 7b03963e8a * Add a quirky device entry for XBOX 360 controllers.
* As they don't claim to be HID, they don't provide a report descriptor either,
  so we build one. The built descriptor is similar to the one found in FreeBSD
  for the same class of devices. Might fix/help #7649, for lack of hardware I
  can't test this.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42003 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-07 00:35:31 +00:00
Michael Lotz 4ca60b965f Move the quirky device detection out of the HIDDevice constructor and into the
usb_hid_device_added hook so that we can actually detect non-HID devices at all.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42002 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-07 00:25:58 +00:00
Michael Lotz 575517e617 * Remove the report ID argument of HIDWriter::DefineInput{Data|Paddding} to
allow for creating descriptors that don't use report IDs at all.
* Adjust sixaxis_build_descriptor and set the global report ID once at the
  beginning instead.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42001 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-06 23:54:01 +00:00
Michael Lotz c67c6b5300 * Add device class, subclass and protocol to the quirky device structure.
* Add these to the usb_support_descriptor when adding from the quirky devices.
* Extend the SIXAXIS comment a bit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42000 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-06 23:48:28 +00:00
Michael Lotz cac918bed0 Add devices we have explicit quirky device support for to the support
descriptor. This allows us to support devices that aren't strictly HID or only
provide vendor specific interfaces by constructing report descriptors for their
data format.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41992 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-06 22:47:22 +00:00
Michael Lotz f7a566feb7 Simplify hid_decode using the new HIDParser::PrintToStream() which generates the
same output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41952 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-06 00:50:23 +00:00
Michael Lotz bc64bf6ab4 Add support for absolute pointing devices. Supported are mice/pointers with
absolute coordinates (qemu/kvm -usbdevice tablet) and various digitizers. If a
tablet-like usage is determined the MouseProtocolHandler publishes to
input/tablet instead of input/mouse and reports its info in a tablet_movement
structure instead of a mouse_movement structure, allowing for absolute
coordinates. Note that right now only the absolute coordinates are used, the
other tablet specific inputs (eraser, pressure, tilt and contact) aren't yet
filled in. I will add these as a second step.
I've only tested this with kvm where this makes the "seamless" mouse integration
work and therefore fixes #5989. Note that QEMU for BeOS/Haiku doesn't support
that mode (patch pending on my side) and will lock the pointer into the upper
left corner if -usbdevice tablet is used (whereas it previously just did
nothing).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41951 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-06 00:10:56 +00:00
Michael Lotz 3e144a2ffd Add the tablet input_server device add-on to the image. It supports absolute
pointing devices that publish entries into /dev/input/tablet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41950 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-05 23:58:35 +00:00
Michael Lotz 6eabc83386 Add HIDReportItem::ScaledFloatData() which scales the data into a float range
from 0.0 to 1.0.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41948 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-05 23:53:04 +00:00
Michael Lotz 21f237c0af Add the tablet input_server device add-on directory to the build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41947 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-05 23:17:01 +00:00
Michael Lotz 1c1f322ec1 Replace the TabletInputDevice by a MouseInputDevice based reimplementation.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41946 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-05 19:15:43 +00:00
Michael Lotz fdad31e6a5 Small cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41945 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-05 19:09:04 +00:00
Michael Lotz 58e371f5a5 Make the HIDWriter available to hid_decode as well. It is not (yet) used there
however.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41926 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-05 00:41:40 +00:00
Michael Lotz d3260cdb5f * Reimplement the descriptor patching mechanism for quirky devices by a function
to build a new descriptor using a HIDWriter. This way a completely new
  descriptor can be built on the fly or a fixed already patched blob can be
  written to the writer if desired.
* Implemented writing a new report descriptor for Sony SIXAXIS controllers. The
  descriptor also includes the pressure sensitive button states (exposed as 12
  axes) and the accelerometers/gyroscope (exposed as another 4 axes). While the
  motion sensing data is now available (and fun to look at), the usefulness is
  fairly limited, as the values are not scaled/transformed in any way. It might
  be possible to generically do such transformations using unit descriptions,
  but those are not implemented yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41925 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-05 00:40:19 +00:00
Michael Lotz 517851a173 Reimplement axis mapping and allow for more usages to be axes. This allows for
duplicate usages and simply adds more axes in that case. It also removes the
gaps that were previously put in place if there were higher numbered axes.
However, since the ordering of the axes now depends on the ordering inside the
HID collection, it is possible that some controllers won't have the X, Y and Z
axis mapped as the first three axes, which might confuse applications. I've not
encountered a report structure that would lead to such a situation yet, but then
again the amount of reports I was able to get hold of is fairly limited. If it
becomes a problem the mapping needs to be adjusted accordingly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41923 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-05 00:30:33 +00:00
Michael Lotz 9aec639d12 Add a PrintToStream() method to HIDParser that prints the resulting reports and
the root collection.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41922 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-05 00:12:15 +00:00
Michael Lotz 0e37c8a9fc Implement a HIDWriter that provides a high and lower level interface for writing
report descriptors. These descriptors aren't optimized for efficiency (the
writer doesn't attempt to avoid writing unneeded global items for example) but
they will only serve as input for the HIDParser that parses them correctly
regardless.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41921 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-05 00:10:07 +00:00
Michael Lotz 6b9615d068 * Keep an open count in the JoystickProtocolHandler.
* Only cancel the update thread if the last open instance is closed. This fixes
  that other applications using the same joystick would stop getting updated
  values as soon as one application was closed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41905 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-04 13:51:30 +00:00
Michael Lotz 6e53f9a990 * Make the quirky device mechanism a bit more useful by allowing an init
function that is triggered before the protocol handlers are added.
* Use the quirky device mechanism to support the Sony SIXAXIS controller (the
  PS3 one). It requires a specific get_report to become operational. Note that
  you still have to push the PS button to enable it after plugging in. Note also
  that only the two analog sticks are reported as axis, the analog values of the
  buttons as well as the motion sensors aren't described by the HID descriptor
  and therefore aren't accessible. The digital button states (on/off only) work
  however. A fixed descriptor could possibly be crafted to support the missing
  features later on though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41902 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-04 12:47:02 +00:00
Michael Lotz a4aa4541c1 * Make it a valid C header again.
* Cleanup of include grouping as pointed out by Axel.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41899 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-03 23:31:05 +00:00
Michael Lotz e36050e83d Set the debug keyboard info for the kernel debugger when initializing keyboard
handlers. A full sized keyboard is assumed when LEDs are found and those are
preferred then. This makes USB keyboards work (at least those that worked
by voluntarily entering KDL before, i.e. those that are hooked up to UHCI root
ports) also when entering KDL by means of a panic. The first (few) keys are
swallowed though, but that's certainly better than it not working at all.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41898 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-03 23:24:58 +00:00
Michael Lotz 894a3ebe89 Specify that we support variable mode, which will cause drivers to switch to
that mode when they support it. Right now there is only usb_hid though. With
this commit controllers with an arbitrary number of axes, hats and buttons are
now supported by BJoystick and by the BJoystick <-> driver protocol as well as
by usb_hid (usb_hid doesn't yet have support for hats though).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41893 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-03 21:15:45 +00:00
Michael Lotz 233d1dc479 Implement variable joystick mode in the JoystickProtocolHandler. It supports
both, variable and extended joystick mode, using the same mechanism of mimicing
the extended_joystick structure with the variable one if required. The mode
used depends on the support flag coming in from BJoystick (currently off), so
with this commit the behaviour doesn't change. I'm going to flip that switch
next though.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41891 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-03 21:11:38 +00:00
Michael Lotz e0f0271ae6 Use the appropriate initialize*() method instead of setting up the structure
manually.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41889 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-03 20:55:14 +00:00
Michael Lotz 34f0d87a9d Add initialize[_to_extended_joystick]() methods to variable_joystick. With those
methods the members are populated, the flat data size is calcualted, the data
buffer is allocated and the convenience pointers are set up automatically. With
initialize() an arbitrary configuration can be created, with
initialize_to_extended_joystick() a configuration is created that exactly
matches the data structure of the extended_joystick struct.
Having them here makes it easy to use the structure from a driver as well
without the need to set up everything manually.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41888 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-03 20:54:05 +00:00
Michael Lotz 6e0cca2f96 * Remove the JoystickPrivate.h again and move the variable_joystick structure
into joystick_driver.h as it is convenient to have also on the driver side.
* Added comments explaining the data structure and use case of the structure.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41886 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-03 19:48:16 +00:00
Michael Lotz ab1763688f * Replace the fixed size extended_joystick structure with a variably sized one
inside BJoystick.
* Add joystick_module_info flag to communicate support for variably sized reads.
* The variably sized data structure is set up to describe either the actual
  amount of data, when variably sized reads are supported by the driver, or it
  is set up so that it exactly matches the data layout of the extended_joystick
  structure. This allows us to support both as input data, while only needing to
  care about a single format inside BJoystick. Convenience pointers allow the
  data to be retrieved without additional overhead or extra logic.
* Add some sanity checks and ensure some boundaries when dealing reading data
  from the variably sized structure (as there might not be any buttons, hats,
  axis at all now).
* Ensure that the extended_joystick structure doesn't change in size due to
  padding by making it _PACKED (it wasn't padded though).

This is still supposed to work exactly as before. However, it opens up the
possibility to actually support arbitrary controllers with arbitrary axis, hat
and button counts. It therefore allows to actually deliver what the BJoystick
API was designed to handle all along.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41885 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-03 18:33:43 +00:00
Michael Lotz 660fe6bca9 * Make use of the new BJoystick::GetButtonValues() so any number of buttons can
be retrieved. I think the fixed layout will actually make it impossible to see
  anything beyond the 9th button however... The coding style of this app is,
  different, to say the least and I didn't really bother fixing it up right now,
  so the changes just mimic what's there.
* Some automatic whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41883 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-03 15:55:50 +00:00
Michael Lotz 4b5bcc6684 Introduce a BJoystick::GetButtonValues() function that aligns with the other
Get*Values() functions but retrieves an arbitrary amount of button states using
a boolean array. This overcomes the 32 button limitation on the API side. Right
now the function does simply set the first 32 states from the button bitmap, as
the BJoystick to driver interface hasn't been adapted yet.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41882 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-03 15:40:31 +00:00
Michael Lotz bb2420a474 Remove two unimplemented private functions. Since their signature was changed
already anyway (as compared to the original BeOS ones) this won't introduce any
missing symbols.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41879 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-03 13:26:22 +00:00
Michael Lotz 1147fabd67 Move function definitions to match their declaration order. Also move some
declarations to group them more logically. No functional changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41878 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-03 12:45:35 +00:00
Michael Lotz 2682d2fbdd * Return early when opening the device failed and just return B_ERROR as
documented in the BeBook. Sadly the success return is specified as "a positive
  integer", so I didn't change it to B_OK.
* We actually want non-blocking mode, so don't reset the O_NONBLOCK flag. It was
  ignored before anyway though, so this doesn't change anything.
* The legacy buttons 1 and 2 are in the pressed state when false, so initialize
  them to true instead.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41876 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-03 12:15:46 +00:00
Michael Lotz 30e429b4e4 I was mislead by the legacy joystick structure data type for the axis values
(which is uint32), but the legacy BJoystick axis values are just the same int16
as the ones in extended mode, so nothing has to be done besides assigning them.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41875 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-03 11:58:09 +00:00
Michael Lotz 464e0351d3 * Add a BJoystick::RescanDevices() public function. It allows the BJoystick
to be updated with newly plugged in devices without the need to recreate a
  BJoystick object.
* Do an initial (re-)scan on object creation instead of always scanning in
  CountDevices() and by extension GetDeviceName().
* This makes CountDevices() and GetDeviceName() stable with regards to the
  device list, so that an enumerating application doesn't suddenly get more/less
  devices than it might expect.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41870 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-02 15:10:31 +00:00
Michael Lotz a00ac73989 Ensure that a GetDeviceName() call triggers a ScanDevices() as well, as it can
be called without calling CountDevices().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41869 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-02 13:04:14 +00:00
Michael Lotz 393ca9a124 Cleanup of the _BJoystickTweaker:
* Include sorting, header style, macro naming, variable naming, spacing, ...
* Some simplifications, early returns and the like.
* The device name list items were allocated with new but deleted with free. The
  whole private BJoystick list being modified by a friend class is dubious
  though and should be reworked. Ideally node monitoring would be implemented
  so that the list can be re-populated on demand instead of scanning through
  every time.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41868 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-02 12:42:18 +00:00
Michael Lotz 5052c5b678 Make adjustments to the JoystickProtocolHandler so that it works in accordance
with the BJoystick requirements:

* Make the Read() non-blocking. This is required as BJoystick is a polling
  interface. A single current state is used that is updated by a separate thread
  on report arrival. The thread is spawned as soon as the ProtocolHandler is
  opened for the first time (and quit at the first wait return after the
  ProtocolHandler is closed). With this we can simply return the current state
  on read.
* Remove the ring buffer as it was not needed in the first place. This also
  happens to solve the problem of sharing a JoystickProtocolHandler. Before,
  concurrent reads would queue up the same result multiple times in the ring
  buffer and then return stale data on the next update.

Solves most of #7629.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41865 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-02 00:56:18 +00:00
Michael Lotz 23249681ab Since we never actually read more than one mouse_movement at a time and we only
ever wait for reports on demand, there's no need for buffering at all.
This removes some unnecessary copying and ring buffer overhead, the ring buffer
will now in fact not be created at all.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41864 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-01 23:34:03 +00:00
Michael Lotz f202fdc6ed * Add Jamfiles to allow building the stickit sample code. It allows testing of
the BJoystick API and joystick drivers.
* Also fix a few warnings in the code that were caused by using NULL instead of
  0 for BWindow/BView flags.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41852 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-31 02:33:28 +00:00
Michael Lotz f46bc7f19e * Add a JoystickProtocolHandler to usb_hid that supports the BJoystick protocol.
This includes input scaling, so the resulting input ranges should always match
  the ones of the BJoystick data (hence no calibration should be required).
* It supports joysticks, gamepads and multi-axis controllers. I've only tested
  it with a Microsoft SideWinder Gamepad Pro so far, which now works as expected
  with stickit.
* Fixes #7429.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41851 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-31 02:21:05 +00:00
Michael Lotz 10a1a81d02 Also clear the sign extension when not changing signedness, as otherwise we'll
overwrite the values with the sign extension.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41850 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-31 02:09:10 +00:00
Michael Lotz ef13dbda92 * Actually implement the relevant parts of BJoystick, i.e. reading the joystick
info and values. Inspired by and in parts based on the patch by caz_haiku in
  ticket #7429 (though rewritten completely due to the other changes). Thanks
  for the pointers!
* Clean up the mixup of internal joystick info and the one from
  joystick_driver.h so that BJoystick and the drivers talk about the same
  structures.
* Extensive coding style cleanup, simplifications, NULL checks, early returns,
  std::nothrow allocations, include sorting, argument naming, ... that kind of
  stuff.
* Added some TODO notes for remaining stuff.
* Automatic (and manual) whitespace cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41849 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-31 02:05:39 +00:00
Michael Lotz 6d551ee44f Also take the unsigned -> signed conversion into account.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41846 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-30 22:31:59 +00:00
Michael Lotz d75a906285 Add a ScaledData() getter that scales the data to the desired bit width and
converts the signed-ness as specified.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41843 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-30 21:45:10 +00:00
Michael Lotz b5274bc4f6 Pass read and write calls to the protocol handlers as well, moving the default
of returning B_ERROR to the ProtocolHandler base class. Not used yet, but will
be used for the BJoystick <-> JoystickProtocolHandler.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41835 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-30 19:53:14 +00:00
Michael Lotz 305aff3f78 * Changed the way how devices are enumerated and protocol handlers are added to
handle the different device classes. Handlers are now added based on the
  application collections that the HID descriptor describes instead of by
  enumerating the different report items inside the reports. This means that a
  device is now logically treated as a mouse when it comes with an application
  collection that designates it as a mouse, instead of when there is a report
  that contains an X and a Y axis. This resolves the conflicts that gamepads
  and joysticks were added as mice due to them containing such elements. This
  therefore fixes #4499 and opens up the way to properly handle other device
  types like joysticks (#7429), gamepads, tablets (#7354, #5989 and #7481) and
  so on. I'll work on gamepads/joysticks next and see where we stand for tablets
  later.
* Added a few enumeration functions to HIDCollection to support the above.
* Fix the root collection handling. A device doesn't describe a single root
  collection and then adds everything as a child. Instead it just has multiple
  collections on level 0. We account for that now by always creating an empty
  logical collection as the root collection where all the collections of the
  descriptor get added.
* Rename the {Mouse|Keyboard}Device.{cpp|h} to
  {Mouse|Keyboard}ProtocolHandler.{cpp|h} as that more clearly describes their
  purpose. These classes are protocol handlers, i.e. they handle the ioctl based
  mouse and keyboard protocol between the driver and the input_server add-ons.
* Change a lot of stuff to use references instead of pointers where it makes
  sense (not necessarily complete yet).

I've tested this successfully on a keyboard with extended keys, a combo device
with a keyboard with extended keys and a mouse, a mouse and a gamepad (that now
doesn't do anything anymore) and found no regressions. However, since there are
a lot of very varied ways how to describe such functions with HID, it's not too
unlikely that some more curiously described devices will now stop working. These
have to be handled case by case and their usages have to be added to the added
to the appropriate handlers (or new handlers have to be written). Please test
and create bug reports (preferrably including the report descriptor that is
written out to /tmp).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41794 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-28 19:59:02 +00:00
Michael Lotz caa82f7074 * Don't try to check devices that are obviously not on PCI anymore.
* Fix a warning about pci_address::segment potentially being used uninitialized.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41760 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-26 18:05:50 +00:00
Michael Lotz 7ce4456927 * After reading the routing table(s), do another run through the PCI devices and
check if all of them are assigned with a routing entry. If not, as happens for
  PCI add-on cards that ACPI isn't aware of for example, infer the routing by
  calculating it from the PCI default routing and going up through the parents
  until a matching routing entry is found. Fixes #7520.
* This will also panic (for now) in case there remain unroutable devices and
  eventually will prevent the IO-APIC to be used in these cases.
* Enabled some debug output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41758 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-26 12:35:02 +00:00
Michael Lotz cb80e931f6 * Turn around finding the routing table on a PCI bridge and checking for it to
actually be a bridge. We always want to check if the device at hand is a PCI
  bridge, because in that case we need to recurse further down. We recurse now
  even if there is no routing table found for the current bridge, since that
  doesn't mean that another bridge, further below, can't have a routing table
  again. Possibly fixes #7520.
* Fix the matching function to just check for function 0 to be present instead
  of classifying it. Previously if there happened to be a cardbus bridge on
  function 0 of a multi function device, the rest of the functions of the device
  would've been ignored because we returned early due to the unsupported bridge.
* Only hand down the current bus number when recursing as that makes it clearer
  what's going on instead of handing in a partially filled out pci_address
  structure and then filling in other parts inside the function.
* Commented out getting the segment number as we don't support it at all.
* Extended debug output.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41726 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-25 00:11:33 +00:00
Michael Lotz 901c33fcd0 Replace the $(...) syntax with backticks instead.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41721 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-24 21:14:41 +00:00
Michael Lotz 85d9520ec4 Use gsed instead of sed on Mac OS X as the builtin sed doesn't support all the
options we need. This still requires gsed to be installed from ports.
Fixes #7563.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41719 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-24 19:23:56 +00:00
Michael Lotz 35e8baa6b0 Fix typo in error output and a little automatic whitespace cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41715 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-24 17:01:35 +00:00
Michael Lotz c05a3fa6a7 We obviously need to mask off the interrupt threshold value before overwriting
it with our new setting. Otherwise we might end up with an illegal value as the
interrupt threshold which might inhibit interrupt generation alltogether
depending on the controller implementation. This was the case for the ATI/AMD
SBx00 chipsets. Therefore fixes #5551.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41690 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-23 21:53:12 +00:00
Michael Lotz fe81732aca Tiny cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41689 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-23 21:48:40 +00:00
Michael Lotz ce44796e34 Introduce simplistic poll mode for EHCI. If enabled a thread will run the
interrupt handler every millisecond so it can check for interrupts to handle.
While this is certainly not ideal, it allows EHCI to run (surprisingly well
even) on chipsets that experience interrupt routing issues.
It can be enabled with the safemode setting "ehci_polling on" that can either
be entered using the new advanced debug option entry in the bootloader and/or
in the kernel settings file.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41688 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-23 20:50:21 +00:00