Re: Having trouble with two active wscons drivers, wskbd stops working on console

Alain Runa <[email protected]> Tue, 11 Apr 2023 17:19:59 +0200
Newsgroups gmane.os.netbsd.ports.amiga
Message-ID <[email protected]>
Hi Frank,

After trying it out, I finally understood how the preconfiguration =
mechanism works. Now the driver will not lock up anymore if no ZZ9000 is =
installed in the system. All left to do on my side, is to cleanup the =
code a little bit, and do some more extensive testings with various =
configuration combinations. If all goes well I could release the Z9000 =
drivers until end of this month.

Thanks for your support, Frank. Without it I would still struggle with =
the lock up issue.

Regards
Alain

> On 6. Apr 2023, at 19:54, Alain Runa <[email protected]> wrote:
>=20
> Hi Frank,
>=20
> Thanks again=E2=80=A6 I have to take a deeper look on that, sounds =
complicated.
> I came very far with NetBSD=E2=80=99s documentation about driver =
implementation.
> However, the amiga specific information is certainly lacking and =
requires background knowledge which seems to be not documented very =
well.
>=20
> Regards
> Alain
>=20
>>=20
>> That's certainly wrong. You can do so in amidisplaycc, because the =
custom
>> chipset is always there, but otherwise a device's console probe =
should only
>> be successful when the device exists and is alive. Otherwise return
>> CN_DEAD.
>>=20
>> ...
>>=20
>> Note that, because of the problem of early console initialization, =
the auto
>> configuration of devices will be performed twice on the Amiga. First =
with
>> amiga_realconfig=3D0, for potential console devices only, and then =
for real
>> with amiga_realconfig=3D1.
>>=20
>> dev/zbus.c only considers those devices in the amiga_realconfig=3D0 =
pass,
>> which have been entered in the prefconftab[].
>>=20
>> This means your zzfb_match() and zzfb_attach() functions should be =
called
>> twice. In zzfb_match() you can differentiate using amiga_realconfig =
and in
>> zzfb_attach() you can check if the second argument (device_t self) is =
NULL,
>> so you don't initialize the card twice.
>>=20
>> The preconfiguration pass runs before calling cnprobe, so you should =
know
>> whether your board has been initialized correctly.
>>=20
>=20
>=20