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

Commit 09397278 authored by Alex Deucher's avatar Alex Deucher Committed by Dave Airlie
Browse files

drm/radeon/kms: add pll quirk for toshiba laptop panel



The panel on the Toshiba A300-1BU laptop does not like the
PLL dividers selected by the avivo pll algo, but works fine
using the older method.  Add a quirk to handle it.

Should fix fdo bug 26358.

Signed-off-by: default avatarAlex Deucher <alexdeucher@gmail.com>
parent 7c27f87d
Loading
Loading
Loading
Loading
+18 −0
Original line number Original line Diff line number Diff line
@@ -1073,6 +1073,21 @@ static struct radeon_atom_ss *radeon_atombios_get_ss_info(struct
	return ss;
	return ss;
}
}


static void radeon_atom_apply_lvds_quirks(struct drm_device *dev,
					  struct radeon_encoder_atom_dig *lvds)
{

	/* Toshiba A300-1BU laptop panel doesn't like new pll divider algo */
	if ((dev->pdev->device == 0x95c4) &&
	    (dev->pdev->subsystem_vendor == 0x1179) &&
	    (dev->pdev->subsystem_device == 0xff50)) {
		if ((lvds->native_mode.hdisplay == 1280) &&
		    (lvds->native_mode.vdisplay == 800))
			lvds->pll_algo = PLL_ALGO_LEGACY;
	}

}

union lvds_info {
union lvds_info {
	struct _ATOM_LVDS_INFO info;
	struct _ATOM_LVDS_INFO info;
	struct _ATOM_LVDS_INFO_V12 info_12;
	struct _ATOM_LVDS_INFO_V12 info_12;
@@ -1151,6 +1166,9 @@ struct radeon_encoder_atom_dig *radeon_atombios_get_lvds_info(struct
		} else
		} else
			lvds->pll_algo = PLL_ALGO_LEGACY;
			lvds->pll_algo = PLL_ALGO_LEGACY;


		/* LVDS quirks */
		radeon_atom_apply_lvds_quirks(dev, lvds);

		encoder->native_mode = lvds->native_mode;
		encoder->native_mode = lvds->native_mode;
	}
	}
	return lvds;
	return lvds;