Commit Graph

199 Commits

Author SHA1 Message Date
gehenna 77a6b82b27 Merge the gehenna-devsw branch into the trunk.
This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

	device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
  by using this grammer.

- Added the new naming convention.
  The name of the device switch must be <prefix>_[bc]devsw for auto-generation
  of device switch tables.

- The backward compatibility of loading block/character device
  switch by LKM framework is broken. This is necessary to convert
  from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
  We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
  the LKM framework will refer it to assign device major number dynamically.
2002-09-06 13:18:43 +00:00
simonb 21ffe19c1b Don't name parameters in a function declaration. 2002-07-29 05:57:16 +00:00
simonb b8f11b739f ANSIfy, KNF. 2002-07-29 05:54:09 +00:00
christos db29511727 PR/16058: Tero Kivinen: Don't free rbuf or detach tty if rbuf allocation
failed during attach phase.
2002-04-13 17:05:16 +00:00
thorpej ff7306cf44 * Add a new hwflag, COM_HW_NO_TXPRELOAD, which tells comstart() to
not pre-load the chip's Tx buffer, but instead waits for the Tx Ready
  interrupt to transmit the first chunk of data.
* On the IOP310, set COM_HW_NO_TXPRELOAD, rather than COM_HW_TXFIFO_DISABLE.

This solves the "UART hangs" problem on the Npwr in a nicer way (i.e. we
get to use the FIFO, whee).  The COM_HW_NO_TXPRELOAD happens to match the
Linux 16550 driver's Tx algorithm, and the "UART hang" was never observed
on the Npwr running Linux.

Eventually, we might want to eliminate the COM_HW_NO_TXPRELOAD, and simply
always use its algorithm.  But it should be tested on more 16x50 variants
before we do that.

Kudos to Valeriy Ushakov <uwe@netbsd.org> for pointing out this solution
(which also happens to fix the stray UART interrupt issue on the Krups
Javastation), and to Allen Briggs <briggs@netbsd.org> for experimenting
with various methods of fixing this.
2002-04-12 19:32:30 +00:00
atatat 31144d9976 Convert ioctl code to use EPASSTHROUGH instead of -1 or ENOTTY for
indicating an unhandled "command".  ERESTART is -1, which can lead to
confusion.  ERESTART has been moved to -3 and EPASSTHROUGH has been
placed at -4.  No ioctl code should now return -1 anywhere.  The
ioctl() system call is now properly restartable.
2002-03-17 19:40:26 +00:00
lukem 99bccc3cab - pull in opt_kgdb.h where necessary
- replace opt_kgdb_machdep.h with opt_kgdb.h
- defparam opt_kgdb.h:
	KGDB_DEV KGDB_DEVNAME KGDB_DEVADDR KGDB_DEVRATE KGDB_DEVMODE
- move from opt_ddbparam.h to opt_ddb.h:
	DDB_FROMCONSOLE DDB_ONPANIC DDB_HISTORY_SIZE DDB_BREAK_CHAR SYMTAB_SPACE
- replace KGDBDEV with KGDB_DEV
- replace KGDBADDR with KGDB_DEVADDR
- replace KGDBMODE with KGDB_DEVMODE
- replace KGDBRATE with KGDB_DEVRATE
- use `9600' instead of `0x2580' for 9600 baud rate
- use correct quotes for  options KGDB_DEVNAME="\"com\""
- use correct quotes for  options KGDB_DEV="17*256+0"
- remove unnecessary dependancy on Makefile for kgdb_stub.o
- minor whitespace cleanup
2001-11-20 08:43:19 +00:00
lukem 2565646230 don't need <sys/types.h> when including <sys/param.h> 2001-11-15 09:47:59 +00:00
lukem a4bae8b066 add/cleanup RCSID 2001-11-13 13:14:31 +00:00
fvdl 7812d678d8 Initialize the cn_magic goo for kgdb (bah, that should really not
be necessary).
2001-11-05 21:39:24 +00:00
briggs 5301d28a1c Patch to handle odd behavior from exar ST16C1550 UART. It does not set
IIR_NOPEND if the TXRDY condition is true.  Apparently, other chips do
not take TXRDY into account in the IIR_NOPEND case.

Also remove useless assignment (iir = IIR_NOPEND;) in one case.

No response from patch posted on tech-kern 29Aug2001.
2001-09-17 02:47:13 +00:00
enami 97e7cd9cf9 For hayes esp card, set prescaler if specified rate is grater than 115200. 2001-08-27 14:27:01 +00:00
simonb dc0e4c0679 Cosmetic cleanups:
- cominit() is local to com.c, remove prototype from comvar.h.
  - Don't prototype comstop(), cdev_decl(com) does this.
  - Don't use a block device switch table declaration(!).
  - No need to include "com.h".
2001-08-22 12:44:10 +00:00
uwe 35e011d31b Convert to use cnmagic(9). Unifdef DDB and DDB_BREAK_CHAR.
While I'm here, s/ungetc/readahead/ in com_common_* because that's
what it _really_ is, "ungetc" is a very confusing name.
2001-06-20 03:07:25 +00:00
lukem d84d2c6c85 add missing #include "opt_kgdb.h" 2001-05-30 15:24:23 +00:00
scw 2963ff5c58 Add `l_poll' to `struct linesw' and provide an xxxpoll() entry point
in each tty driver to indirect through it.

This allows tty line-disciplines to handle poll(2) system calls.
2001-05-02 10:32:08 +00:00
thorpej 45de366b2e Rename __GENERIC_SOFT_INTERRUPTS to __HAVE_GENERIC_SOFT_INTERRUPTS,
and place the definition in <machine/types.h>.  This can now be used
as a flag to indicate whether or not <machine/intr.h> can be included
to get the generic soft interrupt API.
2001-01-14 23:50:28 +00:00
sommerfeld acc196c4a9 Initialize ring buffer pointers when the ring buffer is allocated.
(comsoft() can be invoked before comopen() on serial consoles; a character
received before the console is opened "for real" can result in a fatal trap
unless the ring buffer pointers are initialized early)
2000-11-18 15:46:23 +00:00
eeh 2a860a3de9 Adapt to the new line discipline scheme. 2000-11-01 23:54:57 +00:00
sommerfeld 91178eae70 Add missing '&& defined(COM_MPLOCK)' 2000-09-26 14:12:42 +00:00
sommerfeld 6a71867356 Add `COM_MPLOCK' option to use a device-instance-specific spinlocks
when running at splserial().  This is a temporary measure (until
there's a MP-safe interrupt handling structure); until then, it should
be used when MULTIPROCESSOR and IPL_SERIAL > IPL_SCHED.
2000-09-23 17:17:11 +00:00
eeh d651adf44a paddr_t -> bus_addr_t. 2000-09-22 14:46:38 +00:00
eeh 56cf963264 Support for SPARC machines with `su' devices. 2000-09-21 23:27:32 +00:00
toshii faf55ac40c Change tiocm_to_{com,zs}'s second argument to u_long to match with
the type in their caller.
2000-09-17 22:07:39 +00:00
sommerfeld 8f5586c98f Avoid calling tsleep when running above splhigh() 2000-08-18 13:22:39 +00:00
jeffs e97c2066ab Add options DDB_BREAK_CHAR. This overrides break on the serial console
break character with the supplied one.  This is useful for cases where
break is hard to generate, or you are connected to a PC that "sends"
breaks when power cycled.  For this mode in com, interpret break char
in the polling section, which allows entry into the debugger before
the tty is opened.  Only supported in the com driver currently.
2000-08-03 00:30:47 +00:00
thorpej cb450cc444 Use device_lookup(). 2000-07-06 01:47:34 +00:00
thorpej b29178acf3 Remove unnecessary junk on #undef line that some C preprocessors
get cranky about.
2000-05-03 19:19:04 +00:00
simonb 9e370d4402 Delete redundant decl of com_attach_subr(), it's in comvar.h. 2000-03-30 02:04:30 +00:00
thorpej fc96443d15 New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
  resource allocation.
- Insertion and removal of callouts is constant time, important as
  this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
2000-03-23 07:01:25 +00:00
thorpej a183d34f04 - Implement cnbell() -- ring the console bell. The cn_bell entrypoint
is optional.
- Add cn_bell to statically allocated consdevs as appropriate.
2000-03-06 21:36:05 +00:00
jonathan e9a4467c58 Fix thinko in previous revision: it wouldn't catch deassert.
Revert the code inside the new test to the previous-but-one revision.
2000-02-07 02:17:18 +00:00
jonathan 2da22cf2c5 Check for DCD status change interrupts which signal PPS events, even
if the line discipline is ignoring carrier (e.g., via comparam()'s
setting of sc->sc_msr_mask).  Move PPS timestamp outside the normal
status-change processing, and ignore sc_msr_mask when testing
for PPS events.
2000-02-06 23:23:37 +00:00
soda 3d14a7c591 kluge to make this work with NEC M403 (arc/magnum). 2000-01-23 21:06:01 +00:00
drochner b95651b752 set carrier early if used as console or kgdb line, fixes PR kern/6547
by Andreas Gustafsson, gson@iengines.com
1999-12-21 11:04:36 +00:00
sommerfeld 17d170b1ca defopt COM_DEBUG, COM_HAYESP, and COM16650 1999-11-22 03:53:38 +00:00
jonathan 0588cdfc88 Update user-level PPS-API to match -05 draft.
Change PPS_<xxx> ioctls to PPS_IOC_<xxx>.
1999-11-04 05:33:58 +00:00
jonathan b31080319e Fix nanosecond/microsecond botch in PPSAPI:
remove bogus TIMESPEC_TO_TIMEVAL() after applying any {assert,clear} offset.
1999-10-15 06:16:15 +00:00
ross 4b0326d939 Get rid of delay() in com_common_putc() because the Shark delay() is borked
and can't be called until after the timers are setup. (It should not use
a timer, or it should have a fallback algorithm.)
1999-04-19 19:27:31 +00:00
thorpej 552465011e Revert revision 1.159. The correct answer was not to re-break the
serial console support, but rather to fix the Shark delay().
1999-04-18 22:02:47 +00:00
mrg 833fb0ac7f back date this file to version 1.155 which works on the shark. 1999-03-31 12:44:04 +00:00
mycroft f487bc59aa Nuke bogus extra variable, too. 1999-03-29 13:40:41 +00:00
mycroft 85ad0d175c Fix bogons in previous change:
* The fact that IIR_NOPEND was not set on entry does *not* mean that no
  transmission was in progress.  Besides, we don't want to throw away receive
  interrupts either.
* In the !clearirq case, we didn't splx().
1999-03-29 13:21:15 +00:00
ross 6a228da053 Mods to com_common_putc(). When doing kprintf() or kgdb output:
1. don't clear the irq unless it was clear before transmitting
2. also do various bus_space_barrier() ops
Stops console from freezing when kprintf interrupts tty driver output.
1999-03-29 10:01:39 +00:00
explorer 3ebb419571 Update to slightly altered rnd_attach_source() api 1999-02-28 17:08:05 +00:00
drochner 525932e022 make the probe stricter to catch cases where the chipset doesn't pull
the data lines to "high" for not-existant devices
1999-02-12 12:45:48 +00:00
mycroft 0c7afe477d Separate the tiocm code into functions, like the z8530 code, and fix the same
DTR bug.
1999-02-03 23:57:27 +00:00
mycroft 9be96dda95 Fix an inconsistency: PPS was turned off on first open, but the mode may have
still claimed it was enabled.
1999-02-03 23:22:11 +00:00
mycroft 535f59cc81 Slight redux in PPS code. 1999-02-03 23:20:33 +00:00
drochner a7f50b8178 Debugger() -> console_debugger() to honour the ddb_fromconsole sysctl 1999-01-26 17:08:37 +00:00