static void __init amiga_identify()

in amiga/config.c [201:357]


static void __init amiga_identify(void)
{
	/* Fill in some default values, if necessary */
	if (amiga_eclock == 0)
		amiga_eclock = 709379;

	memset(&amiga_hw_present, 0, sizeof(amiga_hw_present));

	pr_info("Amiga hardware found: ");
	if (amiga_model >= AMI_500 && amiga_model <= AMI_DRACO) {
		pr_cont("[%s] ", amiga_models[amiga_model-AMI_500]);
		strcat(amiga_model_name, amiga_models[amiga_model-AMI_500]);
	}

	switch (amiga_model) {
	case AMI_UNKNOWN:
		break;

	case AMI_600:
	case AMI_1200:
		AMIGAHW_SET(A1200_IDE);
		AMIGAHW_SET(PCMCIA);
		fallthrough;
	case AMI_500:
	case AMI_500PLUS:
	case AMI_1000:
	case AMI_2000:
	case AMI_2500:
		AMIGAHW_SET(A2000_CLK);	/* Is this correct for all models? */
		break;

	case AMI_3000:
	case AMI_3000T:
		AMIGAHW_SET(AMBER_FF);
		AMIGAHW_SET(MAGIC_REKICK);
		fallthrough;
	case AMI_3000PLUS:
		AMIGAHW_SET(A3000_SCSI);
		AMIGAHW_SET(A3000_CLK);
		AMIGAHW_SET(ZORRO3);
		break;

	case AMI_4000T:
		AMIGAHW_SET(A4000_SCSI);
		fallthrough;
	case AMI_4000:
		AMIGAHW_SET(A4000_IDE);
		AMIGAHW_SET(A3000_CLK);
		AMIGAHW_SET(ZORRO3);
		break;

	case AMI_CDTV:
	case AMI_CD32:
		AMIGAHW_SET(CD_ROM);
		AMIGAHW_SET(A2000_CLK);             /* Is this correct? */
		break;

	case AMI_DRACO:
		panic("No support for Draco yet");

	default:
		panic("Unknown Amiga Model");
	}

	AMIGAHW_SET(AMI_VIDEO);
	AMIGAHW_SET(AMI_BLITTER);
	AMIGAHW_SET(AMI_AUDIO);
	AMIGAHW_SET(AMI_FLOPPY);
	AMIGAHW_SET(AMI_KEYBOARD);
	AMIGAHW_SET(AMI_MOUSE);
	AMIGAHW_SET(AMI_SERIAL);
	AMIGAHW_SET(AMI_PARALLEL);
	AMIGAHW_SET(CHIP_RAM);
	AMIGAHW_SET(PAULA);

	switch (amiga_chipset) {
	case CS_OCS:
	case CS_ECS:
	case CS_AGA:
		switch (amiga_custom.deniseid & 0xf) {
		case 0x0c:
			AMIGAHW_SET(DENISE_HR);
			break;
		case 0x08:
			AMIGAHW_SET(LISA);
			break;
		default:
			AMIGAHW_SET(DENISE);
			break;
		}
		break;
	}
	switch ((amiga_custom.vposr>>8) & 0x7f) {
	case 0x00:
		AMIGAHW_SET(AGNUS_PAL);
		break;
	case 0x10:
		AMIGAHW_SET(AGNUS_NTSC);
		break;
	case 0x20:
	case 0x21:
		AMIGAHW_SET(AGNUS_HR_PAL);
		break;
	case 0x30:
	case 0x31:
		AMIGAHW_SET(AGNUS_HR_NTSC);
		break;
	case 0x22:
	case 0x23:
		AMIGAHW_SET(ALICE_PAL);
		break;
	case 0x32:
	case 0x33:
		AMIGAHW_SET(ALICE_NTSC);
		break;
	}
	AMIGAHW_SET(ZORRO);

#define AMIGAHW_ANNOUNCE(name, str)		\
	if (AMIGAHW_PRESENT(name))		\
		pr_cont(str)

	AMIGAHW_ANNOUNCE(AMI_VIDEO, "VIDEO ");
	AMIGAHW_ANNOUNCE(AMI_BLITTER, "BLITTER ");
	AMIGAHW_ANNOUNCE(AMBER_FF, "AMBER_FF ");
	AMIGAHW_ANNOUNCE(AMI_AUDIO, "AUDIO ");
	AMIGAHW_ANNOUNCE(AMI_FLOPPY, "FLOPPY ");
	AMIGAHW_ANNOUNCE(A3000_SCSI, "A3000_SCSI ");
	AMIGAHW_ANNOUNCE(A4000_SCSI, "A4000_SCSI ");
	AMIGAHW_ANNOUNCE(A1200_IDE, "A1200_IDE ");
	AMIGAHW_ANNOUNCE(A4000_IDE, "A4000_IDE ");
	AMIGAHW_ANNOUNCE(CD_ROM, "CD_ROM ");
	AMIGAHW_ANNOUNCE(AMI_KEYBOARD, "KEYBOARD ");
	AMIGAHW_ANNOUNCE(AMI_MOUSE, "MOUSE ");
	AMIGAHW_ANNOUNCE(AMI_SERIAL, "SERIAL ");
	AMIGAHW_ANNOUNCE(AMI_PARALLEL, "PARALLEL ");
	AMIGAHW_ANNOUNCE(A2000_CLK, "A2000_CLK ");
	AMIGAHW_ANNOUNCE(A3000_CLK, "A3000_CLK ");
	AMIGAHW_ANNOUNCE(CHIP_RAM, "CHIP_RAM ");
	AMIGAHW_ANNOUNCE(PAULA, "PAULA ");
	AMIGAHW_ANNOUNCE(DENISE, "DENISE ");
	AMIGAHW_ANNOUNCE(DENISE_HR, "DENISE_HR ");
	AMIGAHW_ANNOUNCE(LISA, "LISA ");
	AMIGAHW_ANNOUNCE(AGNUS_PAL, "AGNUS_PAL ");
	AMIGAHW_ANNOUNCE(AGNUS_NTSC, "AGNUS_NTSC ");
	AMIGAHW_ANNOUNCE(AGNUS_HR_PAL, "AGNUS_HR_PAL ");
	AMIGAHW_ANNOUNCE(AGNUS_HR_NTSC, "AGNUS_HR_NTSC ");
	AMIGAHW_ANNOUNCE(ALICE_PAL, "ALICE_PAL ");
	AMIGAHW_ANNOUNCE(ALICE_NTSC, "ALICE_NTSC ");
	AMIGAHW_ANNOUNCE(MAGIC_REKICK, "MAGIC_REKICK ");
	AMIGAHW_ANNOUNCE(PCMCIA, "PCMCIA ");
	if (AMIGAHW_PRESENT(ZORRO))
		pr_cont("ZORRO%s ", AMIGAHW_PRESENT(ZORRO3) ? "3" : "");
	pr_cont("\n");

#undef AMIGAHW_ANNOUNCE
}