- 19 Jul, 2015 5 commits
-
-
- Remove týndur-specific fields from non-OS-dependant structures Signed-off-by:
Max Reitz <max@tyndur.org> Acked-by:
Kevin Wolf <kevin@tyndur.org> Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
+ Add cdi_elapsed_ms() + Add CDI_CONDITION_WAIT() and CDI_CONDITION_WAIT_SLEEP() macros for waiting until a volatile condition is fulfilled or a timeout occurs Signed-off-by:
Max Reitz <max@tyndur.org> Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
+ Type inheritance is a common pattern seen in CDI. The new CDI_UPCAST() macro makes conversion to superclasses safer and allows for multiple inheritance if the need arises. + Add some endianness conversion functions. Even though support for big endian platforms is nowhere in sight, endianness conversion is still a common operation which should not be implemented in the driver itself but provided by the CDI implementation. Signed-off-by:
Max Reitz <max@tyndur.org> Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
Our dear Max likes to be silly with multilingual comments. Fine with me, but make sure that this stuff doesn't end up in English or German documentation. This patch doesn't change the Makefile to actually produce documentation in any of the new languages as it would be utterly useless in its incomplete state. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
+ Apparently it is allowed to specify additional CFLAGS (as "CC_FLAGS") in a file named Makefile.conf (formatted as a shell script) in a driver's root directory; or at least ext2 just does this. This patch makes the CDI Makefile take the additional flags from that file into account, if present. Thanks to this, the ext2 driver can be compiled. Signed-off-by:
Max Reitz <max@tyndur.org> Acked-by:
Kevin Wolf <kevin@tyndur.org> Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 16 Apr, 2015 1 commit
-
-
Kevin Wolf authored
Surprisingly, real hardware works much better when the disk gets power and is spun up. Also disable any automatic transition to power management modes just to be on the safe side. Before resetting a port, the processing of the command list must be stopped. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 17 Jan, 2015 2 commits
-
-
Kevin Wolf authored
This was implemented the same as CDI_SCSI_READ, but should be using the out function. Cc: cdi-devel@tyndur.org Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
This contains not only the modifications to actually split requests by the block size of 2048, but also included a fix to request.c, which used packet_size before it was initialised, so that always only a single block would be transferred. Cc: cdi-devel@tyndur.org Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 13 Jan, 2015 1 commit
-
-
! Added function call to free up the ressource structure Signed-off-by:
OSDevNewbie <baesae@hotmail.ch> Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 09 Jan, 2015 5 commits
-
-
Kevin Wolf authored
Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
cdi_provide_device() hasn't been implemented so far because it raises questions of inter-driver communication in microkernel environments that aren't trivial to answer. This patch adds an interface to provide a device that is guaranteed to be handled by a CDI driver in the same binary, i.e. when passing pointers works. This is not meant as a general solution, but only to be used as a means for the internal organisation of complex drivers where some kind of an internal bus exists that can neither be exposed by a different driver nor can its children be handled by a different driver. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
Every complete implementation will need to store the information whether a driver is already initialised somewhere, so just put it into struct cdi_driver. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 01 Jan, 2015 2 commits
-
-
Kevin Wolf authored
The code was apparently based on the osdev.org wiki, which confused seconds and microseconds for step_rate_time, so we're off by a factor of 1000. It's fixed in the wiki for a couple of years now, so it might be time to fix it in this driver as well. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
Kevin Wolf authored
It's not a very good idea to flag every resource as readable, browsable and symlink-readable at the same time. This fixes the flags to actually match the assigned class. The iso9660 driver knows symlinks as it reads them from a Rockridge image, however it doesn't implement the .read_link callback, so using the respective flag doesn't make sense. Treat symlinks as regular files for now. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 02 Jan, 2014 1 commit
-
-
Kevin Wolf authored
The first 1024 bytes on the disk must be left alone. If they are part of the first block, they need to be included in the write request of each superblock update because the cache works only at the granularity of filesystem blocks. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 05 Mar, 2012 1 commit
-
-
Kevin Wolf authored
Commit 10f8c755 broke the floppy driver by initialising the drives before the controller. This fix restores the right order. Additionally, floppy must assign the device's driver after 10f8c755 because it calls the device init function before generic CDI code can do the job. This could clearly need some cleanup so that CDI calls the device init functions again, but for now let's just fix the breakage. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 18 Jun, 2011 2 commits
-
-
! ata: Retrying after read/write errors helps to make the code work a bit more reliably on real hardware Signed-off-by:
Antoine Kaufmann <toni@tyndur.org> Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
! ata: The busmaster DMA buffer must be aligned to 64k for DMA to work on real hardware, too Signed-off-by:
Antoine Kaufmann <toni@tyndur.org> Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 25 Mar, 2011 1 commit
-
-
This patch fixes the e1000 driver in VMware (and potentially some real hardware as well) by enforcing a 16-byte alignment for transmit and receive descriptors. Without this fix, the card automatically aligns the addresses on a 16-byte boundary, causing corruption in several data structures. The specification specifically states "The * Descriptor Base Address must point to a 16-byte aligned block of data". VMware appears to be far more pedantic than QEMU and VirtualBox when using these buffers. Signed-off-by:
Matthew Iselin <matthew@theiselins.net> Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 06 Mar, 2011 1 commit
-
-
Kevin Wolf authored
We use receive buffers of 1536 bytes, but tell the NIC that the buffer size is 2048. Probably not a good idea. While at it, make the buffer size setting in RCTL explicit, even though it's just a zero. Signed-off-by:
Kevin Wolf <kevin@tyndur.org> Acked-by:
Rich Edelman <redelman@gmail.com>
-
- 23 Dec, 2010 3 commits
-
-
Kevin Wolf authored
+ hdaudio: Added a CDI driver for Intel HD Audio. Tested on qemu and VirtualBox. Signed-off-by:
Kevin Wolf <kevin@tyndur.org> Acked-by:
Max Reitz <max@tyndur.org>
-
This adds an AC97 sound output driver using the CDI.audio interface. Signed-off-by:
Max Reitz <max@tyndur.org> Acked-By:
Matthew Iselin <matthew@theiselins.net> Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
This adds the CDI.audio header for sound I/O drivers. Signed-off-by:
Max Reitz <max@tyndur.org> Acked-By:
Matthew Iselin <matthew@theiselins.net> Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 27 Nov, 2010 1 commit
-
-
Kevin Wolf authored
! ata: Bit 3 in the Bus Master IDE Command Register is set if the DMA transfer is a bus master write, i.e. read from disk and write to memory. Current code got that wrong and sets it for writes to the disk. Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 17 Nov, 2010 1 commit
-
-
* Unset the executable bit Signed-off-by:
Max Reitz <max@tyndur.org> Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 10 Sep, 2010 1 commit
-
-
Kevin Wolf authored
If we want to point people at the CDI documentation, we should have some helpful content on the main page. This is a beginning, with a short introduction to CDI, and some links to the most important doxygen pages as well as to the git repo, mailing list and IRC. I already used this patch for generating new documentation, you can take a look at the usual URL (http://lpt.tyndur.org/cdi/english ) Signed-off-by:
Kevin Wolf <kevin@tyndur.org> Acked-by:
Rich Edelman <redelman@gmail.com>
-
- 28 Aug, 2010 2 commits
-
-
Kevin Wolf authored
This is the third e1000 model that is supported by VirtualBox. No further changes to the code seem to be required, it works fine as soon as the driver detects the device. Signed-off-by:
Kevin Wolf <kevin@tyndur.org> Acked-by:
Matthew Iselin <matthew@theiselins.net>
-
Kevin Wolf authored
This extends the existing documentation for the storage module and adds an English translation. I consider cdi_storage_driver_register useless, so instead of documenting I removed it. If anyone has a use for it, please tell me and I'll try and find a reason why you're wrong. Signed-off-by:
Kevin Wolf <kevin@tyndur.org> Acked-by:
Matthew Iselin <matthew@theiselins.net>
-
- 16 Aug, 2010 1 commit
-
-
This patch makes the e1000 driver work in VirtualBox. I'm working towards getting the driver working in VMWare as well, but VMWare emulates a different chip (82545 rather than 82540). Those fixes and adjustments will come in a different patch, at a later date. The biggest change here is that the driver now supports the microwire interface for reading from the EEPROM as well as the EERD. Signed-off-by:
Matthew Iselin <matthew@theiselins.net> Signed-off-by:
Kevin Wolf <kevin@tyndur.org>
-
- 27 Jul, 2010 2 commits
-
-
Kevin Wolf authored
Add some comments for previously undocumented structures, convert German comment to UTF-8 and add English translations. Signed-off-by:
Kevin Wolf <kevin@tyndur.org> Acked-by:
Max Reitz <max@tyndur.org>
-
Kevin Wolf authored
There were CDI headers which included stdio.h and sys/types.h and used types of these header files. Usage of both headers is not permissible in the context of CDI, so replace them by standard types. Signed-off-by:
Kevin Wolf <kevin@tyndur.org> Acked-by:
Max Reitz <max@tyndur.org>
-
- 14 May, 2010 1 commit
-
-
Kevin Wolf authored
Added English translation of the general interface description. Signed-off-by:
Kevin Wolf <kevin@tyndur.org> Acked-by:
Rich Edelman <redelman@gmail.com>
-
- 13 Feb, 2010 1 commit
-
-
This patch provides a prototype and initial documentation for the cdi_provide_device function. Signed-off-by:
Matthew Iselin <matthew@theiselins.net> Signed-off-by:
Kevin Wolf <kevin@tyndur.org> Acked-by:
Rich Edelman <redelman@gmail.com> Acked-by:
Max Reitz <max@tyndur.org>
-
- 12 Feb, 2010 5 commits
-
-
Kevin Wolf authored
- misc.h: Removed memory management functions Signed-off-by:
Kevin Wolf <kevin@tyndur.org> Acked-by:
Matthew Iselin <matthew@theiselins.net> Acked-by:
Max Reitz <max@tyndur.org> Acked-by:
Rich Edelman <redelman@gmail.com>
-
Kevin Wolf authored
* In all drivers, replace cdi_alloc_phys_mem by cdi_mem_alloc * In all drivers, replace cdi_alloc_phys_addr by cdi_mem_map Signed-off-by:
Kevin Wolf <kevin@tyndur.org> Acked-by:
Matthew Iselin <matthew@theiselins.net> Acked-by:
Max Reitz <max@tyndur.org> Acked-by:
Rich Edelman <redelman@gmail.com>
-
Kevin Wolf authored
* pcnet: The initialization block a is temporary structure and doesn't belong in pcnet_device. The code for sending it is split out into its own function to make the switch to cdi_mem_alloc/free easier. Signed-off-by:
Kevin Wolf <kevin@tyndur.org> Acked-by:
Matthew Iselin <matthew@theiselins.net> Acked-by:
Max Reitz <max@tyndur.org> Acked-by:
Rich Edelman <redelman@gmail.com>
-
Kevin Wolf authored
This adds a new CDI header cdi/mem.h. It unifies memory allocations (and memory areas passed from external sources) for different types of DMA, allows the OS layer to back it by shared memory (makes sense in a microkernel approach) and probably some more nice things. What cdi_mem_alloc/map/free are good for is obvious, I hope. To explain the use of the other functions, consider the following. Let's take a disk driver as an example. Instead of buffer/size its write function will directly get a memory area from the OS. The OS might already have allocated the memory physically contiguous, but it doesn't need to do so. The driver calls cdi_mem_require_flags which copies the data into a suited buffer - but if the OS already did the right thing, it's a no-op. cdi_mem_copy is for the other way round. Now the disk driver wants to read something from its disk. It gets a memory area from the OS and uses cdi_mem_require_flags to get something usable for DMA, which may or may not invol...
-
* Change CDI headers to use angle brackets for other CDI headers Signed-off-by:
Matthew Iselin <matthew@theiselins.net> Signed-off-by:
Kevin Wolf <kevin@tyndur.org> Acked-by:
Max Reitz <max@tyndur.org> Acked-by:
Rich Edelman <redelman@gmail.com>
-