aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/uart
Commit message (Collapse)AuthorAgeFilesLines
* MFC 1.12: Make the Z8530 more reliable as low-level console.Marcel Moolenaar2005-05-011-3/+3
| | | | | | | Approved by: re (kensmith) Notes: svn path=/releng/5.4/; revision=145735
* MFC: 1.13Marius Strobl2005-03-311-2/+8
| | | | | | | | | | | | | | - Allocate the interrupt resource as RF_SHAREABLE allowing uart(4) to work with shared IRQs in case the bus code, MD interrupt code, etc. permits. Together with sys/sparc64/sparc64/intr_machdep.c rev. 1.21 (MFC'ed in rev. 1.19.2.1) this fixes an endless loop in uart_intr() when using the second NS16550 on the ISA bus of sparc64 machines. - Destroy the hardware mutex on detach and in case attaching fails. Approved by: re (kensmith, scottl) Notes: svn path=/stable/5/; revision=144435
* MFC of Rev 1.18: Fix for problem with Sparc machines like the SunBlade-100Ken Smith2005-03-171-4/+6
| | | | | | | | | | that have USB keyboards. See commit log for 1.18 for full details. Work done by: marius Approved by: re (scottl) Notes: svn path=/stable/5/; revision=143749
* MFC: 1.15Marius Strobl2005-02-121-7/+33
| | | | | | | | | | | | - Don't blindly use the return value of uart_cpu_channel() to calculate the address of a channel on a SCC, it returns 0 on failure. - Hardcode channel 1 for the keyboard on Z8530, the information present in the Open Firmware device tree doesn't allow to determine this via uart_cpu_channel(). This makes the keyboard on Ultra 2 basically work. - Add and improve comments about uart_cpu_channel() and uart_cpu_getdev_*(). Notes: svn path=/stable/5/; revision=141735
* MFC rev. 1.3:Marcel Moolenaar2005-02-091-2/+13
| | | | | | | Add the keyboard system device before we probe for the keyboard. Notes: svn path=/stable/5/; revision=141555
* MFC rev 1.10: Fix a logic bug that caused DSR to never be deasserted.Marcel Moolenaar2005-02-041-2/+2
| | | | Notes: svn path=/stable/5/; revision=141235
* MFC rev 1.11: Fix the various interrupt related problems.Marcel Moolenaar2005-02-041-31/+69
| | | | Notes: svn path=/stable/5/; revision=141234
* Bring back a line that was accidentally lost in previous commit.Marcel Moolenaar2005-01-301-0/+1
| | | | Notes: svn path=/stable/5/; revision=141027
* MFC: /*- and my license changes for sys/[a-d]*Warner Losh2005-01-3022-22/+22
| | | | Notes: svn path=/stable/5/; revision=141016
* MFC rev 1.11+1.12:Marcel Moolenaar2004-11-201-1/+15
| | | | | | | Implement UART_IOCTL_BAUD. Notes: svn path=/stable/5/; revision=137932
* MFC uart_bus.h:1.8, uart_core.c:1.11Marcel Moolenaar2004-11-202-0/+6
| | | | | | | | Add UART_IOCTL_BAUD to allow us to query the hardware about the current baudrate setting. Notes: svn path=/stable/5/; revision=137931
* MFC rev. 1.3:Marcel Moolenaar2004-11-201-0/+20
| | | | | | | Make sure the baudrate specified with the BR tag is somewhat sane. Notes: svn path=/stable/5/; revision=137930
* MFC: 1.4Marius Strobl2004-09-241-4/+3
| | | | | | | | | Don't call uart_bus_probe() for non-matching PnP-devices. Approved by: re (scottl) Notes: svn path=/stable/5/; revision=135776
* Fix a style(9) bug (variable definitions inside a nested scope) a patchMarius Strobl2004-08-151-4/+2
| | | | | | | | | | of mine introduced in revision 1.10. Approved by: marcel Prodded by: marcel Notes: svn path=/head/; revision=133738
* - Introduce an uart_cpu_identify() which is implemented in uart_cpu_<arch>.cMarius Strobl2004-08-148-0/+79
| | | | | | | | | | | | | | | | | | | | and that can be used as an identify function for all kinds of busses on a certain platform. Expect for sparc64 these are only stubs right now. [1] - For sparc64, add code to its uart_cpu_identify() for registering the on- board ISA UARTs and their resources based on information obtained from Open Firmware. It would be better if this would be done in the OFW ISA code. However, due to the common FreeBSD ISA code and PNP-IDs not always being present in the properties of the ISA nodes there seems to be no good way to implement that. Therefore special casing UARTs as the sole really relevant ISA devices on sparc64 seemed reasonable. [2] Approved by: marcel Discussed with: marcel [1], tmm [2] Tested by: make universe Notes: svn path=/head/; revision=133735
* - Introduce an ofw_bus kobj-interface for retrieving the OFW node and aMarius Strobl2004-08-121-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | subset ("compatible", "device_type", "model" and "name") of the standard properties in drivers for devices on Open Firmware supported busses. The standard properties "reg", "interrupts" und "address" are not covered by this interface because they are only of interest in the respective bridge code. There's a remaining standard property "status" which is unclear how to support properly but which also isn't used in FreeBSD at present. This ofw_bus kobj-interface allows to replace the various (ebus_get_node(), ofw_pci_get_node(), etc.) and partially inconsistent (central_get_type() vs. sbus_get_device_type(), etc.) existing IVAR ones with a common one. This in turn allows to simplify and remove code-duplication in drivers for devices that can hang off of more than one OFW supported bus. - Convert the sparc64 Central, EBus, FHC, PCI and SBus bus drivers and the drivers for their children to use the ofw_bus kobj-interface. The IVAR- interfaces of the Central, EBus and FHC are entirely replaced by this. The PCI bus driver used its own kobj-interface and now also uses the ofw_bus one. The IVARs special to the SBus, e.g. for retrieving the burst size, remain. Beware: this causes an ABI-breakage for modules of drivers which used the IVAR-interfaces, i.e. esp(4), hme(4), isp(4) and uart(4), which need to be recompiled. The style-inconsistencies introduced in some of the bus drivers will be fixed by tmm@ in a generic clean-up of the respective drivers later (he requested to add the changes in the "new" style). - Convert the powerpc MacIO bus driver and the drivers for its children to use the ofw_bus kobj-interface. This invloves removing the IVARs related to the "reg" property which were unused and a leftover from the NetBSD origini of the code. There's no ABI-breakage caused by this because none of these driver are currently built as modules. There are other powerpc bus drivers which can be converted to the ofw_bus kobj-interface, e.g. the PCI bus driver, which should be done together with converting powerpc to use the OFW PCI code from sparc64. - Make the SBus and FHC front-end of zs(4) and the sparc64 eeprom(4) take advantage of the ofw_bus kobj-interface and simplify them a bit. Reviewed by: grehan, tmm Approved by: re (scottl) Discussed with: tmm Tested with: Sun AX1105, AXe, Ultra 2, Ultra 60; PPC cross-build on i386 Notes: svn path=/head/; revision=133589
* Do not use hardware flow control for the moment. There are some issuesMarcel Moolenaar2004-08-061-0/+8
| | | | | | | | | | with it that need to be understood better before they can be resolved. This takes time and time is already in short supply. Reported & tested by: glebius@ Notes: svn path=/head/; revision=133220
* When sizing the FIFO, don't count all the way up to 1030 if any FIFOMarcel Moolenaar2004-07-261-1/+1
| | | | | | | | size larger than 128 is considered an incompatible size. Stop counting when we reach 130 in the loop. Notes: svn path=/head/; revision=132650
* Preparation commit for the tty cleanups that will follow in the nearPoul-Henning Kamp2004-07-151-2/+2
| | | | | | | | | | | | future: rename ttyopen() -> tty_open() and ttyclose() -> tty_close(). We need the ttyopen() and ttyclose() for the new generic cdevsw functions for tty devices in order to have consistent naming. Notes: svn path=/head/; revision=132226
* Update for the KDB framework:Marcel Moolenaar2004-07-101-8/+6
| | | | | | | | | o Call kdb_enter() instead of breakpoint(). o Call kdb_alt_break() instead of db_alt_break(). o Make debugging code conditional upon KDB instead of DDB. Notes: svn path=/head/; revision=131921
* Add support for uart(4) being a debug port for the GDB backend.Marcel Moolenaar2004-07-101-0/+101
| | | | Notes: svn path=/head/; revision=131901
* Define the tty methods as typedefs.Poul-Henning Kamp2004-06-301-2/+1
| | | | | | | | | Change the return type for t_break to void. Add t_ioctl (more about this later). Notes: svn path=/head/; revision=131373
* Use generic support for BREAK and modem control ioctls.Poul-Henning Kamp2004-06-251-65/+27
| | | | Notes: svn path=/head/; revision=131095
* Use the new serial port definitions for modemsignals.Poul-Henning Kamp2004-06-246-105/+92
| | | | Notes: svn path=/head/; revision=131043
* save a few redundant lines by moving the retry loop further backwards.Poul-Henning Kamp2004-06-231-7/+1
| | | | Notes: svn path=/head/; revision=130969
* Do the dreaded s/dev_t/struct cdev */Poul-Henning Kamp2004-06-162-4/+4
| | | | | | | Bump __FreeBSD_version accordingly. Notes: svn path=/head/; revision=130585
* Machine generated patch which changes linedisc calls from accessingPoul-Henning Kamp2004-06-041-8/+8
| | | | | | | | | linesw[] directly to using the ttyld...() functions The ttyld...() functions ar inline so there is no performance hit. Notes: svn path=/head/; revision=130077
* Make the remaining serial drivers call ttyioctl() rather than callingPoul-Henning Kamp2004-06-041-5/+2
| | | | | | | the linedisc directly. Notes: svn path=/head/; revision=130057
* Add missing <sys/module.h> includes currently relying on nested includePoul-Henning Kamp2004-06-031-0/+1
| | | | | | | in <sys/kernel.h> Notes: svn path=/head/; revision=130026
* Fix disordering of pccarddevs.h noticed by bde. Also remove a fewWarner Losh2004-05-271-2/+2
| | | | | | | | | redundant includes and fix some of the include disordering. Submitted by: bde Notes: svn path=/head/; revision=129764
* It seems that clearing the MCR_IE bit in the modem control registerThomas Moestl2004-05-261-22/+23
| | | | | | | | | | | | | | | | | | | | does not reliably prevent the triggering of interrupts for all supported configurations. Thus, the FIFO size probe could cause an interrupt, which could lead to an interrupt storm in the shared interrupt case. To prevent this, change ns8250_bus_probe() to use the overflow bit in the line status register instead of the RX ready bit in the interrupt identification register to detect whether the FIFO has filled up. This allows us to clear all bits in the interrupt enable register during the probe, which should prevent interrupts reliably. Additionally, the detected FIFO size may be a bit more accurate, because the overflow bit is only set when the FIFO did actually fill up, while interrupts would trigger a bit early. Reviewed and tested on a lot of hardware by: marcel Notes: svn path=/head/; revision=129757
* Move to generating pccarddevs.h on the fly, both for the kernel andWarner Losh2004-05-261-1/+1
| | | | | | | | | | the modules. Also generate usbdevs.h automatically now, but a non-kernel file is stopping that at the moment. Notes: svn path=/head/; revision=129740
* - Initialize uart_bus_space_io and uart_bus_space_mem.Yoshihiro Takahashi2004-05-161-7/+7
| | | | | | | - Fix wrong comment. Notes: svn path=/head/; revision=129276
* Fix hangs caused by z8530_bus_ipend() returning UART_IPEND_TXIDLEMarcel Moolenaar2004-05-041-1/+7
| | | | | | | | | | | | | | | | | | | | | not as a pending interrupt status, but as a matter of status quo. Consequently, when there's no data to be transmitted the condition is not cleared and uart_intr() is stuck in an infinite loop trying to clear the UART_IPEND_TXIDLE status. The z8530_bus_ipend() function is changed to return idle only once after having sent any data. The root cause for this problem is that we cannot use the interrupt status bits of the SCC itself. The register that holds the interrupt status can only be accessed by channel A and holds the status for both channels. Using the interrupt status register would complicate the driver because we need to synchronize access to the SCC between the channels. Elementary testing: marius Notes: svn path=/head/; revision=128911
* When the interrupt cannot be INTR_FAST, it still is INTR_MPSAFE.Marcel Moolenaar2004-05-041-2/+2
| | | | | | | Mark it as such. Notes: svn path=/head/; revision=128909
* Don't mask TCD in IMR0 when we initialize the channel. Doing so makesMarcel Moolenaar2004-04-251-1/+1
| | | | | | | | it impossible to check the interrupt status bit when we try to get a character in the low level console code. Notes: svn path=/head/; revision=128631
* To quote submitter:Marcel Moolenaar2004-04-041-8/+24
| | | | | | | | | | | | | | | | | | "... uart_cpu_sparc64.c currently only looks at /options if ttyX is the selected console. However, there's one case where it should additionally look at /chosen. If "keyboard" is the selected input- device and "screen" the output-device (both via /options) but the keyboard is unplugged, OF automatically switches to ttya for the console. It even prints a line telling so on "screen". Solaris respects this behaviour and uses ttya as the console in this case and people probably expect FreeBSD to do the same (it's also very handy to temporarily switch consoles)..." Submitted by: Marius Strobl <marius@alchemy.franken.de> Has no doubt the change is correct: marcel Notes: svn path=/head/; revision=127825
* In uart_ebus_probe(), match "su_pnp" besides "su" for ns8250 familyMarcel Moolenaar2004-04-031-2/+4
| | | | | | | | | | | of UARTs. We already did this in uart_cpu_getdev(). While here, also check the compat name for "su" or "su16550". Both changes submitted by: Marius Strobl <marius@alchemy.franken.de> Does not doubt the correctness of the second change: marcel Notes: svn path=/head/; revision=127817
* In ns8250_putc() insert a barrier between writing the character andMarcel Moolenaar2004-04-021-0/+1
| | | | | | | checking for transmitter empty. Notes: svn path=/head/; revision=127742
* Allow the selection of a debug port with hw.uart.dbgport. UnlikeMarcel Moolenaar2004-04-021-46/+84
| | | | | | | | other architectures (like ia64), the variable has to be set to an OpenFirmware device name. Notes: svn path=/head/; revision=127741
* Call kbd_attach() only when KBD_INSTALL_CDEV is enabled as the functionMarcel Moolenaar2004-04-021-0/+2
| | | | | | | is only defined in that case. Notes: svn path=/head/; revision=127740
* Fix braino in previous commit: getenv() can return NULL.Marcel Moolenaar2004-03-201-0/+2
| | | | Notes: svn path=/head/; revision=127226
* Introduce the hw.uart.console and hw.uart.dbgport environment variablesMarcel Moolenaar2004-03-208-57/+304
| | | | | | | | | | | | | | | | | | | | | | | | | | | | to select a serial console and debug port (resp). On ia64 these replace the use of hints completely and take precedence over hints on alpha, amd64 and i386. On sparc64 these variables are not yet recognised. The reasons for introducing these variables are: 1. Hints have side-effects. They reserve the unit number for use by isa or acpi devices and therefore cannot be used to select a pci device. Also, the use of a unit number to select a device prior to bus enumeration is nonsense. The new variables have no side- effects and are not based on unit numbers. 2. Hints don't have the expression power to allow the sysadmin to select UARTs that are not legacy PC devices and need the support of compile-time constants to give the sysadmin some level of flexibility. The hw.uart.console and hw.uart.dbgport variables specify a list of attributes. An attribute is a tag-value pair, seperated by a colon. Attributes are seperated by a comma. Where possible, tags are the same as those in /etc/remote (only br and pa in practice). Details can be found in the manpage (not part of this commit). Not tested on: amd64, pc98 Notes: svn path=/head/; revision=127215
* Convert callers to the new bus_alloc_resource_any(9) API.Nate Lawson2004-03-171-2/+2
| | | | | | | | Submitted by: Mark Santcroos <marks@ripe.net> Reviewed by: imp, dfr, bde Notes: svn path=/head/; revision=127135
* Device megapatch 4/6:Poul-Henning Kamp2004-02-211-1/+2
| | | | | | | | | | | 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
* Device megapatch 3/6:Poul-Henning Kamp2004-02-211-4/+0
| | | | | | | | | | | | | | | Add missing D_TTY flags to various drivers. Complete asserts that dev_t's passed to ttyread(), ttywrite(), ttypoll() and ttykqwrite() have (d_flags & D_TTY) and a struct tty pointer. Make ttyread(), ttywrite(), ttypoll() and ttykqwrite() the default cdevsw methods for D_TTY drivers and remove the explicit initializations in various drivers cdevsw structures. Notes: svn path=/head/; revision=126078
* Use standard style for cdevsw initializtionPoul-Henning Kamp2004-02-141-9/+9
| | | | Notes: svn path=/head/; revision=125809
* Test the return value of UART_PARAM(). Invalid line parameters did notMarcel Moolenaar2004-02-141-1/+2
| | | | | | | | | | result in an error before. PR: kern/60284 Submitted by: Thomas Sandford <freebsduser@paradisegreen.co.uk> Notes: svn path=/head/; revision=125797
* Sometimes cardbus attachments don't attach, so while we track downWarner Losh2003-11-281-0/+1
| | | | | | | | | | | this problem put these lines back in. While they should be unnecessary, they appear to be sometimes necessary. Reviewed in concept: dfr Approved by: re (scottl@) Notes: svn path=/head/; revision=123019
* Add a uart attachment/syscons keyboard driver for sun keyboards. In theoryJake Burkholder2003-11-113-0/+738
| | | | | | | | this will work with any uart backend, currently supported hardware uses either ns8250 or z8530. Notes: svn path=/head/; revision=122470