[PATCH] Add support for MacModel autodetection on OpenBSD.
Alex Deucher
alexdeucher at gmail.com
Tue Mar 30 09:32:33 PDT 2010
On Tue, Mar 30, 2010 at 12:14 PM, Owain G. Ainsworth
<zerooa at googlemail.com> wrote:
> This allows radeon-equipped macs to work without an xorg.conf on openbsd.
> Patch originally written by Mark Kettenis (kettenis at openbsd.org)
Thanks, pushed.
Alex
> ---
> src/radeon_output.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 files changed, 71 insertions(+), 0 deletions(-)
>
> diff --git a/src/radeon_output.c b/src/radeon_output.c
> index 8648f27..3a0d1e9 100644
> --- a/src/radeon_output.c
> +++ b/src/radeon_output.c
> @@ -2616,6 +2616,11 @@ static void RADEONSetupGenericConnectors(ScrnInfoPtr pScrn)
>
> #if defined(__powerpc__)
>
> +#ifdef __OpenBSD__
> +#include <sys/param.h>
> +#include <sys/sysctl.h>
> +#endif
> +
> /*
> * Returns RADEONMacModel or 0 based on lines 'detected as' and 'machine'
> * in /proc/cpuinfo (on Linux) */
> @@ -2708,6 +2713,72 @@ static RADEONMacModel RADEONDetectMacModel(ScrnInfoPtr pScrn)
>
> #endif /* __linux */
>
> +#ifdef __OpenBSD__
> + char model[32];
> + int mib[2];
> + size_t len;
> +
> + mib[0] = CTL_HW;
> + mib[1] = HW_PRODUCT;
> + len = sizeof(model);
> + if (sysctl(mib, 2, model, &len, NULL, 0) >= 0) {
> + if (strcmp(model, "PowerBook5,1") == 0 ||
> + strcmp(model, "PowerBook5,2") == 0 ||
> + strcmp(model, "PowerBook5,3") == 0 ||
> + strcmp(model, "PowerBook5,4") == 0 ||
> + strcmp(model, "PowerBook5,5") == 0) {
> + ret = RADEON_MAC_POWERBOOK_EXTERNAL; /* single link */
> + info->ext_tmds_chip = RADEON_SIL_164; /* works on 5,2 */
> + }
> +
> + if (strcmp(model, "PowerBook5,6") == 0) {
> + ret = RADEON_MAC_POWERBOOK_EXTERNAL; /* dual or single link */
> + }
> +
> + if (strcmp(model, "PowerBook5,7") ||
> + strcmp(model, "PowerBook5,8") == 0 ||
> + strcmp(model, "PowerBook5,9") == 0) {
> + ret = RADEON_MAC_POWERBOOK_EXTERNAL; /* dual link */
> + info->ext_tmds_chip = RADEON_SIL_1178; /* guess */
> + }
> +
> + if (strcmp(model, "PowerBook3,3") == 0) {
> + ret = RADEON_MAC_POWERBOOK_VGA; /* vga rather than dvi */
> + }
> +
> + if (strcmp(model, "PowerMac10,1") == 0) {
> + ret = RADEON_MAC_MINI_INTERNAL; /* internal tmds */
> + }
> +
> + if (strcmp(model, "PowerMac10,2") == 0) {
> + ret = RADEON_MAC_MINI_EXTERNAL; /* external tmds */
> + }
> +
> + if (strcmp(model, "PowerBook2,1") == 0 ||
> + strcmp(model, "PowerBook2,2") == 0 ||
> + strcmp(model, "PowerBook4,1") == 0 ||
> + strcmp(model, "PowerBook4,2") == 0 ||
> + strcmp(model, "PowerBook4,3") == 0 ||
> + strcmp(model, "PowerBook6,3") == 0 ||
> + strcmp(model, "PowerBook6,5") == 0 ||
> + strcmp(model, "PowerBook6,7") == 0) {
> + ret = RADEON_MAC_IBOOK;
> + }
> +
> + if (strcmp(model, "PowerBook1,1") == 0 ||
> + strcmp(model, "PowerBook3,1") == 0 ||
> + strcmp(model, "PowerBook3,2") == 0 ||
> + strcmp(model, "PowerBook3,4") == 0 ||
> + strcmp(model, "PowerBook3,5") == 0) {
> + ret = RADEON_MAC_POWERBOOK_INTERNAL;
> + }
> +
> + if (strcmp(model, "PowerMac12,1") == 0) {
> + ret = RADEON_MAC_IMAC_G5_ISIGHT;
> + }
> + }
> +#endif /* __OpenBSD__ */
> +
> if (ret) {
> xf86DrvMsg(pScrn->scrnIndex, X_DEFAULT, "Detected %s.\n",
> ret == RADEON_MAC_POWERBOOK_EXTERNAL ? "PowerBook with external DVI" :
> --
> 1.6.5.7
>
> _______________________________________________
> xorg-driver-ati mailing list
> xorg-driver-ati at lists.x.org
> http://lists.x.org/mailman/listinfo/xorg-driver-ati
>
More information about the xorg-driver-ati
mailing list