From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: James Simmons <jsimmons@infradead.org>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>,
Linux Fbdev development list
<linux-fbdev-devel@lists.sourceforge.net>,
Andrew Morton <akpm@osdl.org>
Subject: Re: Patch for review and testing
Date: Wed, 28 Jan 2004 08:40:14 +1100 [thread overview]
Message-ID: <1075239579.6296.211.camel@gaston> (raw)
In-Reply-To: <Pine.LNX.4.44.0401272006120.19265-100000@phoenix.infradead.org>
On Wed, 2004-01-28 at 07:07, James Simmons wrote:
> I like to submit this patch to linus today. Could you test it to see if it
> works on ppcs.
Well... you didn't update the drivers calling get_EDID_from_OF (I think
only rivafb at this point). Also, I plan to deprecate that function in
fbmon anyway, so don't bother, leave it alone for now. The way the
display/EDID infos are laid out in the OF device tree isn't that
generic and I'm considering letting each driver has its own version...
Also, that construct is plain wrong:
char *get_EDID_from_Firmware(struct device *dev)
{
.../...
pdev = to_pci_dev(dev);
Either pass a pci_dev in, or if not, at least check that you are
dealing with a pci device before casting struct device...
Finally, I don't see the point of submiting things to Linus at this
point, especially this patch which isn't critical (and you didn't even
submit driver changes for _using_ the new feature). Andrew is the
maintainer of current 2.6.x stable, patches have to go to him first,
stage in -mm for a while to be tested, and then go to Linus.
Ben.
> diff -urN -X /home/jsimmons/dontdiff linus-2.6/arch/i386/boot/video.S fbdev-2.6/arch/i386/boot/video.S
> --- linus-2.6/arch/i386/boot/video.S 2004-01-27 14:11:30.000000000 -0800
> +++ fbdev-2.6/arch/i386/boot/video.S 2004-01-27 13:28:20.000000000 -0800
> @@ -1889,6 +1889,7 @@
> ret
>
> store_edid:
> +#ifdef CONFIG_EDID_FIRMWARE
> pushw %es # just save all registers
> pushw %ax
> pushw %bx
> @@ -1919,6 +1920,7 @@
> popw %bx
> popw %ax
> popw %es
> +#endif /* CONFIG_EDID_FIRMWARE */
> ret
>
> # VIDEO_SELECT-only variables
> diff -urN -X /home/jsimmons/dontdiff linus-2.6/arch/i386/kernel/setup.c fbdev-2.6/arch/i386/kernel/setup.c
> --- linus-2.6/arch/i386/kernel/setup.c 2004-01-27 14:11:32.000000000 -0800
> +++ fbdev-2.6/arch/i386/kernel/setup.c 2004-01-27 13:46:34.000000000 -0800
> @@ -105,7 +105,9 @@
> unsigned short length;
> unsigned char table[0];
> };
> +#ifdef CONFIG_EDID_FIRMWARE
> struct edid_info edid_info;
> +#endif /* CONFIG_EDID_FIRMWARE */
> struct ist_info ist_info;
> struct e820map e820;
>
> @@ -1060,7 +1062,9 @@
> ROOT_DEV = old_decode_dev(ORIG_ROOT_DEV);
> drive_info = DRIVE_INFO;
> screen_info = SCREEN_INFO;
> +#ifdef CONFIG_EDID_FIRMWARE
> edid_info = EDID_INFO;
> +#endif /* CONFIG_EDID_FIRMWARE */
> apm_info.bios = APM_BIOS_INFO;
> ist_info = IST_INFO;
> saved_videomode = VIDEO_MODE;
> diff -urN -X /home/jsimmons/dontdiff linus-2.6/drivers/video/Kconfig fbdev-2.6/drivers/video/Kconfig
> --- linus-2.6/drivers/video/Kconfig 2004-01-27 14:17:11.000000000 -0800
> +++ fbdev-2.6/drivers/video/Kconfig 2004-01-27 11:46:36.000000000 -0800
> @@ -38,6 +38,18 @@
> (e.g. an accelerated X server) and that are not frame buffer
> device-aware may cause unexpected results. If unsure, say N.
>
> +config EDID_FIRMWARE
> + bool "Get EDID using the platform's firmware"
> + depends on X86
> + default n
> + help
> + If you choose Y, the EDID (useful for setting video modes) will be
> + acquired using a BIOS call before the kernel boots to protected mode.
> + For computers with broken BIOSes, this can hang your computer. This can
> + also be a very slow process.
> +
> + If unsure, choose N.
> +
> config FB_CIRRUS
> tristate "Cirrus Logic support"
> depends on FB && (AMIGA || PCI) && BROKEN
> diff -urN -X /home/jsimmons/dontdiff linus-2.6/drivers/video/fbmon.c fbdev-2.6/drivers/video/fbmon.c
> --- linus-2.6/drivers/video/fbmon.c 2004-01-27 14:17:12.000000000 -0800
> +++ fbdev-2.6/drivers/video/fbmon.c 2004-01-27 11:55:32.000000000 -0800
> @@ -828,42 +828,42 @@
> printk("========================================\n");
> }
>
> -#ifdef CONFIG_PPC_OF
> -char *get_EDID_from_OF(struct pci_dev *pdev)
> +#ifdef CONFIG_EDID_FIRMWARE
> +char *get_EDID_from_Firmware(struct device *dev)
> {
> +#ifdef CONFIG_PPC_OF
> static char *propnames[] =
> { "DFP,EDID", "LCD,EDID", "EDID", "EDID1", NULL };
> unsigned char *pedid = NULL;
> struct device_node *dp;
> + struct pci_dev *pdev;
> int i;
>
> + pdev = to_pci_dev(dev);
> +
> if (pdev == NULL)
> return NULL;
> dp = pci_device_to_OF_node(pdev);
> - while (dp != NULL) {
> + while (dp) {
> for (i = 0; propnames[i] != NULL; ++i) {
> pedid = (unsigned char *) get_property(dp, propnames[i], NULL);
> - if (pedid != NULL)
> + if (pedid)
> return pedid;
> }
> dp = dp->child;
> }
> - show_edid(pedid);
> - return pedid;
> -}
> #endif
> -
> #ifdef CONFIG_X86
> -char *get_EDID_from_BIOS(void *dummy)
> -{
> - unsigned char *pedid = edid_info.dummy;
> -
> + unsigned char *pedid = NULL;
> +
> + pedid = edid_info.dummy;
> if (!pedid)
> return NULL;
> +#endif
> show_edid(pedid);
> - return pedid;
> + return pedid;
> }
> -#endif
> +#endif /* CONFIG_EDID_FIRMWARE */
>
> /*
> * VESA Generalized Timing Formula (GTF)
> @@ -1229,11 +1229,8 @@
>
> EXPORT_SYMBOL(parse_edid);
> EXPORT_SYMBOL(show_edid);
> -#ifdef CONFIG_X86
> -EXPORT_SYMBOL(get_EDID_from_BIOS);
> -#endif
> -#ifdef CONFIG_PPC_OF
> -EXPORT_SYMBOL(get_EDID_from_OF);
> +#ifdef CONFIG_EDID_FIRMWARE
> +EXPORT_SYMBOL(get_EDID_from_Firmware);
> #endif
> EXPORT_SYMBOL(fb_get_monitor_limits);
> EXPORT_SYMBOL(fb_get_mode);
--
Benjamin Herrenschmidt <benh@kernel.crashing.org>
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
next prev parent reply other threads:[~2004-01-27 21:43 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1075188083.6191.181.camel@gaston>
2004-01-27 20:07 ` Patch for review and testing James Simmons
2004-01-27 21:40 ` Benjamin Herrenschmidt [this message]
2004-01-27 22:09 ` James Simmons
2004-01-27 22:17 ` Benjamin Herrenschmidt
2004-01-27 22:59 ` James Simmons
2004-01-28 0:18 ` Benjamin Herrenschmidt
2004-01-28 1:01 ` Benjamin Herrenschmidt
2004-01-28 1:05 ` Benjamin Herrenschmidt
2004-01-29 19:53 ` Cursor patch James Simmons
2004-01-29 20:20 ` Andrew Morton
2004-01-30 23:54 ` New fb.h header James Simmons
2004-02-01 0:49 ` Andrew Morton
2004-02-01 1:03 ` Benjamin Herrenschmidt
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1075239579.6296.211.camel@gaston \
--to=benh@kernel.crashing.org \
--cc=akpm@osdl.org \
--cc=geert@linux-m68k.org \
--cc=jsimmons@infradead.org \
--cc=linux-fbdev-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.