Merge tag 'fbdev-for-7.0-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev
Pull fbdev updates from Helge Deller: "It's now easily possible to replace the framebuffer penguin boot logo with an own logo at compile time (Vincent Mailhol) The hyperv framebuffer driver has been removed, since the hyperv DRM driver now seems to provide equal functionality. Various console_conditional_schedule() calls across the console drivers (fbcon, printk, vt) have been removed since they are no longer necessary. All other patches are either fixes in au1100fb, au1200fb, ffb, rivafb, vt8500lcdfb and of_display_timing, or minor cleanups in the fbcon and omapfb drivers" * tag 'fbdev-for-7.0-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/linux-fbdev: (32 commits) fbcon: Declare struct fb_info.fbcon_par as of type struct fbcon_par fbcon: Remove struct fbcon_display.inverse fbdev: au1200fb: Fix a memory leak in au1200fb_drv_probe() fbdev: ffb: fix corrupted video output on Sun FFB1 fbdev: of_display_timing: Fix device node reference leak in of_get_display_timings() staging: fbtft: Make framebuffer registration message debug-only staging: fbtft: Fix build failure when CONFIG_FB_DEVICE=n fbdev: au1100fb: Check return value of clk_enable() in .resume() printk, vt, fbcon: Remove console_conditional_schedule() fbdev: fix fb_pad_unaligned_buffer mask fbdev: of: display_timing: fix refcount leak in of_get_display_timings() fbdev: vt8500lcdfb: fix missing dma_free_coherent() video/logo: don't select LOGO_LINUX_MONO and LOGO_LINUX_VGA16 by default video/logo: move logo selection logic to Kconfig video/logo: remove logo_mac_clut224 sh: defconfig: remove CONFIG_LOGO_SUPERH_* newport_con: depend on LOGO_LINUX_CLUT224 instead of LOGO_SGI_CLUT224 video/logo: allow custom logo video/logo: add a type parameter to the logo makefile function video/logo: remove orphan .pgm Makefile rule ...
This commit is contained in:
commit
8b3c75a39c
45 files changed
+325
-3257
No files matched your search
-10
@@ -11859,16 +11859,6 @@ F: include/uapi/linux/hyperv.h
|
||||
F: net/vmw_vsock/hyperv_transport.c
|
||||
F: tools/hv/
|
||||
|
||||
HYPER-V FRAMEBUFFER DRIVER
|
||||
M: "K. Y. Srinivasan" <kys@microsoft.com>
|
||||
M: Haiyang Zhang <haiyangz@microsoft.com>
|
||||
M: Wei Liu <wei.liu@kernel.org>
|
||||
M: Dexuan Cui <decui@microsoft.com>
|
||||
L: linux-hyperv@vger.kernel.org
|
||||
S: Obsolete
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/hyperv/linux.git
|
||||
F: drivers/video/fbdev/hyperv_fb.c
|
||||
|
||||
HYPERBUS SUPPORT
|
||||
M: Vignesh Raghavendra <vigneshr@ti.com>
|
||||
R: Tudor Ambarus <tudor.ambarus@linaro.org>
|
||||
|
||||
@@ -60,8 +60,6 @@ CONFIG_LOGO=y
|
||||
# CONFIG_LOGO_LINUX_MONO is not set
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
# CONFIG_LOGO_LINUX_CLUT224 is not set
|
||||
# CONFIG_LOGO_SUPERH_MONO is not set
|
||||
# CONFIG_LOGO_SUPERH_VGA16 is not set
|
||||
# CONFIG_DNOTIFY is not set
|
||||
CONFIG_PROC_KCORE=y
|
||||
CONFIG_TMPFS=y
|
||||
|
||||
@@ -78,8 +78,6 @@ CONFIG_LOGO=y
|
||||
# CONFIG_LOGO_LINUX_MONO is not set
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
# CONFIG_LOGO_LINUX_CLUT224 is not set
|
||||
# CONFIG_LOGO_SUPERH_MONO is not set
|
||||
# CONFIG_LOGO_SUPERH_VGA16 is not set
|
||||
CONFIG_SOUND=y
|
||||
CONFIG_SND=y
|
||||
CONFIG_SND_SEQUENCER=y
|
||||
|
||||
@@ -66,8 +66,6 @@ CONFIG_LOGO=y
|
||||
# CONFIG_LOGO_LINUX_MONO is not set
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
# CONFIG_LOGO_LINUX_CLUT224 is not set
|
||||
# CONFIG_LOGO_SUPERH_MONO is not set
|
||||
# CONFIG_LOGO_SUPERH_CLUT224 is not set
|
||||
CONFIG_USB_GADGET=y
|
||||
CONFIG_USB_CDC_COMPOSITE=m
|
||||
CONFIG_MMC=y
|
||||
|
||||
@@ -71,8 +71,6 @@ CONFIG_LOGO=y
|
||||
# CONFIG_LOGO_LINUX_MONO is not set
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
# CONFIG_LOGO_LINUX_CLUT224 is not set
|
||||
# CONFIG_LOGO_SUPERH_MONO is not set
|
||||
# CONFIG_LOGO_SUPERH_CLUT224 is not set
|
||||
CONFIG_USB_GADGET=y
|
||||
CONFIG_USB_GADGET_M66592=y
|
||||
CONFIG_USB_G_SERIAL=m
|
||||
|
||||
@@ -50,8 +50,6 @@ CONFIG_LOGO=y
|
||||
# CONFIG_LOGO_LINUX_MONO is not set
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
# CONFIG_LOGO_LINUX_CLUT224 is not set
|
||||
# CONFIG_LOGO_SUPERH_MONO is not set
|
||||
# CONFIG_LOGO_SUPERH_VGA16 is not set
|
||||
CONFIG_SOUND=y
|
||||
CONFIG_SND=m
|
||||
CONFIG_SND_YMFPCI=m
|
||||
|
||||
@@ -55,8 +55,6 @@ CONFIG_LOGO=y
|
||||
# CONFIG_LOGO_LINUX_MONO is not set
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
# CONFIG_LOGO_LINUX_CLUT224 is not set
|
||||
# CONFIG_LOGO_SUPERH_MONO is not set
|
||||
# CONFIG_LOGO_SUPERH_VGA16 is not set
|
||||
CONFIG_SOUND=y
|
||||
CONFIG_SND=m
|
||||
CONFIG_SND_YMFPCI=m
|
||||
|
||||
@@ -79,8 +79,6 @@ CONFIG_LOGO=y
|
||||
# CONFIG_LOGO_LINUX_MONO is not set
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
# CONFIG_LOGO_LINUX_CLUT224 is not set
|
||||
# CONFIG_LOGO_SUPERH_MONO is not set
|
||||
# CONFIG_LOGO_SUPERH_VGA16 is not set
|
||||
CONFIG_SOUND=y
|
||||
CONFIG_SND=m
|
||||
# CONFIG_SND_DRIVERS is not set
|
||||
|
||||
@@ -66,8 +66,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_LOGO=y
|
||||
# CONFIG_LOGO_LINUX_MONO is not set
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
# CONFIG_LOGO_SUPERH_MONO is not set
|
||||
# CONFIG_LOGO_SUPERH_VGA16 is not set
|
||||
CONFIG_SOUND=y
|
||||
CONFIG_SOUND_PRIME=y
|
||||
CONFIG_HID_A4TECH=y
|
||||
|
||||
@@ -60,9 +60,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_LOGO=y
|
||||
# CONFIG_LOGO_LINUX_MONO is not set
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
# CONFIG_LOGO_SUPERH_MONO is not set
|
||||
# CONFIG_LOGO_SUPERH_VGA16 is not set
|
||||
# CONFIG_LOGO_SUPERH_CLUT224 is not set
|
||||
CONFIG_HID_A4TECH=y
|
||||
CONFIG_HID_APPLE=y
|
||||
CONFIG_HID_BELKIN=y
|
||||
|
||||
@@ -86,9 +86,6 @@ CONFIG_FRAMEBUFFER_CONSOLE=y
|
||||
CONFIG_LOGO=y
|
||||
# CONFIG_LOGO_LINUX_MONO is not set
|
||||
# CONFIG_LOGO_LINUX_VGA16 is not set
|
||||
# CONFIG_LOGO_SUPERH_MONO is not set
|
||||
# CONFIG_LOGO_SUPERH_VGA16 is not set
|
||||
# CONFIG_LOGO_SUPERH_CLUT224 is not set
|
||||
CONFIG_HID_A4TECH=y
|
||||
CONFIG_HID_APPLE=y
|
||||
CONFIG_HID_BELKIN=y
|
||||
|
||||
@@ -265,6 +265,152 @@ config DRM_SCHED
|
||||
tristate
|
||||
depends on DRM
|
||||
|
||||
source "drivers/gpu/drm/sysfb/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/arm/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/radeon/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/amd/amdgpu/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/nouveau/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/nova/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/i915/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/xe/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/kmb/Kconfig"
|
||||
|
||||
config DRM_VGEM
|
||||
tristate "Virtual GEM provider"
|
||||
depends on DRM && MMU
|
||||
select DRM_GEM_SHMEM_HELPER
|
||||
help
|
||||
Choose this option to get a virtual graphics memory manager,
|
||||
as used by Mesa's software renderer for enhanced performance.
|
||||
If M is selected the module will be called vgem.
|
||||
|
||||
source "drivers/gpu/drm/vkms/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/exynos/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/rockchip/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/vmwgfx/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/gma500/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/udl/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/ast/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/mgag200/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/armada/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/atmel-hlcdc/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/renesas/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/sun4i/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/omapdrm/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/tilcdc/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/qxl/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/virtio/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/msm/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/fsl-dcu/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/tegra/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/stm/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/panel/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/bridge/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/sti/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/imx/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/ingenic/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/v3d/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/vc4/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/loongson/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/etnaviv/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/hisilicon/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/logicvc/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/mediatek/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/mxsfb/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/meson/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/tiny/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/pl111/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/tve200/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/xen/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/vboxvideo/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/lima/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/panfrost/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/panthor/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/aspeed/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/mcde/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/tidss/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/adp/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/xlnx/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/gud/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/sitronix/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/solomon/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/sprd/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/imagination/Kconfig"
|
||||
|
||||
source "drivers/gpu/drm/tyr/Kconfig"
|
||||
|
||||
config DRM_HYPERV
|
||||
tristate "DRM Support for Hyper-V synthetic video device"
|
||||
depends on DRM && PCI && HYPERV_VMBUS
|
||||
select DRM_CLIENT_SELECTION
|
||||
select DRM_KMS_HELPER
|
||||
select DRM_GEM_SHMEM_HELPER
|
||||
help
|
||||
This is a KMS driver for Hyper-V synthetic video device. Choose this
|
||||
option if you would like to enable drm driver for Hyper-V virtual
|
||||
machine.
|
||||
|
||||
If M is selected the module will be called hyperv_drm.
|
||||
|
||||
# Separate option as not all DRM drivers use it
|
||||
config DRM_PANEL_BACKLIGHT_QUIRKS
|
||||
tristate
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright 2021 Microsoft
|
||||
*
|
||||
* Portions of this code is derived from hyperv_fb.c
|
||||
*/
|
||||
|
||||
#include <linux/hyperv.h>
|
||||
@@ -304,16 +302,13 @@ int hyperv_update_situation(struct hv_device *hdev, u8 active, u32 bpp,
|
||||
* but the Hyper-V host still draws a point as an extra mouse pointer,
|
||||
* which is unwanted, especially when Xorg is running.
|
||||
*
|
||||
* The hyperv_fb driver uses synthvid_send_ptr() to hide the unwanted
|
||||
* pointer, by setting msg.ptr_pos.is_visible = 1 and setting the
|
||||
* msg.ptr_shape.data. Note: setting msg.ptr_pos.is_visible to 0 doesn't
|
||||
* Hide the unwanted pointer, by setting msg.ptr_pos.is_visible = 1 and setting
|
||||
* the msg.ptr_shape.data. Note: setting msg.ptr_pos.is_visible to 0 doesn't
|
||||
* work in tests.
|
||||
*
|
||||
* Copy synthvid_send_ptr() to hyperv_drm and rename it to
|
||||
* hyperv_hide_hw_ptr(). Note: hyperv_hide_hw_ptr() is also called in the
|
||||
* handler of the SYNTHVID_FEATURE_CHANGE event, otherwise the host still
|
||||
* draws an extra unwanted mouse pointer after the VM Connection window is
|
||||
* closed and reopened.
|
||||
* The hyperv_hide_hw_ptr() is also called in the handler of the
|
||||
* SYNTHVID_FEATURE_CHANGE event, otherwise the host still draws an extra
|
||||
* unwanted mouse pointer after the VM Connection window is closed and reopened.
|
||||
*/
|
||||
int hyperv_hide_hw_ptr(struct hv_device *hdev)
|
||||
{
|
||||
|
||||
@@ -2356,8 +2356,8 @@ static void __maybe_unused vmbus_reserve_fb(void)
|
||||
}
|
||||
|
||||
/*
|
||||
* Release the PCI device so hyperv_drm or hyperv_fb driver can
|
||||
* grab it later.
|
||||
* Release the PCI device so hyperv_drm driver can grab it
|
||||
* later.
|
||||
*/
|
||||
pci_dev_put(pdev);
|
||||
}
|
||||
|
||||
@@ -2,11 +2,14 @@
|
||||
menuconfig FB_TFT
|
||||
tristate "Support for small TFT LCD display modules"
|
||||
depends on FB && SPI
|
||||
depends on FB_DEVICE
|
||||
depends on BACKLIGHT_CLASS_DEVICE
|
||||
depends on GPIOLIB || COMPILE_TEST
|
||||
select FB_BACKLIGHT
|
||||
select FB_SYSMEM_HELPERS_DEFERRED
|
||||
help
|
||||
Support for small TFT LCD display modules over SPI bus. FB_DEVICE
|
||||
is not required, but if enabled, provides sysfs interface for debugging
|
||||
and gamma curve configuration.
|
||||
|
||||
if FB_TFT
|
||||
|
||||
|
||||
@@ -365,9 +365,9 @@ static int fbtft_fb_setcolreg(unsigned int regno, unsigned int red,
|
||||
unsigned int val;
|
||||
int ret = 1;
|
||||
|
||||
dev_dbg(info->dev,
|
||||
"%s(regno=%u, red=0x%X, green=0x%X, blue=0x%X, trans=0x%X)\n",
|
||||
__func__, regno, red, green, blue, transp);
|
||||
fb_dbg(info,
|
||||
"regno=%u, red=0x%X, green=0x%X, blue=0x%X, trans=0x%X\n",
|
||||
regno, red, green, blue, transp);
|
||||
|
||||
switch (info->fix.visual) {
|
||||
case FB_VISUAL_TRUECOLOR:
|
||||
@@ -391,8 +391,7 @@ static int fbtft_fb_blank(int blank, struct fb_info *info)
|
||||
struct fbtft_par *par = info->par;
|
||||
int ret = -EINVAL;
|
||||
|
||||
dev_dbg(info->dev, "%s(blank=%d)\n",
|
||||
__func__, blank);
|
||||
fb_dbg(info, "blank=%d\n", blank);
|
||||
|
||||
if (!par->fbtftops.blank)
|
||||
return ret;
|
||||
@@ -793,11 +792,11 @@ int fbtft_register_framebuffer(struct fb_info *fb_info)
|
||||
if (spi)
|
||||
sprintf(text2, ", spi%d.%d at %d MHz", spi->controller->bus_num,
|
||||
spi_get_chipselect(spi, 0), spi->max_speed_hz / 1000000);
|
||||
dev_info(fb_info->dev,
|
||||
"%s frame buffer, %dx%d, %d KiB video memory%s, fps=%lu%s\n",
|
||||
fb_info->fix.id, fb_info->var.xres, fb_info->var.yres,
|
||||
fb_info->fix.smem_len >> 10, text1,
|
||||
HZ / fb_info->fbdefio->delay, text2);
|
||||
fb_dbg(fb_info,
|
||||
"%s frame buffer, %dx%d, %d KiB video memory%s, fps=%lu%s\n",
|
||||
fb_info->fix.id, fb_info->var.xres, fb_info->var.yres,
|
||||
fb_info->fix.smem_len >> 10, text1,
|
||||
HZ / fb_info->fbdefio->delay, text2);
|
||||
|
||||
/* Turn on backlight if available */
|
||||
if (fb_info->bl_dev) {
|
||||
|
||||
@@ -203,14 +203,26 @@ static struct device_attribute debug_device_attr =
|
||||
|
||||
void fbtft_sysfs_init(struct fbtft_par *par)
|
||||
{
|
||||
device_create_file(par->info->dev, &debug_device_attr);
|
||||
struct device *dev;
|
||||
|
||||
dev = dev_of_fbinfo(par->info);
|
||||
if (!dev)
|
||||
return;
|
||||
|
||||
device_create_file(dev, &debug_device_attr);
|
||||
if (par->gamma.curves && par->fbtftops.set_gamma)
|
||||
device_create_file(par->info->dev, &gamma_device_attrs[0]);
|
||||
device_create_file(dev, &gamma_device_attrs[0]);
|
||||
}
|
||||
|
||||
void fbtft_sysfs_exit(struct fbtft_par *par)
|
||||
{
|
||||
device_remove_file(par->info->dev, &debug_device_attr);
|
||||
struct device *dev;
|
||||
|
||||
dev = dev_of_fbinfo(par->info);
|
||||
if (!dev)
|
||||
return;
|
||||
|
||||
device_remove_file(dev, &debug_device_attr);
|
||||
if (par->gamma.curves && par->fbtftops.set_gamma)
|
||||
device_remove_file(par->info->dev, &gamma_device_attrs[0]);
|
||||
device_remove_file(dev, &gamma_device_attrs[0]);
|
||||
}
|
||||
@@ -3230,7 +3230,6 @@ rescan_last_byte:
|
||||
goto rescan_last_byte;
|
||||
}
|
||||
con_flush(vc, &draw);
|
||||
console_conditional_schedule();
|
||||
notify_update(vc);
|
||||
|
||||
return n;
|
||||
|
||||
@@ -95,7 +95,7 @@ static inline void newport_init_cmap(void)
|
||||
|
||||
static const struct linux_logo *newport_show_logo(void)
|
||||
{
|
||||
#ifdef CONFIG_LOGO_SGI_CLUT224
|
||||
#ifdef CONFIG_LOGO_LINUX_CLUT224
|
||||
const struct linux_logo *logo = fb_find_logo(8);
|
||||
const unsigned char *clut;
|
||||
const unsigned char *data;
|
||||
@@ -127,7 +127,7 @@ static const struct linux_logo *newport_show_logo(void)
|
||||
return logo;
|
||||
#else
|
||||
return NULL;
|
||||
#endif /* CONFIG_LOGO_SGI_CLUT224 */
|
||||
#endif /* CONFIG_LOGO_LINUX_CLUT224 */
|
||||
}
|
||||
|
||||
static inline void newport_clear_screen(int xstart, int ystart, int xend,
|
||||
|
||||
@@ -1770,17 +1770,6 @@ config FB_BROADSHEET
|
||||
and could also have been called by other names when coupled with
|
||||
a bridge adapter.
|
||||
|
||||
config FB_HYPERV
|
||||
tristate "Microsoft Hyper-V Synthetic Video support (DEPRECATED)"
|
||||
depends on FB && HYPERV_VMBUS
|
||||
select DMA_CMA if HAVE_DMA_CONTIGUOUS && CMA
|
||||
select FB_IOMEM_HELPERS_DEFERRED
|
||||
help
|
||||
This framebuffer driver supports Microsoft Hyper-V Synthetic Video.
|
||||
|
||||
This driver is deprecated, please use the Hyper-V DRM driver at
|
||||
drivers/gpu/drm/hyperv (CONFIG_DRM_HYPERV) instead.
|
||||
|
||||
config FB_SIMPLE
|
||||
tristate "Simple framebuffer support"
|
||||
depends on FB
|
||||
|
||||
@@ -111,7 +111,6 @@ obj-y += omap2/
|
||||
obj-$(CONFIG_XEN_FBDEV_FRONTEND) += xen-fbfront.o
|
||||
obj-$(CONFIG_FB_CARMINE) += carminefb.o
|
||||
obj-$(CONFIG_FB_MB862XX) += mb862xx/
|
||||
obj-$(CONFIG_FB_HYPERV) += hyperv_fb.o
|
||||
obj-$(CONFIG_FB_OPENCORES) += ocfb.o
|
||||
obj-$(CONFIG_FB_SM712) += sm712fb.o
|
||||
|
||||
|
||||
@@ -567,13 +567,16 @@ int au1100fb_drv_suspend(struct platform_device *dev, pm_message_t state)
|
||||
int au1100fb_drv_resume(struct platform_device *dev)
|
||||
{
|
||||
struct au1100fb_device *fbdev = platform_get_drvdata(dev);
|
||||
int ret;
|
||||
|
||||
if (!fbdev)
|
||||
return 0;
|
||||
|
||||
memcpy(fbdev->regs, &fbregs, sizeof(struct au1100fb_regs));
|
||||
|
||||
clk_enable(fbdev->lcdclk);
|
||||
ret = clk_enable(fbdev->lcdclk);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
/* Unblank the LCD */
|
||||
au1100fb_fb_blank(VESA_NO_BLANKING, &fbdev->info);
|
||||
|
||||
@@ -1724,8 +1724,10 @@ static int au1200fb_drv_probe(struct platform_device *dev)
|
||||
|
||||
/* Now hook interrupt too */
|
||||
irq = platform_get_irq(dev, 0);
|
||||
if (irq < 0)
|
||||
return irq;
|
||||
if (irq < 0) {
|
||||
ret = irq;
|
||||
goto failed;
|
||||
}
|
||||
|
||||
ret = request_irq(irq, au1200fb_handle_irq,
|
||||
IRQF_SHARED, "lcd", (void *)dev);
|
||||
|
||||
@@ -1068,7 +1068,8 @@ static void fbcon_init(struct vc_data *vc, bool init)
|
||||
return;
|
||||
|
||||
if (!info->fbcon_par)
|
||||
con2fb_acquire_newinfo(vc, info, vc->vc_num);
|
||||
if (con2fb_acquire_newinfo(vc, info, vc->vc_num))
|
||||
return;
|
||||
|
||||
/* If we are not the first console on this
|
||||
fb, copy the font from that console */
|
||||
@@ -1607,12 +1608,10 @@ static void fbcon_redraw_move(struct vc_data *vc, struct fbcon_display *p,
|
||||
start = s;
|
||||
}
|
||||
}
|
||||
console_conditional_schedule();
|
||||
s++;
|
||||
} while (s < le);
|
||||
if (s > start)
|
||||
fbcon_putcs(vc, start, s - start, dy, x);
|
||||
console_conditional_schedule();
|
||||
dy++;
|
||||
}
|
||||
}
|
||||
@@ -1648,14 +1647,12 @@ static void fbcon_redraw_blit(struct vc_data *vc, struct fb_info *info,
|
||||
}
|
||||
|
||||
scr_writew(c, d);
|
||||
console_conditional_schedule();
|
||||
s++;
|
||||
d++;
|
||||
} while (s < le);
|
||||
if (s > start)
|
||||
par->bitops->bmove(vc, info, line + ycount, x, line, x, 1,
|
||||
s - start);
|
||||
console_conditional_schedule();
|
||||
if (ycount > 0)
|
||||
line++;
|
||||
else {
|
||||
@@ -1703,13 +1700,11 @@ static void fbcon_redraw(struct vc_data *vc, int line, int count, int offset)
|
||||
}
|
||||
}
|
||||
scr_writew(c, d);
|
||||
console_conditional_schedule();
|
||||
s++;
|
||||
d++;
|
||||
} while (s < le);
|
||||
if (s > start)
|
||||
fbcon_putcs(vc, start, s - start, line, x);
|
||||
console_conditional_schedule();
|
||||
if (offset > 0)
|
||||
line++;
|
||||
else {
|
||||
|
||||
@@ -30,7 +30,6 @@ struct fbcon_display {
|
||||
#ifdef CONFIG_FRAMEBUFFER_CONSOLE_LEGACY_ACCELERATION
|
||||
u_short scrollmode; /* Scroll Method, use fb_scrollmode() */
|
||||
#endif
|
||||
u_short inverse; /* != 0 text black on white as default */
|
||||
short yscroll; /* Hardware scrolling */
|
||||
int vrows; /* number of virtual rows */
|
||||
int cursor_shape;
|
||||
|
||||
@@ -100,7 +100,7 @@ EXPORT_SYMBOL(fb_pad_aligned_buffer);
|
||||
void fb_pad_unaligned_buffer(u8 *dst, u32 d_pitch, u8 *src, u32 idx, u32 height,
|
||||
u32 shift_high, u32 shift_low, u32 mod)
|
||||
{
|
||||
u8 mask = (u8) (0xfff << shift_high), tmp;
|
||||
u8 mask = (u8) (0xff << shift_high), tmp;
|
||||
int i, j;
|
||||
|
||||
for (i = height; i--; ) {
|
||||
|
||||
@@ -12,8 +12,6 @@
|
||||
|
||||
#include "fb_internal.h"
|
||||
|
||||
#define FB_SYSFS_FLAG_ATTR 1
|
||||
|
||||
static int activate(struct fb_info *fb_info, struct fb_var_screeninfo *var)
|
||||
{
|
||||
int err;
|
||||
@@ -451,33 +449,7 @@ static struct attribute *fb_device_attrs[] = {
|
||||
NULL,
|
||||
};
|
||||
|
||||
static const struct attribute_group fb_device_attr_group = {
|
||||
.attrs = fb_device_attrs,
|
||||
};
|
||||
|
||||
static int fb_init_device(struct fb_info *fb_info)
|
||||
{
|
||||
int ret;
|
||||
|
||||
dev_set_drvdata(fb_info->dev, fb_info);
|
||||
|
||||
fb_info->class_flag |= FB_SYSFS_FLAG_ATTR;
|
||||
|
||||
ret = device_add_group(fb_info->dev, &fb_device_attr_group);
|
||||
if (ret)
|
||||
fb_info->class_flag &= ~FB_SYSFS_FLAG_ATTR;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void fb_cleanup_device(struct fb_info *fb_info)
|
||||
{
|
||||
if (fb_info->class_flag & FB_SYSFS_FLAG_ATTR) {
|
||||
device_remove_group(fb_info->dev, &fb_device_attr_group);
|
||||
|
||||
fb_info->class_flag &= ~FB_SYSFS_FLAG_ATTR;
|
||||
}
|
||||
}
|
||||
ATTRIBUTE_GROUPS(fb_device);
|
||||
|
||||
int fb_device_create(struct fb_info *fb_info)
|
||||
{
|
||||
@@ -485,14 +457,13 @@ int fb_device_create(struct fb_info *fb_info)
|
||||
dev_t devt = MKDEV(FB_MAJOR, node);
|
||||
int ret;
|
||||
|
||||
fb_info->dev = device_create(fb_class, fb_info->device, devt, NULL, "fb%d", node);
|
||||
fb_info->dev = device_create_with_groups(fb_class, fb_info->device, devt, fb_info,
|
||||
fb_device_groups, "fb%d", node);
|
||||
if (IS_ERR(fb_info->dev)) {
|
||||
/* Not fatal */
|
||||
ret = PTR_ERR(fb_info->dev);
|
||||
pr_warn("Unable to create device for framebuffer %d; error %d\n", node, ret);
|
||||
fb_info->dev = NULL;
|
||||
} else {
|
||||
fb_init_device(fb_info);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -505,7 +476,6 @@ void fb_device_destroy(struct fb_info *fb_info)
|
||||
if (!fb_info->dev)
|
||||
return;
|
||||
|
||||
fb_cleanup_device(fb_info);
|
||||
device_destroy(fb_class, devt);
|
||||
fb_info->dev = NULL;
|
||||
}
|
||||
@@ -335,6 +335,9 @@ struct ffb_dac {
|
||||
};
|
||||
|
||||
#define FFB_DAC_UCTRL 0x1001 /* User Control */
|
||||
#define FFB_DAC_UCTRL_OVENAB 0x00000008 /* Overlay Enable */
|
||||
#define FFB_DAC_UCTRL_WMODE 0x00000030 /* Window Mode */
|
||||
#define FFB_DAC_UCTRL_WM_COMB 0x00000000 /* Window Mode = Combined */
|
||||
#define FFB_DAC_UCTRL_MANREV 0x00000f00 /* 4-bit Manufacturing Revision */
|
||||
#define FFB_DAC_UCTRL_MANREV_SHIFT 8
|
||||
#define FFB_DAC_TGEN 0x6000 /* Timing Generator */
|
||||
@@ -425,7 +428,7 @@ static void ffb_switch_from_graph(struct ffb_par *par)
|
||||
{
|
||||
struct ffb_fbc __iomem *fbc = par->fbc;
|
||||
struct ffb_dac __iomem *dac = par->dac;
|
||||
unsigned long flags;
|
||||
unsigned long flags, uctrl;
|
||||
|
||||
spin_lock_irqsave(&par->lock, flags);
|
||||
FFBWait(par);
|
||||
@@ -450,6 +453,15 @@ static void ffb_switch_from_graph(struct ffb_par *par)
|
||||
upa_writel((FFB_DAC_CUR_CTRL_P0 |
|
||||
FFB_DAC_CUR_CTRL_P1), &dac->value2);
|
||||
|
||||
/* Disable overlay and window modes. */
|
||||
upa_writel(FFB_DAC_UCTRL, &dac->type);
|
||||
uctrl = upa_readl(&dac->value);
|
||||
uctrl &= ~FFB_DAC_UCTRL_WMODE;
|
||||
uctrl |= FFB_DAC_UCTRL_WM_COMB;
|
||||
uctrl &= ~FFB_DAC_UCTRL_OVENAB;
|
||||
upa_writel(FFB_DAC_UCTRL, &dac->type);
|
||||
upa_writel(uctrl, &dac->value);
|
||||
|
||||
spin_unlock_irqrestore(&par->lock, flags);
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -846,12 +846,10 @@ static int omapfb_setup_mem(struct fb_info *fbi, struct omapfb_mem_info *mi)
|
||||
* be reenabled unless its size is > 0.
|
||||
*/
|
||||
if (old_size != size && size) {
|
||||
if (size) {
|
||||
memcpy(new_var, &fbi->var, sizeof(*new_var));
|
||||
r = set_fb_var(fbi, new_var);
|
||||
if (r < 0)
|
||||
goto out;
|
||||
}
|
||||
memcpy(new_var, &fbi->var, sizeof(*new_var));
|
||||
r = set_fb_var(fbi, new_var);
|
||||
if (r < 0)
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (fbdev->ctrl->sync)
|
||||
|
||||
@@ -5,7 +5,6 @@ config OMAP2_VRFB
|
||||
menuconfig FB_OMAP2
|
||||
tristate "OMAP2+ frame buffer support"
|
||||
depends on FB
|
||||
depends on FB_DEVICE
|
||||
depends on DRM_OMAP = n
|
||||
depends on GPIOLIB
|
||||
select FB_OMAP2_DSS
|
||||
@@ -13,6 +12,8 @@ menuconfig FB_OMAP2
|
||||
select FB_IOMEM_HELPERS
|
||||
help
|
||||
Frame buffer driver for OMAP2+ based boards.
|
||||
FB_DEVICE is not required, but if enabled, provides sysfs interface
|
||||
for framebuffer configuration and debugging.
|
||||
|
||||
if FB_OMAP2
|
||||
|
||||
|
||||
@@ -558,10 +558,15 @@ int omapfb_create_sysfs(struct omapfb2_device *fbdev)
|
||||
|
||||
DBG("create sysfs for fbs\n");
|
||||
for (i = 0; i < fbdev->num_fbs; i++) {
|
||||
struct device *dev;
|
||||
int t;
|
||||
|
||||
dev = dev_of_fbinfo(fbdev->fbs[i]);
|
||||
if (!dev)
|
||||
continue;
|
||||
|
||||
for (t = 0; t < ARRAY_SIZE(omapfb_attrs); t++) {
|
||||
r = device_create_file(fbdev->fbs[i]->dev,
|
||||
&omapfb_attrs[t]);
|
||||
r = device_create_file(dev, &omapfb_attrs[t]);
|
||||
|
||||
if (r) {
|
||||
dev_err(fbdev->dev, "failed to create sysfs "
|
||||
@@ -580,9 +585,14 @@ void omapfb_remove_sysfs(struct omapfb2_device *fbdev)
|
||||
|
||||
DBG("remove sysfs for fbs\n");
|
||||
for (i = 0; i < fbdev->num_fbs; i++) {
|
||||
struct device *dev;
|
||||
|
||||
dev = dev_of_fbinfo(fbdev->fbs[i]);
|
||||
if (!dev)
|
||||
continue;
|
||||
|
||||
for (t = 0; t < ARRAY_SIZE(omapfb_attrs); t++)
|
||||
device_remove_file(fbdev->fbs[i]->dev,
|
||||
&omapfb_attrs[t]);
|
||||
device_remove_file(dev, &omapfb_attrs[t]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -436,6 +436,9 @@ static char nv3_arb(nv3_fifo_info * res_info, nv3_sim_state * state, nv3_arb_in
|
||||
vmisses = 2;
|
||||
eburst_size = state->memory_width * 1;
|
||||
mburst_size = 32;
|
||||
if (!state->mclk_khz)
|
||||
return (0);
|
||||
|
||||
gns = 1000000 * (gmisses*state->mem_page_miss + state->mem_latency)/state->mclk_khz;
|
||||
ainfo->by_gfacc = gns*ainfo->gdrain_rate/1000000;
|
||||
ainfo->wcmocc = 0;
|
||||
|
||||
@@ -1343,14 +1343,17 @@ static DEVICE_ATTR_RW(overlay_mode);
|
||||
static DEVICE_ATTR_RW(overlay_position);
|
||||
static DEVICE_ATTR_RW(overlay_rop3);
|
||||
|
||||
static struct attribute *overlay_sysfs_attrs[] = {
|
||||
static struct attribute *overlay_sysfs_attrs[] __maybe_unused = {
|
||||
&dev_attr_overlay_alpha.attr,
|
||||
&dev_attr_overlay_mode.attr,
|
||||
&dev_attr_overlay_position.attr,
|
||||
&dev_attr_overlay_rop3.attr,
|
||||
NULL,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_FB_DEVICE
|
||||
ATTRIBUTE_GROUPS(overlay_sysfs);
|
||||
#endif
|
||||
|
||||
static const struct fb_fix_screeninfo sh_mobile_lcdc_overlay_fix = {
|
||||
.id = "SH Mobile LCDC",
|
||||
|
||||
@@ -932,7 +932,6 @@ static int ufx_ops_ioctl(struct fb_info *info, unsigned int cmd,
|
||||
unsigned long arg)
|
||||
{
|
||||
struct ufx_data *dev = info->par;
|
||||
struct dloarea *area = NULL;
|
||||
|
||||
if (!atomic_read(&dev->usb_active))
|
||||
return 0;
|
||||
@@ -947,6 +946,10 @@ static int ufx_ops_ioctl(struct fb_info *info, unsigned int cmd,
|
||||
|
||||
/* TODO: Help propose a standard fb.h ioctl to report mmap damage */
|
||||
if (cmd == UFX_IOCTL_REPORT_DAMAGE) {
|
||||
struct dloarea *area __free(kfree) = kmalloc(sizeof(*area), GFP_KERNEL);
|
||||
if (!area)
|
||||
return -ENOMEM;
|
||||
|
||||
/* If we have a damage-aware client, turn fb_defio "off"
|
||||
* To avoid perf imact of unnecessary page fault handling.
|
||||
* Done by resetting the delay for this fb_info to a very
|
||||
@@ -956,7 +959,8 @@ static int ufx_ops_ioctl(struct fb_info *info, unsigned int cmd,
|
||||
if (info->fbdefio)
|
||||
info->fbdefio->delay = UFX_DEFIO_WRITE_DISABLE;
|
||||
|
||||
area = (struct dloarea *)arg;
|
||||
if (copy_from_user(area, (u8 __user *)arg, sizeof(*area)))
|
||||
return -EFAULT;
|
||||
|
||||
if (area->x < 0)
|
||||
area->x = 0;
|
||||
|
||||
@@ -369,7 +369,7 @@ static int vt8500lcd_probe(struct platform_device *pdev)
|
||||
if (fbi->palette_cpu == NULL) {
|
||||
dev_err(&pdev->dev, "Failed to allocate palette buffer\n");
|
||||
ret = -ENOMEM;
|
||||
goto failed_free_io;
|
||||
goto failed_free_mem_virt;
|
||||
}
|
||||
|
||||
irq = platform_get_irq(pdev, 0);
|
||||
@@ -432,6 +432,9 @@ failed_free_irq:
|
||||
failed_free_palette:
|
||||
dma_free_coherent(&pdev->dev, fbi->palette_size,
|
||||
fbi->palette_cpu, fbi->palette_phys);
|
||||
failed_free_mem_virt:
|
||||
dma_free_coherent(&pdev->dev, fbi->fb.fix.smem_len,
|
||||
fbi->fb.screen_buffer, fbi->fb.fix.smem_start);
|
||||
failed_free_io:
|
||||
iounmap(fbi->regbase);
|
||||
failed_free_res:
|
||||
|
||||
+45
-39
@@ -20,54 +20,60 @@ config FB_LOGO_EXTRA
|
||||
|
||||
config LOGO_LINUX_MONO
|
||||
bool "Standard black and white Linux logo"
|
||||
default y
|
||||
|
||||
config LOGO_LINUX_MONO_FILE
|
||||
string "Monochrome logo .pbm file"
|
||||
depends on LOGO_LINUX_MONO
|
||||
default "drivers/video/logo/logo_superh_mono.pbm" if SUPERH
|
||||
default "drivers/video/logo/logo_linux_mono.pbm"
|
||||
help
|
||||
Takes a path to a monochromatic logo in the portable pixmap file
|
||||
format (.pbm). This defaults to the Tux penguin.
|
||||
|
||||
For example, the below ImageMagick command can be used to reduce
|
||||
an image to black and white and convert it into a pbm file:
|
||||
|
||||
magick source_image -compress none destination.pbm
|
||||
|
||||
config LOGO_LINUX_VGA16
|
||||
bool "Standard 16-color Linux logo"
|
||||
default y
|
||||
|
||||
config LOGO_LINUX_VGA16_FILE
|
||||
string "16-color logo .ppm file"
|
||||
depends on LOGO_LINUX_VGA16
|
||||
default "drivers/video/logo/logo_superh_vga16.ppm" if SUPERH
|
||||
default "drivers/video/logo/logo_linux_vga16.ppm"
|
||||
help
|
||||
Takes a path to a logo in the portable pixmap file format (.ppm),
|
||||
using the 16 colors from the drivers/video/logo/clut_vga16.ppm
|
||||
palette. This defaults to the Tux penguin.
|
||||
|
||||
For example, the below ImageMagick command can be used to reduce an
|
||||
image to the VGA 16 colors palette and convert into a ppm file:
|
||||
|
||||
magick source_image -compress none \
|
||||
-remap drivers/video/logo/clut_vga16.ppm destination.ppm
|
||||
|
||||
config LOGO_LINUX_CLUT224
|
||||
bool "Standard 224-color Linux logo"
|
||||
default y
|
||||
|
||||
config LOGO_DEC_CLUT224
|
||||
bool "224-color Digital Equipment Corporation Linux logo"
|
||||
depends on MACH_DECSTATION || ALPHA
|
||||
default y
|
||||
config LOGO_LINUX_CLUT224_FILE
|
||||
string "224-color logo .ppm file"
|
||||
depends on LOGO_LINUX_CLUT224
|
||||
default "drivers/video/logo/logo_dec_clut224.ppm" if MACH_DECSTATION || ALPHA
|
||||
default "drivers/video/logo/logo_parisc_clut224.ppm" if PARISC
|
||||
default "drivers/video/logo/logo_sgi_clut224.ppm" if SGI_IP22 || SGI_IP27 || SGI_IP32
|
||||
default "drivers/video/logo/logo_sun_clut224.ppm" if SPARC
|
||||
default "drivers/video/logo/logo_superh_clut224.ppm" if SUPERH
|
||||
default "drivers/video/logo/logo_linux_clut224.ppm"
|
||||
help
|
||||
Takes a path to a 224-color logo in the portable pixmap file
|
||||
format (.ppm). This defaults to the Tux penguin.
|
||||
|
||||
config LOGO_MAC_CLUT224
|
||||
bool "224-color Macintosh Linux logo"
|
||||
depends on MAC
|
||||
default y
|
||||
For example, the below ImageMagick command can be used to reduce
|
||||
an image palette to 224 colors and convert it into a ppm file:
|
||||
|
||||
config LOGO_PARISC_CLUT224
|
||||
bool "224-color PA-RISC Linux logo"
|
||||
depends on PARISC
|
||||
default y
|
||||
|
||||
config LOGO_SGI_CLUT224
|
||||
bool "224-color SGI Linux logo"
|
||||
depends on SGI_IP22 || SGI_IP27 || SGI_IP32
|
||||
default y
|
||||
|
||||
config LOGO_SUN_CLUT224
|
||||
bool "224-color Sun Linux logo"
|
||||
depends on SPARC
|
||||
default y
|
||||
|
||||
config LOGO_SUPERH_MONO
|
||||
bool "Black and white SuperH Linux logo"
|
||||
depends on SUPERH
|
||||
default y
|
||||
|
||||
config LOGO_SUPERH_VGA16
|
||||
bool "16-color SuperH Linux logo"
|
||||
depends on SUPERH
|
||||
default y
|
||||
|
||||
config LOGO_SUPERH_CLUT224
|
||||
bool "224-color SuperH Linux logo"
|
||||
depends on SUPERH
|
||||
default y
|
||||
magick source_image -compress none -colors 224 destination.ppm
|
||||
|
||||
endif # LOGO
|
||||
+12
-17
@@ -5,14 +5,6 @@ obj-$(CONFIG_LOGO) += logo.o
|
||||
obj-$(CONFIG_LOGO_LINUX_MONO) += logo_linux_mono.o
|
||||
obj-$(CONFIG_LOGO_LINUX_VGA16) += logo_linux_vga16.o
|
||||
obj-$(CONFIG_LOGO_LINUX_CLUT224) += logo_linux_clut224.o
|
||||
obj-$(CONFIG_LOGO_DEC_CLUT224) += logo_dec_clut224.o
|
||||
obj-$(CONFIG_LOGO_MAC_CLUT224) += logo_mac_clut224.o
|
||||
obj-$(CONFIG_LOGO_PARISC_CLUT224) += logo_parisc_clut224.o
|
||||
obj-$(CONFIG_LOGO_SGI_CLUT224) += logo_sgi_clut224.o
|
||||
obj-$(CONFIG_LOGO_SUN_CLUT224) += logo_sun_clut224.o
|
||||
obj-$(CONFIG_LOGO_SUPERH_MONO) += logo_superh_mono.o
|
||||
obj-$(CONFIG_LOGO_SUPERH_VGA16) += logo_superh_vga16.o
|
||||
obj-$(CONFIG_LOGO_SUPERH_CLUT224) += logo_superh_clut224.o
|
||||
|
||||
obj-$(CONFIG_SPU_BASE) += logo_spe_clut224.o
|
||||
|
||||
@@ -20,18 +12,21 @@ obj-$(CONFIG_SPU_BASE) += logo_spe_clut224.o
|
||||
|
||||
hostprogs := pnmtologo
|
||||
|
||||
# Create commands like "pnmtologo -t mono -n logo_mac_mono -o ..."
|
||||
# Create commands like "pnmtologo -t mono -n logo_linux_mono -o ..."
|
||||
quiet_cmd_logo = LOGO $@
|
||||
cmd_logo = $(obj)/pnmtologo -t $(lastword $(subst _, ,$*)) -n $* -o $@ $<
|
||||
cmd_logo = $(obj)/pnmtologo -t $2 -n $(basename $(notdir $@)) -o $@ $<
|
||||
|
||||
$(obj)/%.c: $(src)/%.pbm $(obj)/pnmtologo FORCE
|
||||
$(call if_changed,logo)
|
||||
$(obj)/logo_linux_mono.c: $(CONFIG_LOGO_LINUX_MONO_FILE) $(obj)/pnmtologo FORCE
|
||||
$(call if_changed,logo,mono)
|
||||
|
||||
$(obj)/%.c: $(src)/%.ppm $(obj)/pnmtologo FORCE
|
||||
$(call if_changed,logo)
|
||||
$(obj)/logo_linux_vga16.c: $(CONFIG_LOGO_LINUX_VGA16_FILE) $(obj)/pnmtologo FORCE
|
||||
$(call if_changed,logo,vga16)
|
||||
|
||||
$(obj)/%.c: $(src)/%.pgm $(obj)/pnmtologo FORCE
|
||||
$(call if_changed,logo)
|
||||
$(obj)/logo_linux_clut224.c: $(CONFIG_LOGO_LINUX_CLUT224_FILE) $(obj)/pnmtologo FORCE
|
||||
$(call if_changed,logo,clut224)
|
||||
|
||||
$(obj)/%_clut224.c: $(src)/%_clut224.ppm $(obj)/pnmtologo FORCE
|
||||
$(call if_changed,logo,clut224)
|
||||
|
||||
# generated C files
|
||||
targets += *_mono.c *_vga16.c *_clut224.c *_gray256.c
|
||||
targets += *_mono.c *_vga16.c *_clut224.c
|
||||
@@ -48,59 +48,21 @@ const struct linux_logo * __ref fb_find_logo(int depth)
|
||||
if (nologo || logos_freed)
|
||||
return NULL;
|
||||
|
||||
if (depth >= 1) {
|
||||
#ifdef CONFIG_LOGO_LINUX_MONO
|
||||
/* Generic Linux logo */
|
||||
if (depth >= 1)
|
||||
logo = &logo_linux_mono;
|
||||
#endif
|
||||
#ifdef CONFIG_LOGO_SUPERH_MONO
|
||||
/* SuperH Linux logo */
|
||||
logo = &logo_superh_mono;
|
||||
#endif
|
||||
}
|
||||
|
||||
if (depth >= 4) {
|
||||
#ifdef CONFIG_LOGO_LINUX_VGA16
|
||||
/* Generic Linux logo */
|
||||
if (depth >= 4)
|
||||
logo = &logo_linux_vga16;
|
||||
#endif
|
||||
#ifdef CONFIG_LOGO_SUPERH_VGA16
|
||||
/* SuperH Linux logo */
|
||||
logo = &logo_superh_vga16;
|
||||
#endif
|
||||
}
|
||||
|
||||
if (depth >= 8) {
|
||||
#ifdef CONFIG_LOGO_LINUX_CLUT224
|
||||
/* Generic Linux logo */
|
||||
if (depth >= 8)
|
||||
logo = &logo_linux_clut224;
|
||||
#endif
|
||||
#ifdef CONFIG_LOGO_DEC_CLUT224
|
||||
/* DEC Linux logo on MIPS/MIPS64 or ALPHA */
|
||||
logo = &logo_dec_clut224;
|
||||
#endif
|
||||
#ifdef CONFIG_LOGO_MAC_CLUT224
|
||||
/* Macintosh Linux logo on m68k */
|
||||
if (MACH_IS_MAC)
|
||||
logo = &logo_mac_clut224;
|
||||
#endif
|
||||
#ifdef CONFIG_LOGO_PARISC_CLUT224
|
||||
/* PA-RISC Linux logo */
|
||||
logo = &logo_parisc_clut224;
|
||||
#endif
|
||||
#ifdef CONFIG_LOGO_SGI_CLUT224
|
||||
/* SGI Linux logo on MIPS/MIPS64 */
|
||||
logo = &logo_sgi_clut224;
|
||||
#endif
|
||||
#ifdef CONFIG_LOGO_SUN_CLUT224
|
||||
/* Sun Linux logo */
|
||||
logo = &logo_sun_clut224;
|
||||
#endif
|
||||
#ifdef CONFIG_LOGO_SUPERH_CLUT224
|
||||
/* SuperH Linux logo */
|
||||
logo = &logo_superh_clut224;
|
||||
#endif
|
||||
}
|
||||
|
||||
return logo;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(fb_find_logo);
|
||||
File diff suppressed because it is too large.
Load diff
@@ -181,7 +181,7 @@ struct display_timings *of_get_display_timings(const struct device_node *np)
|
||||
if (disp->num_timings == 0) {
|
||||
/* should never happen, as entry was already found above */
|
||||
pr_err("%pOF: no timings specified\n", np);
|
||||
goto entryfail;
|
||||
goto timingfail;
|
||||
}
|
||||
|
||||
disp->timings = kcalloc(disp->num_timings,
|
||||
@@ -189,13 +189,13 @@ struct display_timings *of_get_display_timings(const struct device_node *np)
|
||||
GFP_KERNEL);
|
||||
if (!disp->timings) {
|
||||
pr_err("%pOF: could not allocate timings array\n", np);
|
||||
goto entryfail;
|
||||
goto timingfail;
|
||||
}
|
||||
|
||||
disp->num_timings = 0;
|
||||
disp->native_mode = 0;
|
||||
|
||||
for_each_child_of_node(timings_np, entry) {
|
||||
for_each_child_of_node_scoped(timings_np, child) {
|
||||
struct display_timing *dt;
|
||||
int r;
|
||||
|
||||
@@ -206,7 +206,7 @@ struct display_timings *of_get_display_timings(const struct device_node *np)
|
||||
goto timingfail;
|
||||
}
|
||||
|
||||
r = of_parse_display_timing(entry, dt);
|
||||
r = of_parse_display_timing(child, dt);
|
||||
if (r) {
|
||||
/*
|
||||
* to not encourage wrong devicetrees, fail in case of
|
||||
@@ -218,7 +218,7 @@ struct display_timings *of_get_display_timings(const struct device_node *np)
|
||||
goto timingfail;
|
||||
}
|
||||
|
||||
if (native_mode == entry)
|
||||
if (native_mode == child)
|
||||
disp->native_mode = disp->num_timings;
|
||||
|
||||
disp->timings[disp->num_timings] = dt;
|
||||
|
||||
@@ -697,7 +697,6 @@ extern int unregister_console(struct console *);
|
||||
extern void console_lock(void);
|
||||
extern int console_trylock(void);
|
||||
extern void console_unlock(void);
|
||||
extern void console_conditional_schedule(void);
|
||||
extern void console_unblank(void);
|
||||
extern void console_flush_on_panic(enum con_flush_mode mode);
|
||||
extern struct tty_driver *console_device(int *);
|
||||
|
||||
+11
-2
@@ -18,6 +18,7 @@ struct backlight_device;
|
||||
struct device;
|
||||
struct device_node;
|
||||
struct fb_info;
|
||||
struct fbcon_par;
|
||||
struct file;
|
||||
struct i2c_adapter;
|
||||
struct inode;
|
||||
@@ -493,7 +494,6 @@ struct fb_info {
|
||||
#if defined(CONFIG_FB_DEVICE)
|
||||
struct device *dev; /* This is this fb device */
|
||||
#endif
|
||||
int class_flag; /* private sysfs flags */
|
||||
#ifdef CONFIG_FB_TILEBLITTING
|
||||
struct fb_tile_ops *tileops; /* Tile Blitting */
|
||||
#endif
|
||||
@@ -506,7 +506,7 @@ struct fb_info {
|
||||
#define FBINFO_STATE_RUNNING 0
|
||||
#define FBINFO_STATE_SUSPENDED 1
|
||||
u32 state; /* Hardware state i.e suspend */
|
||||
void *fbcon_par; /* fbcon use-only private area */
|
||||
struct fbcon_par *fbcon_par; /* fbcon use-only private area */
|
||||
/* From here on everything is device dependent */
|
||||
void *par;
|
||||
|
||||
@@ -624,6 +624,15 @@ static inline void unlock_fb_info(struct fb_info *info)
|
||||
mutex_unlock(&info->lock);
|
||||
}
|
||||
|
||||
static inline struct device *dev_of_fbinfo(const struct fb_info *info)
|
||||
{
|
||||
#ifdef CONFIG_FB_DEVICE
|
||||
return info->dev;
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline void __fb_pad_aligned_buffer(u8 *dst, u32 d_pitch,
|
||||
u8 *src, u32 s_pitch, u32 height)
|
||||
{
|
||||
|
||||
@@ -33,14 +33,6 @@ struct linux_logo {
|
||||
extern const struct linux_logo logo_linux_mono;
|
||||
extern const struct linux_logo logo_linux_vga16;
|
||||
extern const struct linux_logo logo_linux_clut224;
|
||||
extern const struct linux_logo logo_dec_clut224;
|
||||
extern const struct linux_logo logo_mac_clut224;
|
||||
extern const struct linux_logo logo_parisc_clut224;
|
||||
extern const struct linux_logo logo_sgi_clut224;
|
||||
extern const struct linux_logo logo_sun_clut224;
|
||||
extern const struct linux_logo logo_superh_mono;
|
||||
extern const struct linux_logo logo_superh_vga16;
|
||||
extern const struct linux_logo logo_superh_clut224;
|
||||
extern const struct linux_logo logo_spe_clut224;
|
||||
|
||||
extern const struct linux_logo *fb_find_logo(int depth);
|
||||
|
||||
@@ -3416,22 +3416,6 @@ void console_unlock(void)
|
||||
}
|
||||
EXPORT_SYMBOL(console_unlock);
|
||||
|
||||
/**
|
||||
* console_conditional_schedule - yield the CPU if required
|
||||
*
|
||||
* If the console code is currently allowed to sleep, and
|
||||
* if this CPU should yield the CPU to another task, do
|
||||
* so here.
|
||||
*
|
||||
* Must be called within console_lock();.
|
||||
*/
|
||||
void __sched console_conditional_schedule(void)
|
||||
{
|
||||
if (console_may_schedule)
|
||||
cond_resched();
|
||||
}
|
||||
EXPORT_SYMBOL(console_conditional_schedule);
|
||||
|
||||
void console_unblank(void)
|
||||
{
|
||||
bool found_unblank = false;
|
||||
|
||||
Reference in new issue
Block a user