Commit Graph

48 Commits

Author SHA1 Message Date
shiba
44b7622806 Support internal ADB keyboard of PowerBook 190,190cs.
The keyboard works fine now. I don't confirm working internal
ADB track pad.

But an internal IDE drive is not recognized, and
an internal SCSI host controller(sbc driver) don't work yet.
2002-11-03 11:04:35 +00:00
thorpej
9c144a7b82 - Don't use multi-line string literals.
- Statements must follow labels.
2002-05-30 21:26:13 +00:00
shiba
081fae3ddb Fix up a bug which PB150 shuts down when one boots up in progress.
PB150 will work with SCSI disk. But we cannot use an internal IDE
disk yet.

Reviewed by briggs
2002-03-05 17:39:25 +00:00
chs
8f0070db30 prepare for ELF:
- add "%" prefix to register names in assembly code.
 - use _C_LABEL() where necessary.
 - use packed structures where necessary to match the old ABI.
2001-11-20 03:19:41 +00:00
scottr
29923311f1 Set up ADB hardware type before making decisions based on same.
This is part of PR 9852 from Daishi Kato.
2000-09-27 03:27:23 +00:00
scottr
d08e3b12a4 Stabilize ADB support for some non-Apple ADB peripherals. This is the
second (and final) part of the fix for PR 10086.  (There are no longer
any infinite-wait busy loops in the ADB driver!)
2000-07-03 08:59:26 +00:00
thorpej
b667a5a357 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 06:30:07 +00:00
scottr
4f29e4d330 Add and use macros to build ADB FLUSH, LISTEN, and TALK commands. 2000-03-19 07:37:58 +00:00
scottr
c62e39490c Check to make sure we get a valid handler ID in response to a TALK R3. 2000-03-18 08:07:50 +00:00
scottr
6755970bcf Low-level drivers, like the Power Manager driver, can get us into a major
funk when they misbehave and give us unexpected results.  Specifically:

 - Don't assume that the first free slot is at the top of the table if
   we can't find one.
 - Don't increment ADBNumDevices when backfilling "holes" left by devices
   that didn't respond to a TALK R3 during the initial device scan.
 - Don't assume that an address reassignment worked; make sure something
   responds on the new address before plowing forward.
 - If after device reassignment there are no free slots, make sure to
   indicate this fact.
 - Failing all else, handle the situation where we run out of slots in
   the device table -- which now should "never" happen -- gracefully.

While the Power Manager driver still sometimes misbehaves, it shouldn't
cause the system to crash/hang due to us walking off the end of the
device table.
2000-03-07 06:35:22 +00:00
scottr
5c7674d4dd Explicitly include headers needed by iopreg.h 2000-02-21 02:04:48 +00:00
scottr
ab647533a1 Bracket disabled IIfx IOP code with #ifdef __notyet__, rather than
commenting it out or using #if 0.
2000-02-21 01:20:55 +00:00
scottr
97a60329d2 Apparently, the Mac TV is a re-packaged Performa 550. Add code to
recognize this so that Mac TV users can finally ditch the MRG_ADB option.
1999-12-25 08:16:34 +00:00
scottr
a15eb6dc13 An interrupt handler may change adbInCount underneath us, so qualify the declaration
with volatile.  The bug didn't show its face until more agressive
optimization showed up, apparently a result of the last egcs upgrade.
(The interrupt handling changes from June have certainly also played
a part.)  Thanks to Ken'ichi Ishizaka for discovering the problem.
1999-12-10 00:03:47 +00:00
scottr
dc2663bf69 If there is only one ADB device, it will do us no good to avoid it
when guessing which device to poll next.  Resolves PR 7407, but the
bug is a lot older than that.
1999-11-28 10:07:34 +00:00
scottr
0b8b3c403e In the interrupt handlers, check adb_polling instead of
adb_initted to decide whether to handle 'recovered' interrupts
immediately.
1999-11-07 08:18:24 +00:00
scottr
8da942f249 Oops... last rev created an unused variable. While here, clean up
adb_reinit()'s variables a bit, too.
1999-11-07 06:15:09 +00:00
scottr
23411c4c1b Convert one more buffer copy that I missed in rev 1.28. 1999-11-07 05:50:26 +00:00
scottr
a7628ea793 Always using polling for poweroff (from macppc). 1999-11-07 00:16:39 +00:00
scottr
ad43c94436 ite_polling -> adb_polling 1999-11-07 00:12:53 +00:00
scottr
c827b513ac Convert buffer copies to memcpy(). 1999-11-06 23:50:29 +00:00
scottr
12a535f5ef Add more delay in adb_reinit() (from macppc). 1999-11-06 23:44:32 +00:00
scottr
b46c7fc44d Don't invoke the upper half handler unless we're still
initializing the ADB bus.  This fixes PR 7870.
1999-11-06 22:25:20 +00:00
briggs
819a054df2 Poll for serial interrupts. Return to 3000us delay instead of 4000us in init. 1999-06-29 04:45:59 +00:00
briggs
71a4446b04 Unfortunately, several changes that are intermingled:
- Add initial IOP support.  ADB doesn't work yet for me, but it's here so
  that others will be encouraged to work on it.  ADB_HW_IOP basically
  is configured as a NOP so that serial consoles will continue to work.
- Roll via1_intr and via2_intr into the intr.c scheme--this also required
  changing rtclock_intr to grovel the stack differently so that hardclock
  gets the right arguments and softclock() doesn't get all reentrant.
- Make via1 interrupts parallel to via2 interrupts--handlers get a pass-
  through pointer and we can register handlers.  Register via1 interrupt
  with intr_establish()--normally level 1, level 6 for A/UX scheme.
- Use intr_establish() to set real via2 interrupt handler instead of the
  hacked function pointer.
- Reorganize adb-direct interrupts so that a function call is removed.
- Implement A/UX interrupts for all Quadras right now.  We may need to
  special case some Quadras, but Linux folks are reporting success on
  several models.
- Fix intrnames to be accurate for the normal, PSC, and A/UX interrupt
  configurations.
1999-06-28 01:56:55 +00:00
scottr
2f5a40c966 From Yasuhiro Endoh: Performa 58x uses ADB soft poweroff. 1999-05-15 19:29:12 +00:00
scottr
0179750b00 Correct two more problems of the same type as in rev 1.21: use the length
of the buffer you're copying from as the loop interator, not the length
of the buffer you're copying to.  Also, rewrite print_single() with
pointer instead of array operators.  Appears to correct some ADB-related
`hangs' during autoconfig.
1999-05-06 06:01:27 +00:00
scottr
4982fb8fdb Fix an obscure bug in send_adb_cuda() found be comparison with
the macppc version.
1999-03-18 09:10:19 +00:00
ender
25e1f69c42 o Change various attach arg and softc datatypes to ints.
o Use explicit typecasts when interfacing with MRG data

Should fix port-mac68k/6839.  Patch supplied by
Frederick Bruckman <fb@enteract.com>
1999-02-11 06:41:07 +00:00
briggs
0659054b8b Make this compile _and_ link with DEBUG / ADB_DEBUG defined. 1998-11-14 03:20:47 +00:00
briggs
94125bb185 Allow this to compile with DEBUG defined. 1998-11-14 03:01:31 +00:00
scottr
a83dff9c40 Make it compile for MRG_ADB kernels. 1998-10-26 07:09:37 +00:00
ender
2055d846f9 New ADB "bus" interface:
o Separate ms and kbd drivers
o aed device for compatibility
o debug message cleanup in hardware direct support (from scottr)
1998-10-23 01:16:22 +00:00
scottr
7d09ad09b4 New framework for handling processor interrupts, derived in part from
the hp300 port.

 - Interrupts 3-6 use this immediately.  Interrupt 7 is a special case,
   and the VIA interrupts (1 and 2) will be addressed when that code is
   rototilled.

 - Modify the zs front end to register with the appropriate interrupt
   controller:  through the PSC on the AV Quadras, and direct to
   interrupt 4 on the rest.  Arrange to have the appropriate zsc_softc
   supplied to us at interrupt time.

 - Modify the direct ADB driver (and its PowerManager cousin) to call
   intr_dispatch(), rather than zshard().  XXX This is a kludge, but at
   least limits the brokenness to the ADB drivers, now.

As a side effect, this should fix PR 5590.  Thanks to Bill Studenmund for
correctly determining the cause of the problem reported there.
1998-08-12 05:42:44 +00:00
scottr
8e25cfb973 Better integration of Power Manager IC ADB driver into the direct ADB driver framework,
from Takashi Hamada.  Also includes a handler for unsolicited ADB
packets.
1998-03-29 03:50:30 +00:00
scottr
5fa1b5f440 Add Performa 580/588 to the list of machines which have a Cuda chip.
XXX - we should really be using machine ID symbolic constants here, not
numbers.
1998-03-26 06:25:49 +00:00
scottr
e50238f77a Rewritten II-series ADB code from John Wittkoski. Also, a whole
lotta KNF.
1998-02-23 03:09:40 +00:00
scottr
81d2791bd9 Unify ADB options and place them all into opt_adb.h. Provide a knob to
enable ADB debugging messages if ADB_DEBUG is configured.
1998-02-21 00:37:07 +00:00
scottr
867cdfc734 Another update from John: if we're polling, e.g. in ddb, pass the
keystroke to the upper half directly.
1998-01-09 06:59:29 +00:00
scottr
4567c69fea Update from John Wittkoski: the Color Classic and Color Classic II
have Cuda hardware, not IIsi-based.
1998-01-07 07:33:36 +00:00
scottr
13fa4227b1 Update from John Wittkoski: bug fixes for Cuda support. 1997-11-07 07:33:11 +00:00
briggs
e19ba716d0 remove an obsolete comment. 1997-11-04 04:00:18 +00:00
scottr
c988c6f85f Make #include directives consistent. All MD headers are of the form:
#include <mac68k/{dev,mac68k}/foo.h>
1997-08-11 22:53:26 +00:00
scottr
43f35682d8 April 18 update from John Wittkoski, w/space vs. tab KNFing by me. 1997-04-21 18:04:28 +00:00
scottr
11b0f01c17 Make sure to call adbop() on Power Manager-based machines. Noted by
Takashi Hamada, who also provided the code I based this modifcation
on.
1997-04-18 05:53:41 +00:00
scottr
aae8cccb0f Use the new opt_mrg_adb.h header. 1997-04-14 16:56:26 +00:00
scottr
58d41d0f98 Fix several more instances where the volatile modifier was needed.
From Allen.
1997-04-08 06:53:28 +00:00
scottr
76c66a06b3 Direct-to-hardware ADB interface/driver, written by John P. Wittkoski. 1997-04-08 03:16:18 +00:00