summaryrefslogtreecommitdiffstats
path: root/sys/isa
Commit message (Collapse)AuthorAgeFilesLines
* Add support for XBOX to the FreeBSD port. The xbox architecture isimp2005-11-091-0/+10
| | | | | | | | | | | | | | | | | | | | nearly identical to wintel/ia32, with a couple of tweaks. Since it is so similar to ia32, it is optionally added to a i386 kernel. This port is preliminary, but seems to work well. Further improvements will improve the interaction with syscons(4), port Linux nforce driver and future versions of the xbox. This supports the 64MB and 128MB boxes. You'll need the most recent CVS version of Cromwell (the Linux BIOS for the XBOX) to boot. Rink will be maintaining this port, and is interested in feedback. He's setup a website http://xbox-bsd.nl to report the latest developments. Any silly mistakes are my fault. Submitted by: Rink P.W. Springer rink at stack dot nl and Ed Schouten ed at fxq dot nl
* Fix an endianness issue in pnp_eisaformat(). This corrects printing PnP IDsmarius2005-09-281-1/+4
| | | | | | | | | | | | | | on big-endian archs like sparc64, e.g.: uart0: <16550 or compatible> at port 0x3f8-0x3ff irq 43 pnpid @HEd041 on isa0 is now correctly printed as: uart0: <16550 or compatible> at port 0x3f8-0x3ff irq 43 pnpid PNP0501 on isa0 There are probably other endianness issues lurking in the PnP code which however aren't exhibited on sparc64 as the PnP devices there are sort of PnP BIOS devices rather than ISA PnP devices. Tested on: i386, sparc64 MFC after: 1 week
* Add pnp and location info for the ISA bus. The pnp info is theimp2005-08-011-0/+25
| | | | | | | | primary vendor id for this device. The location is empty because ISA doesn't give one a way to generally locate a card. PNP BIOS entries do provide a way to locate cards, as do isa pnp cards. These locations will be added as soon as the code to remember them is written.
* Fixup some more fallout from the lapic/i8254 changes:jhb2005-07-131-24/+20
| | | | | | | | | | | | - Make sure timer0_max_count is set to a correct value in the lapic case. - Revert i8254_restore() to explicitly reprogram timer 0 rather than calling set_timer_freq() to do it. set_timer_freq() only reprograms the counter if the max count changes which it never does on resume. This unbreaks suspend/resume for several people. Tested by: marks, others Reviewed by: bde MFC after: 3 days
* Remove a || 1 that crept into the i8254 commit and was subsequentlyjhb2005-07-051-1/+1
| | | | | | | | | copied and pasted. I had actually tested without this change in my trees as had the other testers. Reported by: bde, Rostislav Krasny rosti dot bsd at gmail dot com Approved by: re (scottl) Pointy hat to: jhb
* Use a simpler implementation for the i8254 timecounter when using the lapicjhb2005-07-011-12/+35
| | | | | | | | | | timer since irq0 isn't being driven at hz in that case and we don't need to try to handle edge cases with rollover, etc. that require irq0 to be firing for the timecounter to actually work. Submitted by: phk Tested by: schweikh Approved by: re (scottl)
* - Hook up the new locations of the atkbdc(4), atkbd(4) and psm(4) sourcemarius2005-06-103-4203/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | files after they were repo-copied to sys/dev/atkbdc. The sources of atkbdc(4) and its children were moved to the new location in preparation for adding an EBus front-end to atkbdc(4) for use on sparc64; i.e. in order to not further scatter them over the whole tree which would have been the result of adding atkbdc_ebus.c in e.g. sys/sparc64/ebus. Another reason for the repo-copies was that some of the sources were misfiled, e.g. sys/isa/atkbd_isa.c wasn't ISA-specific at all but for hanging atkbd(4) off of atkbdc(4) and was renamed to atkbd_atkbdc.c accordingly. Most of sys/isa/psm.c, i.e. expect for its PSMC PNP part, also isn't ISA-specific. - Separate the parts of atkbdc_isa.c which aren't actually ISA-specific but are shareable between different atkbdc(4) bus front-ends into atkbdc_subr.c (repo-copied from atkbdc_isa.c). While here use bus_generic_rl_alloc_resource() and bus_generic_rl_release_resource() respectively in atkbdc_isa.c instead of rolling own versions. - Add sparc64 MD bits to atkbdc(4) and atkbd(4) and an EBus front-end for atkbdc(4). PS/2 controllers and input devices are used on a couple of Sun OEM boards and occur on either the EBus or the ISA bus. Depending on the board it's either the only on-board mean to connect a keyboard and mouse or an alternative to either RS232 or USB devices. - Wrap the PSMC PNP part of psm.c in #ifdef DEV_ISA so it can be compiled without isa(4) (e.g. for EBus-only machines). This ISA-specific part isn't separated into its own source file, yet, as it requires more work than was feasible for 6.0 in order to do it in a clean way. Actually philip@ is working on a rewrite of psm(4) so a more comprehensive clean-up and separation of hardware dependent and independent parts is expected to happen after 6.0. Tested on: i386, sparc64 (AX1105, AXe and AXi boards) Reviewed by: philip
* Remove bus_{mem,p}io.h and related code for a micro-optimization on i386nyan2005-05-291-2/+0
| | | | | | and amd64. The optimization is a trivial on recent machines. Reviewed by: -arch (imp, marcel, dfr)
* - Move bus dependent defines to {isa,cbus}_dmareg.h.nyan2005-05-142-5/+56
| | | | | | - Use isa/isareg.h rather than <arch>/isa/isa.h. Tested on: i386, pc98
* - Move timerreg.h to <arch>/include and split i8253 specific defines intonyan2005-05-143-23/+15
| | | | | | | | | i8253reg.h, and add some defines to control a speaker. - Move PPI related defines from i386/isa/spkr.c into ppireg.h and use them. - Move IO_{PPI,TIMER} defines into ppireg.h and timerreg.h respectively. - Use isa/isareg.h rather than <arch>/isa/isa.h. Tested on: i386, pc98
* Remove unused IO_NPX* defines.nyan2005-05-121-2/+0
|
* Add ISACFGATTR_HINTS flag to allow detection of a device that was createdmdodd2005-04-132-0/+3
| | | | as a result of the hints mechanism.
* Replace spl protection in rtcin() and writertc() with spinlocksmdodd2005-04-121-6/+6
| | | | using the existing clock_lock mutex.
* - Don't enable periodic interrupts from the RTC by default in rtc_statusb.jhb2005-03-241-22/+26
| | | | | | | | Instead, explicitly enable them when we setup the interrupt handler. Also, move the setting of stathz and profhz down to the same place so that the code flow is simpler and easier to follow. - Don't setup an interrupt handler for IRQ0 if we are using the lapic timer as it doesn't do anything productive in that case.
* Use STAILQ in preference to SLIST for the resources. Insert new resourcesimp2005-03-181-5/+5
| | | | | | | | | last in the list rather than first. This makes the resouces print in the 4.x order rather than the 5.x order (eg fdc0 at 0x3f0-0x3f5,0x3f7 is 4.x, but 0x3f7,0x3f0-0x3f5 is 5.x). This also means that the pci code will once again print the resources in BAR ascending order.
* Whitespace sync with amd64. (Rather than re-add the extra blank linespeter2005-03-111-3/+0
| | | | on amd64, I'm removing them here)
* - Remove the BURN_BRIDGES marked support for hooking into the ISA timer 0jhb2005-03-091-144/+2
| | | | | | | | interrupt. - Remove the timer_func variable as it now has a static value of hardclock() and is only used in one place. Axe borrowed from: phk
* Save and restore the VGA state across a suspend-resume cycle. Thisiedowse2005-02-281-0/+55
| | | | | | | | is particularly useful when VESA is available (either `options VESA' or load the vesa module), as BIOSes in some notebooks may correctly save and restore LCD panel settings using VESA in cases where calling the video BIOS POST is not effective. On some systems it may also be necessary to set the hw.acpi.reset_video sysctl to 0.
* Use dynamic major number allocation.phk2005-02-271-1/+0
|
* Use the local APIC timer to drive the various kernel clocks on SMP machinesjhb2005-02-081-19/+19
| | | | | | | | | | | | | | | | | | | | | | | rather than forwarding interrupts from the clock devices around using IPIs: - Add an IDT vector that pushes a clock frame and calls lapic_handle_timer(). - Add functions to program the local APIC timer including setting the divisor, and setting up the timer to either down a periodic countdown or one-shot countdown. - Add a lapic_setup_clock() function that the BSP calls from cpu_init_clocks() to setup the local APIC timer if it is going to be used. The setup uses a one-shot countdown to calibrate the timer. We then program the timer on each CPU to fire at a frequency of hz * 3. stathz is defined as freq / 23 (hz * 3 / 23), and profhz is defined as freq / 2 (hz * 3 / 2). This gives the clocks relatively prime divisors while keeping a low LCM for the frequency of the clock interrupts. Thanks to Peter Jeremy for suggesting this approach. - Remove the hardclock and statclock forwarding code including the two associated IPIs. The bitmap IPI handler has now effectively degenerated to just IPI_AST. - When the local APIC timer is used we don't turn the RTC on at all, but we still enable interrupts on the ISA timer 0 (i8254) for timecounting purposes.
* Since we are quite unlikely to ever face another platform whichphk2005-02-061-8/+9
| | | | | | | | | uses the i8237 without trying to emulate the PC architecture move the register definitions for the i8237 chip into the central include file for the chip, except for the PC98 case which is magic. Add new isa_dmatc() function which tells us as cheaply as possible if the terminal count has been reached for a given channel.
* Anytime we write to the RTC's status B register to possibly enablejhb2005-02-031-0/+3
| | | | | | | | | | | interrupts, read from the interrupt status register to clear any pending interrupts. Otherwise in some rare cases the RTC would never fire any interrupts as it constantly thinks it has an interrupt pending. PR: i386/17800 PR: kern/76776 Submitted by: Jose M. Alcaide jose at we dot lc dot ehu dot es MFC after: 2 weeks
* Protect against wrapping. This appaers to fix some hangs that peopleimp2005-01-231-1/+1
| | | | | | | | | have seen in the isa pnp case where a resource buts up against 0xffffffff. This would only impact when the board was booted without ACPI. Submitted by: Ed Maste (freebsd-stable <20050103145720.GA90754@sandvine.com>) MFC After: 5 days
* Make life for owners of Synaptics Touchpads more pleasant :-)philip2005-01-101-11/+207
| | | | | | | | | | | | | | | | | | | | | | | | | o Implement a shiny new algorithm to keep track of finger movement at slow speeds. This dramatically reduces the level of questionable language from users trying to resize windows. o Properly catch the many extra buttons and dials which manufacturers are known to screw onto Synaptics touchpad controllers. Currently, up to seven buttons are known to work, more should work too. o Add a number of sysctls allowing one to tune the driver to taste in a simple way: # Should the extra buttons act as axes or as middle button hw.psm.synaptics.directional_scrolls # These control the 'stickiness' at low speeds hw.psm.synaptics.low_speed_threshold hw.psm.synaptics.min_movement hw.psm.synaptics.squelch_level PR: kern/75725 Submitted by: Jason Kuri <jay@oneway.com> MFC after: 1 month
* /* -> /*- for copyright notices, minor format tweaks as necessaryimp2005-01-062-2/+2
|
* Reduce diffs to work in progress before checking in serious changes.philip2005-01-031-19/+20
| | | | | | | | | | | | | | | | o Move the sysctls under debug.psm.* and hw.psm.* making them a bit clearer and more consistent with other drivers. o Remove the debug.psm_soft_timeout sysctl. It was introduced many moons ago in r1.64 but never referenced anywhere. o Introduce hw.psm.tap_threshold and hw.psm.tap_timeout to control the behaviour of taps on touchpads. People might like to fiddle with these if tapping seems to slow or too fast for them. o Add debug.psm.loglevel as a tunable so that verbosity can be set easily at boot-time (to watch probes and such) without having to compile a kernel with options PSM_DEBUG=N.
* Formatting nitsimp2004-12-271-6/+6
|
* Get rid of #ifdef for legacy system. Move that into the MD code.imp2004-12-242-6/+7
| | | | Export minimal symbols to allow this to happen.
* A few style(9) changes before more extensive changes:imp2004-12-242-74/+65
| | | | | | | o u_intXX_t -> uintXX_t o use 8 character tabs o proper wrapping o return (value);
* Make the other pnp messages more explicit as well...imp2004-12-241-1/+1
|
* Note when we're done probing PNP. There's been several reports over theimp2004-12-241-0/+2
| | | | | years of hangs that turned out to be in the PNP code. Add an explicit end marker so such hangs are more apparent.
* Various style(9) items before of some more extensive work:imp2004-12-242-67/+64
| | | | | | | | o return (value); o u_intXX_t -> uintXX_t o break lines o consistantly use 8 space tab stops o minor grammar nits in a few printfs
* GC #if 0'd code. It can go away now...imp2004-12-242-99/+0
|
* PNP BIOS devices are fundamentally different than ISA PNP devices.imp2004-12-071-8/+9
| | | | | | | These devices should be probed first because they are at fixed locations and cannot be turned off. ISA PNP devices, on the other hand, can be turned off and often can be flexible in the resources they use. Probe them last, as always.
* Stop printing the VGA registers during verbose boot, in order to notphk2004-11-031-1/+1
| | | | | needlessly overflow the msgbuffer. Can be reenabled if somebody ever takes an interest in syscons again.
* Remove local hacks to set flags now that the device probe does this for us.njl2004-10-142-6/+1
| | | | | | | Tested on every device except sio_pci and the pc98 fd.c. Perhaps something similar should be done for the "disabled" hints also. MFC after: 2 weeks
* Introduce a tunable to disable support for Synaptics touchpads. A number ofphilip2004-09-291-1/+11
| | | | | | | | | | | people have reported problems (stickyness, aiming difficulty) which is proving difficult to fix, so this will default to disable until sometime after 5.3R. To enable Synaptics support, set the 'hw.psm.synaptics_support=1' tunable. MT5 candidate. Approved by: njl
* Converge towards i386. I originally resisted creating <machine/pc/bios.h>peter2004-09-241-8/+7
| | | | | | | | | | | | because it was mostly irrelevant - except for the silly BIOS_PADDRTOVADDR etc macros. Along the way of working around this, I missed a few things. * Make syscons properly inherit the bios capslock/shiftlock/etc state like i386 does. Note that we cannot inherit the bios key repeat rate because that requires a bios call (which is impossible for us). * Give syscons the ability to beep on amd64. Oops. While here, make bios.c compile and add it to files.amd64.
* Add new a function isa_dma_init() which returns an errno when it failsphk2004-09-151-1/+7
| | | | | | | | | and which takes a M_WAITOK/M_NOWAIT flag argument. Add compatibility isa_dmainit() macro which whines loudly if isa_dma_init() fails. Problem uncovered by: tegge
* Improve sync recovery algorithm:gibbs2004-08-271-97/+119
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o Remove PSM_SYNCERR_THRESHOLD1. This value specified how many sync errors were required before the mouse is re-initialised. Re-initialisation is now done after (packetsize * 2) sync errors as things aren't likely to improve after that. o Reset lastinputerror when re-initialisation occurs. We don't want to continue to drop data after re-initialisation. o Count the number of failed packets independently of the syncerrors statistic. syncerrors is useful for recovering sync within a single packet. pkterrors allows us to detect when the mouse changes its packet mode due to some external event (e.g. KVM switch). o Reinitialize the mouse if we see more than psmpkterrthresh errors during the validation period. The validation period begins as soon as a sync error is detected and continues until psmerrsecs/msecs time has elapsed. The defaults for these two values force a reset if we see two packet errors in a 2 second period. This allows rapid detection of packet framing errors caused by the mouse changing packet modes. o Export psmpkterrthresh as a sysctl o Export psmloglevel as a sysctl. o Enable more debugging code to be enabled at runtime via psmloglevel. o Simplify verbose conditioned loging by using a VLOG macro. o Add several comments describing the sync recovery algorithm of this driver. Large Portions by: Brian Somers <brian@Awfulhak.org> Inspired and Frustrated by: Belkin KVMs Reviewed by: njl, philip
* Defer the capture of the "expected sync bits" until the first "normal"gibbs2004-08-171-20/+13
| | | | | | | | | | data packet is received from the mouse. In the case of many KVM's, this avoids a bug in their mouse emulation that sends back incorrect sync when you explicitly request a data packet from the mouse. Without this change, you must force the driver into stock PS/2 mode or be flooded with a never ending stream of "out of sync" messages on these KVMs. Approved by: re
* Don't initialize static variables to 0 (C should just take care of that).philip2004-08-161-2/+2
| | | | Spotted by: njl
* Update support for Synaptics Touchpads (Volume V)philip2004-08-161-5/+29
| | | | | | | o Add (long awaited) support for guest devices Submitted by: Arne Schwabe <arne@rfc2549.org> Approved by: njl (in a former revision)
* Assume a finger of regular width when no width value is reported byphilip2004-08-081-3/+10
| | | | | | | the touchpad (which happens when it has no extended capabilities). Spotted by: dhw Forgotten by: philip
* Update support for Synaptics Touchpads (Volume IV)philip2004-08-081-2/+2
| | | | | | | | | | | | o Change the motion calculation to result in a more reasonable speed of motion This should fix the 'aiming' problems people have reported. It also mitigates (but doesn't completely solve) the 'stalling' problems at very low speeds. Tested by: many subscribers to -current Approved by: njl
* Update support for Synaptics Touchpads (Volume III)philip2004-08-081-0/+26
| | | | | | | | | | o Catch 'taps' as button presses o One finger sends button1, two fingers send button3, three fingers send button2 (double-click) Tested by: many subscribers to -current Approved by: njl
* Update support for Synaptics Touchpads (Volume II)philip2004-08-081-5/+26
| | | | | | | | | | | | | | o Handle the 'up/down' buttons some touchpads have as a z-axis (scrollwheel) as recommended by the specs o Report the buttons as button4 and button5 instead of button2 and button4, button2 can be emulated by pressing button1 and button3 simultaneously. This allows one to use the two extra buttons for other purposes if one so desires. Tested by: many subscribers to -current Approved by: njl
* Update support for Synaptics Touchpads (Volume I)philip2004-08-081-53/+64
| | | | | | | | | | | | | | | o Clean up whitespace and comments in the enable_synaptics() probing function o Only use (and rely on) the extended capability bits when we are told they actually exist o Partly ignore the (possibly dated?) part of the specification about the mode byte so that we can support 'guest devices' too. Tested by: many subscribers to -current Approved by: njl
* Add support for the Synaptics Touchpad mouse driver. I reworked thenjl2004-07-301-1/+213
| | | | | | | | | submitted version with style cleanups and changes to comments. I also modified the ioctl interface. This version only has one ioctl (to get the Synaptics-specific config parameters) since this is the only information a user might want. Submitted by: Arne Schwabe <arne -at- rfc2549.org>
* Ignore more strange return values of the test_aux_port() function,mux2004-07-161-6/+10
| | | | | | | | | | because some notebooks (apparently Compaq, Toshiba and Acer ones) erroneously return 2 or 3 there. PR: kern/61482, kern/54188 Submitted by: Ulf Lilleengen <lulf@kerneled.org>, Victor Balada Diaz <victor@alf.dyndns.ws> MFC after: 3 days
OpenPOWER on IntegriCloud