Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4a0ff754 authored by Ilia Mirkin's avatar Ilia Mirkin Committed by Ben Skeggs
Browse files

drm/nv10: introduce a new NV_11 card type



NV11/17/1F/18 come after NV10/15/16/1A. In order to facilitate using
numerical comparisons, split up the two sets into different card types.

This change should be a no-op except that the relevant cards will see
NV11 printed instead of NV10 for the family.

Signed-off-by: default avatarIlia Mirkin <imirkin@alum.mit.edu>
Signed-off-by: default avatarBen Skeggs <bskeggs@redhat.com>
parent 73f4b1f8
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -161,7 +161,13 @@ nouveau_devobj_ctor(struct nouveau_object *parent,
		if ((boot0 & 0x0f000000) > 0) {
			device->chipset = (boot0 & 0xff00000) >> 20;
			switch (device->chipset & 0xf0) {
			case 0x10: device->card_type = NV_10; break;
			case 0x10: {
				if (0x461 & (1 << (device->chipset & 0xf)))
					device->card_type = NV_10;
				else
					device->card_type = NV_11;
				break;
			}
			case 0x20: device->card_type = NV_20; break;
			case 0x30: device->card_type = NV_30; break;
			case 0x40:
@@ -188,7 +194,8 @@ nouveau_devobj_ctor(struct nouveau_object *parent,

		switch (device->card_type) {
		case NV_04: ret = nv04_identify(device); break;
		case NV_10: ret = nv10_identify(device); break;
		case NV_10:
		case NV_11: ret = nv10_identify(device); break;
		case NV_20: ret = nv20_identify(device); break;
		case NV_30: ret = nv30_identify(device); break;
		case NV_40: ret = nv40_identify(device); break;
+1 −0
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@ struct nouveau_device {
	enum {
		NV_04    = 0x04,
		NV_10    = 0x10,
		NV_11    = 0x11,
		NV_20    = 0x20,
		NV_30    = 0x30,
		NV_40    = 0x40,
+1 −0
Original line number Diff line number Diff line
@@ -114,6 +114,7 @@ pll_map(struct nouveau_bios *bios)
	switch (nv_device(bios)->card_type) {
	case NV_04:
	case NV_10:
	case NV_11:
	case NV_20:
	case NV_30:
		return nv04_pll_mapping;
+1 −1
Original line number Diff line number Diff line
@@ -740,7 +740,7 @@ nv_load_state_ext(struct drm_device *dev, int head,
	}
	/* NV11 and NV20 stop at 0x52. */
	if (nv_gf4_disp_arch(dev)) {
		if (nv_device(drm->device)->card_type == NV_10) {
		if (nv_device(drm->device)->card_type < NV_20) {
			/* Not waiting for vertical retrace before modifying
			   CRE_53/CRE_54 causes lockups. */
			nouveau_timer_wait_eq(ptimer, 650000000, NV_PRMCIO_INP0__COLOR, 0x8, 0x8);
+1 −0
Original line number Diff line number Diff line
@@ -87,6 +87,7 @@ nouveau_abi16_swclass(struct nouveau_drm *drm)
	case NV_04:
		return 0x006e;
	case NV_10:
	case NV_11:
	case NV_20:
	case NV_30:
	case NV_40:
Loading