Age | Commit message (Collapse) | Author | |
---|---|---|---|
2006-12-12 | small cleanup after feng shui | David Gwynne | |
2006-12-12 | after allocating the ahci_port bits, stash it in the softc rather than | David Gwynne | |
drop it. im guessing at some point we'll want to use each port, knowing where they are can help. | |||
2006-12-12 | feng shui | David Gwynne | |
2006-12-12 | for each port the controller says is hooked up, go and allocate our | David Gwynne | |
ahci_port structs for it. | |||
2006-12-12 | start implementing the bits that allocate the per port structures and their | David Gwynne | |
ccb lists. this is missing handling of the dmamem each port needs to manage, but that can wait till i figure out how it fits together. insane stuff. | |||
2006-12-12 | remember our dma tag. be able to do dma is like, really cool. man. | David Gwynne | |
2006-12-12 | add functions to get and put ccbs out of each ports command free list. | David Gwynne | |
2006-12-12 | add wrappers for reading and writing a ports registers called ahci_pread, | David Gwynne | |
and ahci_pwrite. these will use an io handle into a window of the controllers register space that can be created with bus_space_subregion, and which is stored in the ahci_port struct. | |||
2006-12-12 | introduce the command control blocks, and the concept that they are managed | David Gwynne | |
per port rather than as a big list for the whole controller. the softc has an array of pointers to a struct that manages all the shizz relevant to a particular port. when we map the controllers ports, we'll allocate these as needed. if the port isnt implemented, we leave its pointer in the softc null and use that to decide if a drive might be there or not, rather than lookup up the PI register all the time. a comparison has to null has to be cheaper than doing bit operations, surely. | |||
2006-12-12 | stash the number of commands each port can do in the softc | David Gwynne | |
2006-12-11 | use oct bits consistently in the format string for %b. pointed out by | David Gwynne | |
deraadt@ | |||
2006-12-11 | oops, we want to return when everything goes well in ahci_attach, rather | David Gwynne | |
than fall through to the bits that do cleanup when an error occurs. | |||
2006-12-11 | remove the argument to all the port registers that say which port you want | David Gwynne | |
to address. instead make them simply offsets from the start of a ports register space, which is something we can easily set up with bus_space_subregion. this should make the code a lot easier to read later on. | |||
2006-12-11 | dont stash the implemented ports map, im going to use a different | David Gwynne | |
mechanism to figure out if a port is usable or not later on. | |||
2006-12-11 | define the command structs used by the ports. | David Gwynne | |
this stuff isnt endearing me to ata at all, and apparently ahci is a good ata controller. the command path looks way more complicated than it needs to be (or maybe i am used to really good scsi controllers, i dont know). a lot of the terminology seems annoyingly different just for the sake of being different. i mean, what is the advantage of calling a scatter gather lement a "physical region descriptor table"? noone else calls it that. there's a lot of weird stuff in here. blah. | |||
2006-12-11 | pull the wrapper for allocations of dma mem with a single segment in from | David Gwynne | |
arc, which got it from mpi, which got it from ami. grange is right, we should look at pushing it back up into the bus_dma api somewhere. | |||
2006-12-11 | oops, too far for the match/attach funcs | David Gwynne | |
2006-12-11 | give the function prototypes a bit more room for the return type. | David Gwynne | |
2006-12-11 | per port register definitions | David Gwynne | |
2006-12-11 | fix %b format string now that deraadt fixed printf | David Gwynne | |
2006-12-11 | stash the field showing which ports are hooked up, and dump it if verbose | David Gwynne | |
debug is on | |||
2006-12-11 | if ahci debug and verbose output is enabled, then dump the cap register. | David Gwynne | |
this also fixes a few reg definition errors i found after having them dumped. something seems really screwy with %b. i cant select the 32nd bit position using \x20 or \040, so im using \32 and the rest are octal (\oNN). hex (\xNN) seems really really borked, and the compiler doesnt like eating some of the dec ones (eg, \8BITNAME). | |||
2006-12-09 | sigh, split the bus space mapping and interrupt hookup apart so i can | David Gwynne | |
reset the controller and clear interrupts off it before doing the hookup. | |||
2006-12-09 | reset the hba and set the enable bit. | David Gwynne | |
2006-12-09 | figure out which revision of ahci we're trying to use and print it out. | David Gwynne | |
if we don't know about it, bomb out. | |||
2006-12-09 | split the mapping of the pci resources out of the main attach func | David Gwynne | |
2006-12-09 | add wrappers for safe access to the register space. stolen from arc (which | David Gwynne | |
stole them from mpi). | |||
2006-12-09 | add macros for debug shizz | David Gwynne | |
2006-12-09 | bit definitions for the cap and ghc registers | David Gwynne | |
2006-12-09 | registers for hba control | David Gwynne | |
2006-12-09 | the start of a driver for ahci controllers. this does nothing but map the | David Gwynne | |
register space and hook an interrupt up for the controller i have, but it is going into the tree so i can work on it. commit early, commit often |