summaryrefslogtreecommitdiff
path: root/sys/dev
AgeCommit message (Collapse)Author
2007-04-21backout: compile before you commit, pleaseTheo de Raadt
2007-04-21correct list of architecturesReyk Floeter
ok deraadt@
2007-04-21correct list of architecturesTheo de Raadt
2007-04-21fill the rx free fifo on interface up, and drain it on interface down.David Gwynne
2007-04-21tht wants at least 128 bytes in the first physical segment of an rx bufferDavid Gwynne
for some reason, so i had some code in there that tried to guarantee that. however, newly allocated mbufs and clusters are physically contiguous and bigger than 128 bytes. therefore we dont need to do that check. while here check if there is enough space in the fifo before trying to fill any of it. this means we can skip dma syncs if we're not going to end up writing anything in the fifo.
2007-04-21rename tht_rx to tht_rxf_fill to avoid confusion.David Gwynne
keep a list of used pkts in tht_pkt_list as well as free ones. add tht_pkt_used which can be used to see if a tht_pkt_list is in use by returning the head of the used list inside itself. (ab)use this to drain the rx free fifo when the interface is brought down. tht_rxf_drain pulls used pkts off, unmaps their mbufs, frees them, and then returns the pkt to the free list. the whole tht_pkt_list can then be freed safely.
2007-04-21add tht_rx. this function will try to fill as much of the rx free fifo asDavid Gwynne
possible. it loops till it runs out of tht_pkts to use on the rx descriptor free list, until it runs out of space in the fifo, or until it cant allocate or map any more mbufs. tht has a weird requirement that the first physical buffer in an sg list is at least 128 bytes long. i have code that tries to guarantee that, but id like someone else to look at it and tell me if its necessary or dumb.
2007-04-21when allocating a new mbuf for rx, do a dmamap_sync before handing it toDavid Gwynne
the hardware. oops.
2007-04-21simplify some maths in fw_load a bitDavid Gwynne
2007-04-21allocate a small list of tx and rx descriptors on interface up and down.David Gwynne
2007-04-21quick macro to figure out how many 64bit words a buffer will use.David Gwynne
2007-04-21create struct tht_pkt to keep track of mbufs that are on the hardware andDavid Gwynne
their dmamaps. so far it looks like the same thing can be used to look after both the transmitted and recved packets. this also adds code to allocate a list of them and set up their dmamaps, some free list handling, and code to free them when you dont want them anymore.
2007-04-21represent the uid field in all the descriptors as a u_int64_t instead ofDavid Gwynne
two u_int32_ts
2007-04-21rename tht_rxf to tht_rx_free. tweak comments describing the hw structuresDavid Gwynne
a bit so theyre less offensive to my eyes. massage tht_rx_free a bit.
2007-04-21Remove unused header files.Marc Balmer
2007-04-20Increase the delay while uploading a firmware buffer in malo_load_firmware().Claudio Jeker
We're doing DMA transfers without interrupts or some other indication and 100 microseconds is not enough on my X40 and so the firmware gets corrupted. Increasing it to 500 microseconds this should give us enough safety margin. OK mglocker@
2007-04-20add a lock around ioctl handling to prevent the posssibility that someoneDavid Gwynne
will try to bring the interface up in the middle of it being brought down. im sleeping in tht_down while waiting for the tx fifos to drain, so its possible something else can enter the ioctl handler while that's happening.
2007-04-20this implements up and down routines for the interface. currently whenDavid Gwynne
brought up they allocate all four fifos and set the interface flags. when theyre brought down they clear the flags, wait for the tx fifos to drain, and then free all the fifos. interrupts are not yet dealt with.
2007-04-20implement reads from a fifo.David Gwynne
2007-04-20add fifo descriptors for the rxf and rxd fifos.David Gwynne
2007-04-20tht uses ifmedia and firmloadDavid Gwynne
2007-04-20we'd like to show if the nic has link regardless of whether the interfaceDavid Gwynne
is up or not.
2007-04-20implement checking of the link status according to the firmware, and teachDavid Gwynne
ifmedia about it. im not sure what the point of the ifmedia goo is if the only link type we support is "autoselect". using it to show the link state seems to be easier than implementing that ioctl ourselves.
2007-04-20bits in the link status registerDavid Gwynne
2007-04-19Save volume and chunk metadata as well.Marco Peereboom
2007-04-19Cleanup phy selection code, simplifying the code considerably. Attach onlyMark Kettenis
one phy on Sun ERI; gets rid of the duplicate phy on the blade1k. tested by many, ok drahn@
2007-04-19descend into thtDavid Gwynne
2007-04-19this is two (and a half) changes, but im too lazy to split them up.David Gwynne
the first is the addition of handlers for the fifos. you can now check if there the fifo is ready to be used, pre sync it for use, do many incremental updates to it, then post sync it to tell the hardware that you've done something. the ready, pre, and post funcs are done for both the reader and writer fifos, but only updates to the writer fifos is implemented so far. the second change is the firmware loading. i needed the above changes to do this, and i needed firmware loading to test them, so this change gets both. so we have a mountroot hook (that was the half change) that allocates the tx task fifo, reads the firmware from disk, and then pushes the firmware onto the fifo. once that is done it spins till the firmware is ready, then cleans up everything it allocated for loading the firmware. this diff wont time out if anything goes wrong during fw_load. if anyone wants to look at a nice way of doing it, please do.
2007-04-19make it compile again if LMDEBUG is defined;Robert Nagy
ok kettenis@
2007-04-19format and knf the array so it looks more like c and less like a csv.David Gwynne
2007-04-19the tht firmware isnt technically a firmware, its a series of commandsDavid Gwynne
interleaved with data, which is copied directly into the task fifo of a tht controller. the commands and data are all 32bit words, and they all have to be little endian. this byteswaps the host ordered values in microcode.h into little endian values for the controller to eat. you can now build the firmware correctly on big endian archs.
2007-04-19add bits to turn microcode.h into an actual blob. needs endian fixes yet.David Gwynne
2007-04-19tehuti are allowing us to distribute their firmware under a 4 clause bsdDavid Gwynne
license. thanks to Alexander Indenbaum and Nick Bhavsar at Tehuti for sorting this out.
2007-04-19Add initial metadata write function and hook it up.Marco Peereboom
2007-04-19Silly tedu, partitions are measured in blocks not in bytes.Marco Peereboom
2007-04-18Pass arguments to DPRINTF in the right order.Mark Kettenis
2007-04-18Remove the ``new i/o'' code. It has never worked well, noone has stepped upMiod Vallat
to fix it, and it goes in the way of good changes pedro is brewing. No functional change, tested todd@ millert@
2007-04-18start implementing support for the fifos on these chips.David Gwynne
there are four types of fifos: a tx task fifo (packets get sent via this), a tx free fifo (for us to know when packets have been sent), a rx descriptor fifo (to give empty packets for the nic to fill), and an rx free fifo (when packets are recieved). each port can have four sets of these fifos, so you can effectively have completely independant io paths. however, due to the nature of our kernel there is no advantage in implementing the use of more than one set of these. so this diff creates wrappers around fifos, the allocation of the dma regions for them, and a description of which registers are used to manage them.
2007-04-18move the tht attach args up a bit, for greater feng shuiDavid Gwynne
2007-04-18add a wrapper around single segment dmaable memory allocations. this hasDavid Gwynne
now been copied from ami into mpi, arc, vic, ahci, sili, and mfi. ive probably forgotten some others too.
2007-04-18callers of sw_reset will print an error message if anythign goes wrong, soDavid Gwynne
sw_reset itself doesnt have to
2007-04-18reset the port before establishing the interrupt handler during attachDavid Gwynne
2007-04-18implement the software reset of a port as per the specificationDavid Gwynne
2007-04-18code to busy wait on registers and bits in bus_spaceDavid Gwynne
2007-04-18tiny register additionsDavid Gwynne
2007-04-18define the bits in the RX_FLT registerDavid Gwynne
2007-04-17Whenever there are mutliple outstanding IOs a chunk can transtion multipleMarco Peereboom
times to the same state. Ignore that. Tested by thib@
2007-04-17The debug printf in malo_newstate() is too verbose so require debug level 2Claudio Jeker
to print it.
2007-04-17Now that acpidock no longer hangs machines during boot (at leastMichael Knudsen
according to the reports I've been getting) it should be safe to enable it again, so remove the #if 0 stuff around it. ok marco
2007-04-17Fix a really emberrassing bug: Do not unconditionally call _DCK with aMichael Knudsen
parameter of 1 (dock). This was causing acpidock to attempt to dock even if the machine was not in its dock which was causing hangs on pre-60 series ThinkPads. It was also causing my X60 to not see NOTIFY 0 (dock) messages which would initiate the docking sequence. Diff from Matthew R. Dempsky. Tested on X60 by me, on T42/43 by brad, ckuethe, reyk, Johan M:son, and on T21 by reyk. I think someone also tested on X40/41 but I don't remember who. Thanks a lot.