rem: if (si->ps.card_type >= NM2230) break;
add: if (si->ps.card_type >= NM2200) break;
context: status_t nm_acc_init(){	/* Set pixel width */	switch(si->dm.space)	{	case B_CMAP8:		/* b8-9 determine engine colordepth */		si->engine.control = (1 << 8);		si->engine.depth = 1;		break;	case B_RGB15_LITTLE:case B_RGB16_LITTLE:		/* b8-9 determine engine colordepth */		si->engine.control = (2 << 8);		si->engine.depth = 2;		break;	case B_RGB24_LITTLE:		/* b8-9 determine engine colordepth */		si->engine.control = (3 << 8);		si->engine.depth = 3;		/* no acceleration supported on NM2070 - NM2200: let them fallthrough... */		if (si->ps.card_type >= NM2230) break;	default:		LOG(8,("ACC: init, invalid bit depth\n"));		return B_ERROR;	}	/* setup memory pitch (b10-12) on newer cards:	 * this works with a table, there are very few fixed settings.. */	if(si->ps.card_type > NM2070)	{		switch(si->fbc.bytes_per_row / si->engine.depth)		{		case 640:			si->engine.control |= (2 << 10);			break;		case 800:			si->engine.control |= (3 << 10);			break;		case 1024:			si->engine.control |= (4 << 10);			break;		case 1152:			si->engine.control |= (5 << 10);			break;		case 1280:			si->engine.control |= (6 << 10);			break;		case 1600:			si->engine.control |= (7 << 10);			break;		default:			LOG(8,("ACC: init, invalid mode width\n"));			return B_ERROR;		}	}	/* enable engine FIFO (fixme: works this way on pre NM2200 only (engine.control)) */	/* fixme when/if possible:	 * does not work on most cards.. (tried NM2070 and NM2160)	 * workaround: always wait until engine completely idle before programming. */	switch (si->ps.card_type)	{	case NM2090:	case NM2093:		si->engine.control |= (1 << 27);		break;	default:		break;	}	/* setup buffer startadress */	/* fixme when/if possible:	 * not possible on all cards or not enough specs known. (tried NM2160)	 * workaround: place cursor bitmap at _end_ of cardRAM instead of in _beginning_. */	/* setup clipping (fixme: works this way on pre NM2200 only (engine.control)) */	/* note:	 * on NM2160 the max acc engine width of 1600 pixels can be programmed, but	 * the max. height is only 1023 pixels (height register holds just 10 bits)! 	 * note also:	 * while the vertical clipping feature can do upto and including 1023 pixels,	 * the engine itself can do upto and including 1024 pixels vertically.	 * So:	 * Don't use the engine's clipping feature as we want to get the max out of the	 * engine. We won't export the acc hooks for modes beyond the acc engine's	 * capabilities. *///	si->engine.control |= (1 << 26);//	ACCW(CLIPLT, 0);//	ACCW(CLIPRB, ((si->dm.virtual_height << 16) | (si->dm.virtual_width & 0x0000ffff)));	/* init some extra registers on some cards */	switch(si->ps.card_type)	{	case NM2070:		/* make sure the previous command (if any) is completed *///		does not work yet://		nm_acc_wait_fifo(5);//		so:		nm_acc_wait_idle();		/* setup memory pitch */		ACCW(2070_PLANEMASK, 0x0000ffff);		ACCW(2070_SRCPITCH, si->fbc.bytes_per_row);		ACCW(2070_SRCBITOFF, 0);		ACCW(2070_DSTPITCH, si->fbc.bytes_per_row);		ACCW(2070_DSTBITOFF, 0);		break;	case NM2200:	case NM2230:	case NM2360:	case NM2380:		/* make sure the previous command (if any) is completed *///		does not work yet://		nm_acc_wait_fifo(2);//		so:		nm_acc_wait_idle();		/* setup engine depth and engine destination-pitch */		ACCW(STATUS, ((si->engine.control & 0x0000ffff) << 16));		/* setup engine source-pitch */		ACCW(2200_SRC_PITCH,			((si->fbc.bytes_per_row << 16) | (si->fbc.bytes_per_row & 0x0000ffff)));		break;	default:		/* nothing to do */		break;	}	return B_OK;}