Re: Performa 475 and OpenBSD 4.0

Carl Bloomsburg <[email protected]> Wed, 27 Sep 2006 06:46:55 -0700
Newsgroups gmane.os.openbsd.mac68k
Message-ID <[email protected]>
The kernel using the diff you provided below is running great so far.

Carl

On Sep 26, 2006, at 11:26 AM, Miod Vallat wrote:

>> I am running 4.0 on a Performa 475.  After updating my source code on
>> Sep 22 and rebuilding the kernel,  the keyboard no longer worked.
>> After I backed out the changed made on 9/17/2006 to
>> src/sys/arch/mac68k/mac68k/clock.c and rebuilt the kernel, the 
>> keyboard
>>  then worked again.  Since I am not familiar with Mac hardware, I am
>> not sure if there is a configuration item that I might need to change
>> before using the new version of clock.c, so I thought I would ask
>> before submitting a bug report.
>
> Damned. My fumble, sorry. I have reverted the problematic part of the
> diff.
>
> Can you try the following diff on your LC475 (in addition to the 
> clock.c
> revert you did), and report whether things still run ok?
>
> Thanks,
> Miod
>
> Index: include/viareg.h
> ===================================================================
> RCS file: /cvs/src/sys/arch/mac68k/include/viareg.h,v
> retrieving revision 1.18
> diff -u -p -r1.18 viareg.h
> --- include/viareg.h	2006/01/13 21:02:01	1.18
> +++ include/viareg.h	2006/09/26 18:20:42
> @@ -212,6 +212,7 @@ typedef SLIST_HEAD(, via2hand)	via2hand_
>
>  void	via_init(void);
>  void	via_powerdown(void);
> +void	via_set_aux_interrupts(void);
>  void	via_set_modem(int);
>  void	add_nubus_intr(int, int (*)(void *), void *, const char *);
>  void	enable_nubus_intr(void);
> Index: mac68k/machdep.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/mac68k/mac68k/machdep.c,v
> retrieving revision 1.134
> diff -u -p -r1.134 machdep.c
> --- mac68k/machdep.c	2006/09/22 22:15:19	1.134
> +++ mac68k/machdep.c	2006/09/26 18:20:43
> @@ -391,6 +391,7 @@ cpu_startup(void)
>  	 */
>  	printf(version);
>  	identifycpu();
> +	via_set_aux_interrupts();
>
>  	vers = mac68k_machine.booter_version;
>  	if (vers < CURRENTBOOTERVER) {
> @@ -1586,14 +1587,6 @@ setmachdep()
>  		mac68k_machine.scsi96 = 1;
>  		via_reg(VIA1, vIER) = 0x7f;	/* disable VIA1 int */
>  		via_reg(VIA2, vIER) = 0x7f;	/* disable VIA2 int */
> -
> -		/* Enable A/UX interrupt scheme */
> -		mac68k_machine.aux_interrupts = 1;
> -		via_reg(VIA1, vBufB) &= (0xff ^ DB1O_AuxIntEnb);
> -		via_reg(VIA1, vDirB) |= DB1O_AuxIntEnb;
> -		mac68k_machine.via1_ipl = 6;
> -		mac68k_machine.via2_ipl = 2;
> -
>  		break;
>  	case MACH_CLASSAV:
>  		VIA2 = VIA2OFF;
> Index: mac68k/via.c
> ===================================================================
> RCS file: /cvs/src/sys/arch/mac68k/mac68k/via.c,v
> retrieving revision 1.28
> diff -u -p -r1.28 via.c
> --- mac68k/via.c	2006/06/30 15:12:47	1.28
> +++ mac68k/via.c	2006/09/26 18:20:44
> @@ -175,6 +175,28 @@ via_init()
>  }
>
>  /*
> + * Enable A/UX style interrupt scheme now if this model supports it.
> + */
> +void
> +via_set_aux_interrupts()
> +{
> +	switch (current_mac_model->class) {
> +	case MACH_CLASSQ:
> +	case MACH_CLASSQ2:
> +		mac68k_machine.aux_interrupts = 1;
> +		via_reg(VIA1, vBufB) &= (0xff ^ DB1O_AuxIntEnb);
> +		via_reg(VIA1, vDirB) |= DB1O_AuxIntEnb;
> +
> +		intr_disestablish(mac68k_machine.via1_ipl);
> +		mac68k_machine.via1_ipl = 6;
> +		intr_establish(via1_intr, NULL, mac68k_machine.via1_ipl, "via1");
> +		/* mac68k_machine.via2_ipl = 2; unchanged */
> +		intr_init();
> +		break;
> +	}
> +}
> +
> +/*
>   * Set the state of the modem serial port's clock source.
>   */
>  void