Commit Graph

9107 Commits

Author SHA1 Message Date
Alexander von Gluck IV
b3ce8cd8ba small logic fix on my part, not properly handling usb drives with empty media. Potential fix to #7687
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42186 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 16:39:35 +00:00
Ingo Weinhold
dc2b8faba2 exit_debugger(): Only try to release the semaphore when no one holds the
scheduler lock. Otherwise we may deadlock.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42182 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 12:48:06 +00:00
Ingo Weinhold
ec5cc81fa0 exit_debugger():
* Only try to cancel the a transfer, if sUseUSBKeyboard is set.
* Set the "_usbPipe" parameter.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42181 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-14 12:46:40 +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
Alexander von Gluck IV
aa2a6e33cb * Move to common MMIO function set to make card subsystem access easier
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42159 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 22:28:13 +00:00
Alexander von Gluck IV
d9e412b339 * Repair style issue using uintNN_t vs uintNN
* Make index numbering consistant (0-n vs 1-n)
* Add a little more tracing to PLLCalibrate because
  we were missing a failure situation


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42158 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 21:40:22 +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
Alexander von Gluck IV
a604c04965 * Small style fix to Calibration diff var and PLLCRTCGrab stored var
* Repair incorrect DCCG operation at end of PLLSet


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42149 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 14:46:52 +00:00
Alexander von Gluck IV
babb12ed0e forgot to remove this, doesn't make sense to power the PLL down on accelerant unload
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42147 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 04:19:22 +00:00
Alexander von Gluck IV
e7e76b29e8 * Define default PLL ranges
* Add crtid to register struct
* Disable VGA mode on FrameBuffer set (enables extended mode setting)
* Disable blanking calculations and setting more gracefully via if 0
* Add a *large* amount of code to Set/Calculate/Calibrate PLL
* Disable PLL on removal of accel.
* Remove junk comments on overscan
* Enable pixel clock limit pulling
* write32AtMask style cleanup
* Rename ReadMC to be more consistant
  (I need to adjust naming for these MMIO calls)
* Implement read/write MC. (so many hardcoded oneoffs AMD)
* Implement write32PLLAtMask MMIO call


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42146 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 04:07:42 +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
Ingo Weinhold
90ade5e298 * Added file_system_module_info::uninitialize() analogously to
partition_module_info::uninitialize().
* Implemented the hook for BFS.
* Implemented KFileSystem::Uninitialize().

Fixes failure to initialize a BFS initialized device with an intel partition
map.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42142 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 01:53:11 +00:00
Ingo Weinhold
0b7fe5cbe2 partition_module_info::uninitialize(): Added block size parameter for
convenience.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42141 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 01:38:03 +00:00
Ingo Weinhold
285f4cf441 * Added optional partition_module_info::uninitialize() hook. It is supposed to
destroy the partitioning system's on-disk structure.
* Adjusted the existing partitioning system implementations accordingly.
  Actually implemented the hook for the intel partitioning system.
* Added Uninitialize() method to KDiskSystem and KPartitioningSystem. The latter
  implements the method calling the new module hook.
* _user_uninitialize_partition(): Also let the disk system uninitialize the
  on-disk structure.

This fixes the failure to initialize a disk device with BFS, when it contains a
valid partition map with at least one partition.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42140 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-13 01:27:13 +00:00
Ingo Weinhold
8bcc50c336 * Added arch_debug_blue_screen_try_getchar() and arch_debug_serial_try_getchar()
which don't wait for a character, but return -1 when no character is
  available ATM. Implemented correctly for x86 only.
* Changed the semantics of the debugger_module_info::debugger_getchar() hook.
  It is supposed to return immediately now.
* Adjusted usb_keyboard accordingly. Hacked UHCI's debug_process_transfer() to
  achieve that. It does now start, check, or cancel a transfer. Split
  UHCI::ProcessDebugTransfer() into StartDebugTransfer(), and
  CheckDebugTransfer() accordingly, and also added a CancelDebugTransfer().
  The latter seems to have issues. Michael, please have a look. I have no clue
  what I'm doing. :-)
* Adjusted kgetc() to poll all possible inputs using the new
  functions/semantics. This allows to use any input (USB, PS/2, serial) in KDL.
* Removed the no longer needed "serial_input" command.
* read_line(): Also support 0x7f as backspace code. That's what xterm sends.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42126 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-12 17:15:42 +00:00
Axel Dörfler
21d6b8e2c7 * Let checkfs collect stats of how the data streams are used.
* Would be nice to only show this when an extra argument had been passed to
  checkfs, but I'm afraid the API is somewhat limited, not to say pretty much
  unusable for the task.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42125 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-12 15:24:54 +00:00
Ingo Weinhold
24df65921b Merged signals-merge branch into trunk with the following changes:
* Reorganized the kernel locking related to threads and teams.
* We now discriminate correctly between process and thread signals. Signal
  handlers have been moved to teams. Fixes #5679.
* Implemented real-time signal support, including signal queuing, SA_SIGINFO
  support, sigqueue(), sigwaitinfo(), sigtimedwait(), waitid(), and the addition
  of the real-time signal range. Closes #1935 and #2695.
* Gave SIGBUS a separate signal number. Fixes #6704.
* Implemented <time.h> clock and timer support, and fixed/completed alarm() and
  [set]itimer(). Closes #5682.
* Implemented support for thread cancellation. Closes #5686.
* Moved send_signal() from <signal.h> to <OS.h>. Fixes #7554.
* Lots over smaller more or less related changes.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42116 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-12 00:00:23 +00:00
anevilyak
4bcb62ee96 Applied patch by Jean-Loïc Charroud that reworks the anyboot MBR to fix boot
problems on various systems. Resolves #3441. Thanks!

+alpha3



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42104 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-11 19:14:49 +00:00
Rene Gollent
8c3c117201 Adjust ReleaseReference() to also return the previous ref count as
AcquireReference() now does, and adjust all callers that relied on the previous
return type.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42091 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-10 22:31: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
Alexander von Gluck IV
5be4b532a8 * Put uint8 back to uint32 as per ML recommendations
* Begin using multi-architecture friendly formatting macros per ML
* Change uint32 snoozeTime to preferred bigtime_t per ML
* Thanks for the great feedback!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42062 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-08 22:10:59 +00:00
Alexander von Gluck IV
331ecb302c change to non-posix int introduced a small bug, sorry about that
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42060 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-08 19:27:39 +00:00
Alexander von Gluck IV
d1639f80d8 small change, use non-posix style int typedef
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42059 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-08 18:57:03 +00:00
Alexander von Gluck IV
ea9b910a26 * change overly large uint32 to uint8 as we only count to 12 max
* add additional tracing to usb_disk lun inquiry
* cd and other optical disk devices can take some time to spin up
  when plugged. Now we give them some time to do so to ensure we
  can detect the media type properly if there is a cd in the drive.
  Things non-mechanical (flash drives) will continue almost immediately
  as there is no spin up time. The more attempts, the longer the wait.
  We now try 7 times (28 seconds total), my modern usb cdrom takes
  about 6 (21 seconds) of those cycles to be ready on power up and 4
  (10 seconds) on media change while powered up.
* tested with usb media and cd media.  Doesn't introduce any visible
  delay to the user.
* the write protected status in lun is now correct for my usb cd device
  on plug (it wasn't previously)
* still seeing it though as read/write. Looking at this now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42058 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-08 18:45:22 +00:00
Axel Dörfler
5cb190eda2 * Remove the entry from the entry cache as well when removing a bad inode.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42057 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-08 18:29:01 +00:00
Axel Dörfler
1342dbcbbc * Removed support for building on BeOS R5.
* Made MessageIO comply to our coding style.
* No other functional change (intended).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42055 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-08 17:22:51 +00:00
Alexander von Gluck IV
ba1f2817df fix deprecated non-const char
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42048 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-08 03:50:26 +00:00
Alexander von Gluck IV
36e54f3a44 fix gcc4 warning on missing parentheses on &
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42047 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-08 03:41:48 +00:00
Alexander von Gluck IV
ca3d3619b6 correct cookie pointers to match filesystem operations; new to new.h; fix parameters of ramfs_read_vnode
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42046 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-08 03:35:23 +00:00
Alexander von Gluck IV
39313f2227 begin reorganizing ramfs callback parameters to match new filesystem driver standard; correct incorrect style fix as per Ingo; correct layout of fs operation mapping struct
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42045 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-08 03:13:59 +00:00
Alexander von Gluck IV
6305a11cd4 tweak the last of the nodes; break apart old style file_system_module_info; add fVolume to Volume to replicate bfs style
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42042 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-08 02:25:42 +00:00
Alexander von Gluck IV
84a474186f change legacy fs_cookie to void**; tweak a few node function parameters
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42038 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-08 00:58:50 +00:00
Alexander von Gluck IV
f76a033d04 first round of style cleanup on ramfs driver; change node _dir to pointer in ramfs_lookup function
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42036 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-08 00:42:51 +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
Alexander von Gluck IV
32aef194f4 remove cpp.h and cpp.cpp
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42030 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-08 00:10:03 +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
Alexander von Gluck IV
8a480e5d69 undo accidental change to cpp.cpp in r42016
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42018 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-07 18:09:12 +00:00
Alexander von Gluck IV
3de080c186 change format of fs_volume to match current kernel filesystem interface
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42016 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-07 18:07:25 +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