summaryrefslogtreecommitdiff
path: root/sys/dev/firewire/fwdev.c
AgeCommit message (Collapse)Author
2023-08-16sys: Remove $FreeBSD$: two-line .h patternWarner Losh
Remove /^\s*\*\n \*\s+\$FreeBSD\$$\n/
2017-11-27sys/dev: further adoption of SPDX licensing ID tags.Pedro F. Giffuni
Mainly focus on files that use BSD 2-Clause license, however the tool I was using misidentified many licenses so this was mostly a manual - error prone - task. The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts. Notes: svn path=/head/; revision=326255
2016-05-10Remove NULL checks after M_WAITOK allocations from firewire.Edward Tomasz Napierala
MFC after: 1 month Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=299351
2016-05-03sys/dev: minor spelling fixes.Pedro F. Giffuni
Most affect comments, very few have user-visible effects. Notes: svn path=/head/; revision=298955
2016-05-01Make it explicit that D_MEM cdevsw d_flag is to signify that theKonstantin Belousov
driver is (or behaves identically to) /dev/mem. Remove the D_MEM flag from random drivers. Note that currently the D_MEM flag does not affect any behaviour, but this going to change in the next commit. Noted and reviewed by: alc Sponsored by: The FreeBSD Foundation MFC after: 1 week X-Differential revision: https://reviews.freebsd.org/D6149 Notes: svn path=/head/; revision=298890
2014-09-27Remove obsolete compatibility glue and improve firewire code readability.Alexander Kabaev
Commit my version of style(9) pass over the firewire code. Now that other people have started changing the code carrying this is as a local patch is not longer a viable option. MFC after: 1 month Notes: svn path=/head/; revision=272214
2014-09-18Start the process of cleaning up FreeBSD's firewire driver.Will Andrews
sys/dev/firewire/firewire.c: sys/dev/firewire/firewire.h: sys/dev/firewire/firewirereg.h: sys/dev/firewire/fwcrom.c: sys/dev/firewire/fwdev.c: sys/dev/firewire/fwdma.c: sys/dev/firewire/fwmem.c: sys/dev/firewire/fwohci.c: sys/dev/firewire/fwohci_pci.c: sys/dev/firewire/fwohcivar.h: sys/dev/firewire/if_fwe.c: sys/dev/firewire/if_fwip.c: sys/dev/firewire/sbp.c: sys/dev/firewire/sbp_targ.c: Unifdef the code, removing support for DragonflyBSD and FreeBSD prior to version 5. Submitted by: gibbs MFC after: 1 month Sponsored by: Spectra Logic MFSpectraBSD: 1081188 on 2014/08/01 Notes: svn path=/head/; revision=271795
2013-09-07- Use make_dev_credf(MAKEDEV_REF) instead of the race-prone make_dev()+Davide Italiano
dev_ref() in the clone handlers that still use it. - Don't set SI_CHEAPCLONE flag, it's not used anywhere neither in devfs (for anything real) Reviewed by: kib Notes: svn path=/head/; revision=255359
2009-12-29Update d_mmap() to accept vm_ooffset_t and vm_memattr_t.Robert Noland
This replaces d_mmap() with the d_mmap2() implementation and also changes the type of offset to vm_ooffset_t. Purge d_mmap2(). All driver modules will need to be rebuilt since D_VERSION is also bumped. Reviewed by: jhb@ MFC after: Not in this lifetime... Notes: svn path=/head/; revision=201223
2009-09-08Revert previous commit and add myself to the list of people who shouldPoul-Henning Kamp
know better than to commit with a cat in the area. Notes: svn path=/head/; revision=196970
2009-09-08Add necessary include.Poul-Henning Kamp
Notes: svn path=/head/; revision=196969
2009-06-23Fix what seems to be an obvious typo preventing the body of theRoman Divacky
if statement to ever be executed. Approved by: ed (mentor) Notes: svn path=/head/; revision=194687
2008-09-27Replace all calls to minor() with dev2unit().Ed Schouten
After I removed all the unit2minor()/minor2unit() calls from the kernel yesterday, I realised calling minor() everywhere is quite confusing. Character devices now only have the ability to store a unit number, not a minor number. Remove the confusion by using dev2unit() everywhere. This commit could also be considered as a bug fix. A lot of drivers call minor(), while they should actually be calling dev2unit(). In -CURRENT this isn't a problem, but it turns out we never had any problem reports related to that issue in the past. I suspect not many people connect more than 256 pieces of the same hardware. Reviewed by: kib Notes: svn path=/head/; revision=183397
2007-06-06MFp4: MPSAFE firewire stack.Hidetoshi Shimokawa
- lock its own locks and drop Giant. - create its own taskqueue thread. - split interrupt routine - use interrupt filter as a fast interrupt. - run watchdog timer in taskqueue so that it should be serialized with the bottom half. - add extra sanity check for transaction labels. disable ad-hoc workaround for unknown tlabels. - add sleep/wakeup synchronization primitives - don't reset OHCI in fwohci_stop() Notes: svn path=/head/; revision=170374
2007-04-30MFp4: Fix broken userland API for async packets.Hidetoshi Shimokawa
- Introduce fw_xferlist_add/remove(). - Introduce fw_read/write_async(). - Remove unused FWACT_CH. MFC after: 1 week Notes: svn path=/head/; revision=169130
2007-04-24Configuration ROM length should be unsigned.Hidetoshi Shimokawa
MFC: 1 week Notes: svn path=/head/; revision=169019
2007-03-16Replace xfer->act.hand with xfer->hand.Hidetoshi Shimokawa
Notes: svn path=/head/; revision=167632
2006-12-06Correct a signedness bug which allowed members of the operatorColin Percival
group to read kernel memory. Security: FreeBSD-SA-06:25.kmem Notes: svn path=/head/; revision=164940
2005-08-08Merge the dev_clone and dev_clone_cred event handlers into a singleRobert Watson
event handler, dev_clone, which accepts a credential argument. Implementors of the event can ignore it if they're not interested, and most do. This avoids having multiple event handler types and fall-back/precedence logic in devfs. This changes the kernel API for /dev cloning, and may affect third party packages containg cloning kernel modules. Requested by: phk MFC after: 3 days Notes: svn path=/head/; revision=148868
2005-03-31Explicitly hold a reference to the cdev we have just cloned. ThisPoul-Henning Kamp
closes the race where the cdev was reclaimed before it ever made it back to devfs lookup. Notes: svn path=/head/; revision=144389
2005-01-06Start each of the license/copyright comments with /*-, minor shuffle of linesWarner Losh
Notes: svn path=/head/; revision=139749
2004-06-17Second half of the dev_t cleanup.Poul-Henning Kamp
The big lines are: NODEV -> NULL NOUDEV -> NODEV udev_t -> dev_t udev2dev() -> findcdev() Various minor adjustments including handling of userland access to kernel space struct cdev etc. Notes: svn path=/head/; revision=130640
2004-06-16Do the dreaded s/dev_t/struct cdev */Poul-Henning Kamp
Bump __FreeBSD_version accordingly. Notes: svn path=/head/; revision=130585
2004-05-23Don't try to copy out the result payload if there isn't one. This ioctlDoug Rabson
interface really needs changing to split out the various async request types. Notes: svn path=/head/; revision=129628
2004-05-22Change u_intXX_t to uintXX_t. Change a couple of 'unsigned long's toDoug Rabson
uint32_t where appropriate. Notes: svn path=/head/; revision=129585
2004-03-26MFp4: FireWireHidetoshi Shimokawa
* all - s/__FUNCTION__/__func__/. Submitted by: Stefan Farfeleder <stefan@fafoe.narf.at> - Compatibility for RELENG_4 and DragonFly. * firewire - Timestamp just before queuing. - Retry bus probe if it fails. - Use device_printf() for debug message. - Invalidiate CROM while update. - Don't process minimum/invalid CROM. * sbp - Add ORB_SHORTAGE flag. - Add sbp.tags tunable. - Revive doorbell support. It's not enabled by default. Notes: svn path=/head/; revision=127468
2004-03-24Fix a bug introduced in rev 1.33(mega API change).Hidetoshi Shimokawa
Because xfer->send.payload is a pointer to the buffer, '&' shouldn't be there. Submitted by: John Weisgerber <weisgerberj@gsilumonics.com> PR: misc/64623 Notes: svn path=/head/; revision=127347
2004-02-21Device megapatch 4/6:Poul-Henning Kamp
Introduce d_version field in struct cdevsw, this must always be initialized to D_VERSION. Flip sense of D_NOGIANT flag to D_NEEDGIANT, this involves removing four D_NOGIANT flags and adding 145 D_NEEDGIANT flags. Notes: svn path=/head/; revision=126080
2004-02-21Device megapatch 1/6:Poul-Henning Kamp
Free approx 86 major numbers with a mostly automatically generated patch. A number of strategic drivers have been left behind by caution, and a few because they still (ab)use their major number. Notes: svn path=/head/; revision=126076
2004-01-22Add missing free() in exception handlers.Hidetoshi Shimokawa
Reported by: Stanford Metacompilation research group Notes: svn path=/head/; revision=124836
2003-11-07Respect a return code of fwmem_open().Hidetoshi Shimokawa
Notes: svn path=/head/; revision=122227
2003-10-24Fix for FW_ASYREQ.Hidetoshi Shimokawa
- set send.pay_len correctly. - copy response only if needed. - remove unnecessary 'err = 0'. Notes: svn path=/head/; revision=121466
2003-10-02MFp4: Change struct fw_xfer to reduce memory copy in fwmem_*() functions.Hidetoshi Shimokawa
And many changes. * all - Major change of struct fw_xfer. o {send,recv}.buf is splitted into hdr and payload. o Remove unnecessary fields. o spd is moved under send and recv. - Remove unnecessary 'volatile' keyword. - Add definition of rtcode and extcode. * firewire.c - Ignore FWDEVINVAL devices in fw_noderesolve_nodeid(). - Check the existance of the bind before call STAILQ_REMOVE(). - Fix bug in the fw_bindadd(). - Change element of struct fw_bind for simplicity. - Check rtcode of response packet. - Reduce split transaction timeout to 200 msec. (100msec is the default value in the spec.) - Set watchdog timer cycle to 10 Hz. - Set xfer->tv just before calling fw_get_tlabel(). * fwohci.c - Simplifies fwohci_get_plen(). * sbp.c - Fix byte order of multibyte scsi_status informations. - Split sbp.c and sbp.h. - Unit number is not necessary for FIFO¤ address. - Reduce LOGIN_DELAY and SCAN_DELAY to 1 sec. - Add some constants defineded in SBP-2 spec. * fwmem.c - Introduce fwmem_strategy() and reduce memory copy. Notes: svn path=/head/; revision=120660
2003-10-01Fix a bug in fwdev_clone().Hidetoshi Shimokawa
Spotted by: grog Notes: svn path=/head/; revision=120624
2003-08-05Change device name notation.Hidetoshi Shimokawa
- /dev/fw{,mem}X.Y represents the Y'th unit on the X'th bus. - /dev/fw{,mem}X is an alias of fw{,mem}X.0 for compatibility. - Clone devices. Notes: svn path=/head/; revision=118455
2003-08-01Clean up fwdev.Hidetoshi Shimokawa
Allocate iso DMA channel dynamically. This allows us to have more /dev/fw* than number of DMA channels for asyn. transactions and etc. Notes: svn path=/head/; revision=118293
2003-07-12Allow retrieval of local Configuration ROM.Hidetoshi Shimokawa
Notes: svn path=/head/; revision=117473
2003-04-22Set the local bus address in xfer->dst.Hidetoshi Shimokawa
Submitted by: Buzz Slye <buzz@gaia.arc.nasa.gov> Notes: svn path=/head/; revision=113832
2003-04-21Remove unused code.Hidetoshi Shimokawa
Notes: svn path=/head/; revision=113802
2003-04-17MFp4(simokawa_firewire):Hidetoshi Shimokawa
Many internal structure changes for the FireWire driver. - Compute CRC in CROM parsing. - Add support for configuration ROM build. - Simplify dummy buffer handling. - busdma conversion - Use swi_taskqueue_giant for -current. Mark the interrupt routine as MPSAFE. - AR buffer handling. Don't reallocate AR buffer but just recycle it. Don't malloc and copy per packet in fwohci_arcv(). Pass packet to fw_rcv() using iovec. Application must prepare receiving buffer in advance. - Change fw_bind API so that application should pre-allocate xfer structure. - Add fw_xfer_unload() for recycling struct fw_xfer. - Add post_busreset hook - Remove unused 'sub' and 'act_type' in struct fw_xfer. - Remove npacket from struct fw_bulkxfer. - Don't call back handlers in fwochi_arcv() if the packet has not drained in AT queue - Make firewire works on big endian platform. - Use native endian for packet header and remove unnecessary ntohX/htonX. - Remove FWXFERQ_PACKET mode. We don't use it anymore. - Remove unnecessary restriction of FWSTMAXCHUNK. - Don't set root node for phy config packet if the root node is not cycle master capable but set myself for root node. We should be the root node after next bus reset. Spotted by: Yoshihiro Tabira <tabira@scd.mei.co.jp> - Improve self id handling Tested on: i386, sparc64 and i386 with forced bounce buffer Notes: svn path=/head/; revision=113584
2003-03-06MFp4(simokawa_sbp)Hidetoshi Shimokawa
Improve if_fwe performance. - Simplify mbuf handling by using bulkxfer. Now, it uses mbuf clusters for RX buffer as usual ethernet drivers. - Recycle struct xfer buffer and don't call malloc at runtime. - Count input and output errors. - Handle a mbuf chain longer than 6 correctly. - Increase queue length. Notes: svn path=/head/; revision=111942
2003-03-03Gigacommit to improve device-driver source compatibility betweenPoul-Henning Kamp
branches: Initialize struct cdevsw using C99 sparse initializtion and remove all initializations to default values. This patch is automatically generated and has been tested by compiling LINT with all the fields in struct cdevsw in reverse order on alpha, sparc64 and i386. Approved by: re(scottl) Notes: svn path=/head/; revision=111815
2003-03-02Use canonical format for cdevsw initialization.Poul-Henning Kamp
Notes: svn path=/head/; revision=111753
2003-03-02More low-hanging fruit: kill caddr_t in calls to wakeup(9) / [mt]sleep(9).Dag-Erling Smørgrav
Notes: svn path=/head/; revision=111748
2003-02-27MFp4(simokawa_sbp branch)Hidetoshi Shimokawa
Improve SBP device probeing: - Wait 2 sec before issuing LOGIN ORB expecting the reconnection hold timer expires. - Serialize management ORB and scanning LUN by CAM on each target. This should fix the problem for devices which have multiple LUNs. Test device is donated by: Jaye Mathisen <mrcpu@internetcds.com> - Freeze SIM queue for 2 sec after BUS RESET. - Retry with LOGIN rather than RECONNECT after LOGIN is not completed for BUS RESET. - Use appropriate CAM status for BUS RESET and DEVICE RESET. - Let CAM to scan targets after BUS REST. - Implement CAM scan target function. - Keep our own devq freeze count. - Let CAM to know that SBP does tagged queuing. These should be merged to RELENG_4 before 4.8-RELEASE. Notes: svn path=/head/; revision=111615
2003-02-25Cleanup of the d_mmap_t interface.Maxime Henrion
- Get rid of the useless atop() / pmap_phys_address() detour. The device mmap handlers must now give back the physical address without atop()'ing it. - Don't borrow the physical address of the mapping in the returned int. Now we properly pass a vm_offset_t * and expect it to be filled by the mmap handler when the mapping was successful. The mmap handler must now return 0 when successful, any other value is considered as an error. Previously, returning -1 was the only way to fail. This change thus accidentally fixes some devices which were bogusly returning errno constants which would have been considered as addresses by the device pager. - Garbage collect the poorly named pmap_phys_address() now that it's no longer used. - Convert all the d_mmap_t consumers to the new API. I'm still not sure wheter we need a __FreeBSD_version bump for this, since and we didn't guarantee API/ABI stability until 5.1-RELEASE. Discussed with: alc, phk, jake Reviewed by: peter Compile-tested on: LINT (i386), GENERIC (alpha and sparc64) Runtime-tested on: i386 Notes: svn path=/head/; revision=111462
2003-02-09Add new ioctl to specify target EUI64 for fwmem.Hidetoshi Shimokawa
Notes: svn path=/head/; revision=110582
2003-02-03Remove unnecessary M_NOWAIT.Hidetoshi Shimokawa
Notes: svn path=/head/; revision=110273
2003-02-03- Take malloc type as an argument in fw_xfer_alloc().Hidetoshi Shimokawa
- Fix overwrite problem of freed buffers. It was rare but could happen when fwohci_arcv() is called before fwohci_txd() is called for the transcation. - Drain AT queues and pend AR queues on SID receive rather than BUS reset to make sure DMA actually stops. - Do agent reset in sbp_timeout(). Notes: svn path=/head/; revision=110269
2003-02-01Define new malloc type M_FW and use it.Hidetoshi Shimokawa
Notes: svn path=/head/; revision=110195