diff options
author | Alexandre Oliva <lxoliva@fsfla.org> | 2014-09-03 15:52:27 +0000 |
---|---|---|
committer | Alexandre Oliva <lxoliva@fsfla.org> | 2014-09-03 15:52:27 +0000 |
commit | cb3c4033faee521c605c3adf3d3fc0056879a0ec (patch) | |
tree | c4fdb4933ec9a625280b4cc4067bbe161b8f31db /freed-ora/current | |
parent | d9b2c9ce7c0dc7a886dd0da9b63ff6227d68a51f (diff) | |
download | linux-libre-raptor-cb3c4033faee521c605c3adf3d3fc0056879a0ec.tar.gz linux-libre-raptor-cb3c4033faee521c605c3adf3d3fc0056879a0ec.zip |
3.16.1-301.fc21.gnu
Diffstat (limited to 'freed-ora/current')
-rw-r--r-- | freed-ora/current/f21/Revert-userns-Allow-unprivileged-users-to-create-use.patch | 44 | ||||
-rw-r--r-- | freed-ora/current/f21/arm-qemu-fixdisplay.patch | 472 | ||||
-rw-r--r-- | freed-ora/current/f21/config-arm-generic | 22 | ||||
-rw-r--r-- | freed-ora/current/f21/config-armv7 | 38 | ||||
-rw-r--r-- | freed-ora/current/f21/config-armv7-generic | 22 | ||||
-rw-r--r-- | freed-ora/current/f21/config-generic | 2 | ||||
-rw-r--r-- | freed-ora/current/f21/drm-radeon-Disable-writeback-by-default-on-ppc.patch | 88 | ||||
-rw-r--r-- | freed-ora/current/f21/kernel.spec | 37 | ||||
-rw-r--r-- | freed-ora/current/f21/nfs3_list_one_acl-check-get_acl-result-with-IS_ERR_O.patch | 41 | ||||
-rw-r--r-- | freed-ora/current/f21/serial-460800.patch | 73 |
10 files changed, 569 insertions, 270 deletions
diff --git a/freed-ora/current/f21/Revert-userns-Allow-unprivileged-users-to-create-use.patch b/freed-ora/current/f21/Revert-userns-Allow-unprivileged-users-to-create-use.patch deleted file mode 100644 index cea6bff01..000000000 --- a/freed-ora/current/f21/Revert-userns-Allow-unprivileged-users-to-create-use.patch +++ /dev/null @@ -1,44 +0,0 @@ -Bugzilla: 917708 -Upstream-status: Fedora mustard - -From e3da68be55914bfeedb8866f191cc0958579611d Mon Sep 17 00:00:00 2001 -From: Josh Boyer <jwboyer@fedoraproject.org> -Date: Wed, 13 Nov 2013 10:21:18 -0500 -Subject: [PATCH] Revert "userns: Allow unprivileged users to create user - namespaces." - -This reverts commit 5eaf563e53294d6696e651466697eb9d491f3946. - -Conflicts: - kernel/fork.c ---- - kernel/fork.c | 13 +++++++++++++ - 1 file changed, 13 insertions(+) - -diff --git a/kernel/fork.c b/kernel/fork.c -index f6d11fc..e04c9a7 100644 ---- a/kernel/fork.c -+++ b/kernel/fork.c -@@ -1573,6 +1573,19 @@ long do_fork(unsigned long clone_flags, - long nr; - - /* -+ * Do some preliminary argument and permissions checking before we -+ * actually start allocating stuff -+ */ -+ if (clone_flags & CLONE_NEWUSER) { -+ /* hopefully this check will go away when userns support is -+ * complete -+ */ -+ if (!capable(CAP_SYS_ADMIN) || !capable(CAP_SETUID) || -+ !capable(CAP_SETGID)) -+ return -EPERM; -+ } -+ -+ /* - * Determine whether and which event to report to ptracer. When - * called from kernel_thread or CLONE_UNTRACED is explicitly - * requested, no event is reported; otherwise, report if the event --- -1.8.3.1 - diff --git a/freed-ora/current/f21/arm-qemu-fixdisplay.patch b/freed-ora/current/f21/arm-qemu-fixdisplay.patch new file mode 100644 index 000000000..090193c2d --- /dev/null +++ b/freed-ora/current/f21/arm-qemu-fixdisplay.patch @@ -0,0 +1,472 @@ +commit d10715be03bd8bad59ddc50236cb140c3bd73c7b +Author: Pawel Moll <pawel.moll@arm.com> +Date: Tue Jun 24 12:55:11 2014 +0100 + + video: ARM CLCD: Add DT support + + This patch adds basic DT bindings for the PL11x CLCD cells + and make their fbdev driver use them. + + Signed-off-by: Pawel Moll <pawel.moll@arm.com> + Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> + +diff --git a/Documentation/devicetree/bindings/video/arm,pl11x.txt b/Documentation/devicetree/bindings/video/arm,pl11x.txt +new file mode 100644 +index 0000000..3e3039a +--- /dev/null ++++ b/Documentation/devicetree/bindings/video/arm,pl11x.txt +@@ -0,0 +1,109 @@ ++* ARM PrimeCell Color LCD Controller PL110/PL111 ++ ++See also Documentation/devicetree/bindings/arm/primecell.txt ++ ++Required properties: ++ ++- compatible: must be one of: ++ "arm,pl110", "arm,primecell" ++ "arm,pl111", "arm,primecell" ++ ++- reg: base address and size of the control registers block ++ ++- interrupt-names: either the single entry "combined" representing a ++ combined interrupt output (CLCDINTR), or the four entries ++ "mbe", "vcomp", "lnbu", "fuf" representing the individual ++ CLCDMBEINTR, CLCDVCOMPINTR, CLCDLNBUINTR, CLCDFUFINTR interrupts ++ ++- interrupts: contains an interrupt specifier for each entry in ++ interrupt-names ++ ++- clock-names: should contain "clcdclk" and "apb_pclk" ++ ++- clocks: contains phandle and clock specifier pairs for the entries ++ in the clock-names property. See ++ Documentation/devicetree/binding/clock/clock-bindings.txt ++ ++Optional properties: ++ ++- memory-region: phandle to a node describing memory (see ++ Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt) ++ to be used for the framebuffer; if not present, the framebuffer ++ may be located anywhere in the memory ++ ++- max-memory-bandwidth: maximum bandwidth in bytes per second that the ++ cell's memory interface can handle; if not present, the memory ++ interface is fast enough to handle all possible video modes ++ ++Required sub-nodes: ++ ++- port: describes LCD panel signals, following the common binding ++ for video transmitter interfaces; see ++ Documentation/devicetree/bindings/media/video-interfaces.txt; ++ when it is a TFT panel, the port's endpoint must define the ++ following property: ++ ++ - arm,pl11x,tft-r0g0b0-pads: an array of three 32-bit values, ++ defining the way CLD pads are wired up; first value ++ contains index of the "CLD" external pin (pad) used ++ as R0 (first bit of the red component), second value ++ index of the pad used as G0, third value index of the ++ pad used as B0, see also "LCD panel signal multiplexing ++ details" paragraphs in the PL110/PL111 Technical ++ Reference Manuals; this implicitly defines available ++ color modes, for example: ++ - PL111 TFT 4:4:4 panel: ++ arm,pl11x,tft-r0g0b0-pads = <4 15 20>; ++ - PL110 TFT (1:)5:5:5 panel: ++ arm,pl11x,tft-r0g0b0-pads = <1 7 13>; ++ - PL111 TFT (1:)5:5:5 panel: ++ arm,pl11x,tft-r0g0b0-pads = <3 11 19>; ++ - PL111 TFT 5:6:5 panel: ++ arm,pl11x,tft-r0g0b0-pads = <3 10 19>; ++ - PL110 and PL111 TFT 8:8:8 panel: ++ arm,pl11x,tft-r0g0b0-pads = <0 8 16>; ++ - PL110 and PL111 TFT 8:8:8 panel, R & B components swapped: ++ arm,pl11x,tft-r0g0b0-pads = <16 8 0>; ++ ++ ++Example: ++ ++ clcd@10020000 { ++ compatible = "arm,pl111", "arm,primecell"; ++ reg = <0x10020000 0x1000>; ++ interrupt-names = "combined"; ++ interrupts = <0 44 4>; ++ clocks = <&oscclk1>, <&oscclk2>; ++ clock-names = "clcdclk", "apb_pclk"; ++ max-memory-bandwidth = <94371840>; /* Bps, 1024x768@60 16bpp */ ++ ++ port { ++ clcd_pads: endpoint { ++ remote-endpoint = <&clcd_panel>; ++ arm,pl11x,tft-r0g0b0-pads = <0 8 16>; ++ }; ++ }; ++ ++ }; ++ ++ panel { ++ compatible = "panel-dpi"; ++ ++ port { ++ clcd_panel: endpoint { ++ remote-endpoint = <&clcd_pads>; ++ }; ++ }; ++ ++ panel-timing { ++ clock-frequency = <25175000>; ++ hactive = <640>; ++ hback-porch = <40>; ++ hfront-porch = <24>; ++ hsync-len = <96>; ++ vactive = <480>; ++ vback-porch = <32>; ++ vfront-porch = <11>; ++ vsync-len = <2>; ++ }; ++ }; +diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig +index 4a7098f..6f451ad 100644 +--- a/drivers/video/fbdev/Kconfig ++++ b/drivers/video/fbdev/Kconfig +@@ -280,6 +280,7 @@ config FB_ARMCLCD + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT ++ select VIDEOMODE_HELPERS if OF + help + This framebuffer device driver is for the ARM PrimeCell PL110 + Colour LCD controller. ARM PrimeCells provide the building +diff --git a/drivers/video/fbdev/amba-clcd.c b/drivers/video/fbdev/amba-clcd.c +index 14d6b37..23b3519 100644 +--- a/drivers/video/fbdev/amba-clcd.c ++++ b/drivers/video/fbdev/amba-clcd.c +@@ -26,6 +26,13 @@ + #include <linux/amba/clcd.h> + #include <linux/clk.h> + #include <linux/hardirq.h> ++#include <linux/dma-mapping.h> ++#include <linux/of.h> ++#include <linux/of_address.h> ++#include <linux/of_graph.h> ++#include <video/display_timing.h> ++#include <video/of_display_timing.h> ++#include <video/videomode.h> + + #include <asm/sizes.h> + +@@ -543,6 +550,259 @@ static int clcdfb_register(struct clcd_fb *fb) + return ret; + } + ++#ifdef CONFIG_OF ++static int clcdfb_of_get_dpi_panel_mode(struct device_node *node, ++ struct fb_videomode *mode) ++{ ++ int err; ++ struct display_timing timing; ++ struct videomode video; ++ ++ err = of_get_display_timing(node, "panel-timing", &timing); ++ if (err) ++ return err; ++ ++ videomode_from_timing(&timing, &video); ++ ++ err = fb_videomode_from_videomode(&video, mode); ++ if (err) ++ return err; ++ ++ return 0; ++} ++ ++static int clcdfb_snprintf_mode(char *buf, int size, struct fb_videomode *mode) ++{ ++ return snprintf(buf, size, "%ux%u@%u", mode->xres, mode->yres, ++ mode->refresh); ++} ++ ++static int clcdfb_of_get_mode(struct device *dev, struct device_node *endpoint, ++ struct fb_videomode *mode) ++{ ++ int err; ++ struct device_node *panel; ++ char *name; ++ int len; ++ ++ panel = of_graph_get_remote_port_parent(endpoint); ++ if (!panel) ++ return -ENODEV; ++ ++ /* Only directly connected DPI panels supported for now */ ++ if (of_device_is_compatible(panel, "panel-dpi")) ++ err = clcdfb_of_get_dpi_panel_mode(panel, mode); ++ else ++ err = -ENOENT; ++ if (err) ++ return err; ++ ++ len = clcdfb_snprintf_mode(NULL, 0, mode); ++ name = devm_kzalloc(dev, len + 1, GFP_KERNEL); ++ clcdfb_snprintf_mode(name, len + 1, mode); ++ mode->name = name; ++ ++ return 0; ++} ++ ++static int clcdfb_of_init_tft_panel(struct clcd_fb *fb, u32 r0, u32 g0, u32 b0) ++{ ++ static struct { ++ unsigned int part; ++ u32 r0, g0, b0; ++ u32 caps; ++ } panels[] = { ++ { 0x110, 1, 7, 13, CLCD_CAP_5551 }, ++ { 0x110, 0, 8, 16, CLCD_CAP_888 }, ++ { 0x111, 4, 14, 20, CLCD_CAP_444 }, ++ { 0x111, 3, 11, 19, CLCD_CAP_444 | CLCD_CAP_5551 }, ++ { 0x111, 3, 10, 19, CLCD_CAP_444 | CLCD_CAP_5551 | ++ CLCD_CAP_565 }, ++ { 0x111, 0, 8, 16, CLCD_CAP_444 | CLCD_CAP_5551 | ++ CLCD_CAP_565 | CLCD_CAP_888 }, ++ }; ++ int i; ++ ++ /* Bypass pixel clock divider, data output on the falling edge */ ++ fb->panel->tim2 = TIM2_BCD | TIM2_IPC; ++ ++ /* TFT display, vert. comp. interrupt at the start of the back porch */ ++ fb->panel->cntl |= CNTL_LCDTFT | CNTL_LCDVCOMP(1); ++ ++ fb->panel->caps = 0; ++ ++ /* Match the setup with known variants */ ++ for (i = 0; i < ARRAY_SIZE(panels) && !fb->panel->caps; i++) { ++ if (amba_part(fb->dev) != panels[i].part) ++ continue; ++ if (g0 != panels[i].g0) ++ continue; ++ if (r0 == panels[i].r0 && b0 == panels[i].b0) ++ fb->panel->caps = panels[i].caps & CLCD_CAP_RGB; ++ if (r0 == panels[i].b0 && b0 == panels[i].r0) ++ fb->panel->caps = panels[i].caps & CLCD_CAP_BGR; ++ } ++ ++ return fb->panel->caps ? 0 : -EINVAL; ++} ++ ++static int clcdfb_of_init_display(struct clcd_fb *fb) ++{ ++ struct device_node *endpoint; ++ int err; ++ u32 max_bandwidth; ++ u32 tft_r0b0g0[3]; ++ ++ fb->panel = devm_kzalloc(&fb->dev->dev, sizeof(*fb->panel), GFP_KERNEL); ++ if (!fb->panel) ++ return -ENOMEM; ++ ++ endpoint = of_graph_get_next_endpoint(fb->dev->dev.of_node, NULL); ++ if (!endpoint) ++ return -ENODEV; ++ ++ err = clcdfb_of_get_mode(&fb->dev->dev, endpoint, &fb->panel->mode); ++ if (err) ++ return err; ++ ++ err = of_property_read_u32(fb->dev->dev.of_node, "max-memory-bandwidth", ++ &max_bandwidth); ++ if (!err) ++ fb->panel->bpp = 8 * max_bandwidth / (fb->panel->mode.xres * ++ fb->panel->mode.yres * fb->panel->mode.refresh); ++ else ++ fb->panel->bpp = 32; ++ ++#ifdef CONFIG_CPU_BIG_ENDIAN ++ fb->panel->cntl |= CNTL_BEBO; ++#endif ++ fb->panel->width = -1; ++ fb->panel->height = -1; ++ ++ if (of_property_read_u32_array(endpoint, ++ "arm,pl11x,tft-r0g0b0-pads", ++ tft_r0b0g0, ARRAY_SIZE(tft_r0b0g0)) == 0) ++ return clcdfb_of_init_tft_panel(fb, tft_r0b0g0[0], ++ tft_r0b0g0[1], tft_r0b0g0[2]); ++ ++ return -ENOENT; ++} ++ ++static int clcdfb_of_vram_setup(struct clcd_fb *fb) ++{ ++ int err; ++ struct device_node *memory; ++ u64 size; ++ ++ err = clcdfb_of_init_display(fb); ++ if (err) ++ return err; ++ ++ memory = of_parse_phandle(fb->dev->dev.of_node, "memory-region", 0); ++ if (!memory) ++ return -ENODEV; ++ ++ fb->fb.screen_base = of_iomap(memory, 0); ++ if (!fb->fb.screen_base) ++ return -ENOMEM; ++ ++ fb->fb.fix.smem_start = of_translate_address(memory, ++ of_get_address(memory, 0, &size, NULL)); ++ fb->fb.fix.smem_len = size; ++ ++ return 0; ++} ++ ++static int clcdfb_of_vram_mmap(struct clcd_fb *fb, struct vm_area_struct *vma) ++{ ++ unsigned long off, user_size, kernel_size; ++ ++ ++ off = vma->vm_pgoff << PAGE_SHIFT; ++ user_size = vma->vm_end - vma->vm_start; ++ kernel_size = fb->fb.fix.smem_len; ++ ++ if (off >= kernel_size || user_size > (kernel_size - off)) ++ return -ENXIO; ++ ++ return remap_pfn_range(vma, vma->vm_start, ++ __phys_to_pfn(fb->fb.fix.smem_start) + vma->vm_pgoff, ++ user_size, ++ pgprot_writecombine(vma->vm_page_prot)); ++} ++ ++static void clcdfb_of_vram_remove(struct clcd_fb *fb) ++{ ++ iounmap(fb->fb.screen_base); ++} ++ ++static int clcdfb_of_dma_setup(struct clcd_fb *fb) ++{ ++ unsigned long framesize; ++ dma_addr_t dma; ++ int err; ++ ++ err = clcdfb_of_init_display(fb); ++ if (err) ++ return err; ++ ++ framesize = fb->panel->mode.xres * fb->panel->mode.yres * ++ fb->panel->bpp / 8; ++ fb->fb.screen_base = dma_alloc_coherent(&fb->dev->dev, framesize, ++ &dma, GFP_KERNEL); ++ if (!fb->fb.screen_base) ++ return -ENOMEM; ++ ++ fb->fb.fix.smem_start = dma; ++ fb->fb.fix.smem_len = framesize; ++ ++ return 0; ++} ++ ++static int clcdfb_of_dma_mmap(struct clcd_fb *fb, struct vm_area_struct *vma) ++{ ++ return dma_mmap_writecombine(&fb->dev->dev, vma, fb->fb.screen_base, ++ fb->fb.fix.smem_start, fb->fb.fix.smem_len); ++} ++ ++static void clcdfb_of_dma_remove(struct clcd_fb *fb) ++{ ++ dma_free_coherent(&fb->dev->dev, fb->fb.fix.smem_len, ++ fb->fb.screen_base, fb->fb.fix.smem_start); ++} ++ ++static struct clcd_board *clcdfb_of_get_board(struct amba_device *dev) ++{ ++ struct clcd_board *board = devm_kzalloc(&dev->dev, sizeof(*board), ++ GFP_KERNEL); ++ struct device_node *node = dev->dev.of_node; ++ ++ if (!board) ++ return NULL; ++ ++ board->name = of_node_full_name(node); ++ board->caps = CLCD_CAP_ALL; ++ board->check = clcdfb_check; ++ board->decode = clcdfb_decode; ++ if (of_find_property(node, "memory-region", NULL)) { ++ board->setup = clcdfb_of_vram_setup; ++ board->mmap = clcdfb_of_vram_mmap; ++ board->remove = clcdfb_of_vram_remove; ++ } else { ++ board->setup = clcdfb_of_dma_setup; ++ board->mmap = clcdfb_of_dma_mmap; ++ board->remove = clcdfb_of_dma_remove; ++ } ++ ++ return board; ++} ++#else ++static struct clcd_board *clcdfb_of_get_board(struct amba_dev *dev) ++{ ++ return NULL; ++} ++#endif ++ + static int clcdfb_probe(struct amba_device *dev, const struct amba_id *id) + { + struct clcd_board *board = dev_get_platdata(&dev->dev); +@@ -550,6 +810,9 @@ static int clcdfb_probe(struct amba_device *dev, const struct amba_id *id) + int ret; + + if (!board) ++ board = clcdfb_of_get_board(dev); ++ ++ if (!board) + return -EINVAL; + + ret = dma_set_mask_and_coherent(&dev->dev, DMA_BIT_MASK(32)); +commit 1d5167b72ca05b2096760e1200fcd53b5f9a7562 +Author: Pawel Moll <pawel.moll@arm.com> +Date: Fri Aug 1 15:43:34 2014 +0100 + + video: ARM CLCD: Fix DT-related build problems + + This patch fixes the following error when !CONFIG_OF: + + drivers/video/fbdev/amba-clcd.c:800:54: warning: ‘struct amba_dev’ declared inside parameter list [enabled by default] + static struct clcd_board *clcdfb_of_get_board(struct amba_dev *dev) + ^ + and adds a missing Kconfig select causing this + when CONFIG_OF && !CONFIG_FB_MODE_HELPERS: + + drivers/video/fbdev/amba-clcd.c:567: undefined reference to `fb_videomode_from_videomode' + + Reported-by: Fengguang Wu <fengguang.wu@intel.com> + Signed-off-by: Pawel Moll <pawel.moll@arm.com> + Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> + +diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig +index 6f451ad..ef94623 100644 +--- a/drivers/video/fbdev/Kconfig ++++ b/drivers/video/fbdev/Kconfig +@@ -280,6 +280,7 @@ config FB_ARMCLCD + select FB_CFB_FILLRECT + select FB_CFB_COPYAREA + select FB_CFB_IMAGEBLIT ++ select FB_MODE_HELPERS if OF + select VIDEOMODE_HELPERS if OF + help + This framebuffer device driver is for the ARM PrimeCell PL110 +diff --git a/drivers/video/fbdev/amba-clcd.c b/drivers/video/fbdev/amba-clcd.c +index 23b3519..beadd3e 100644 +--- a/drivers/video/fbdev/amba-clcd.c ++++ b/drivers/video/fbdev/amba-clcd.c +@@ -797,7 +797,7 @@ static struct clcd_board *clcdfb_of_get_board(struct amba_device *dev) + return board; + } + #else +-static struct clcd_board *clcdfb_of_get_board(struct amba_dev *dev) ++static struct clcd_board *clcdfb_of_get_board(struct amba_device *dev) + { + return NULL; + } diff --git a/freed-ora/current/f21/config-arm-generic b/freed-ora/current/f21/config-arm-generic index 0c5242c69..a75d77263 100644 --- a/freed-ora/current/f21/config-arm-generic +++ b/freed-ora/current/f21/config-arm-generic @@ -142,6 +142,9 @@ CONFIG_I2C_MUX_PINCTRL=m CONFIG_I2C_MUX_PCA9541=m CONFIG_I2C_MUX_PCA954x=m +# spi +CONFIG_SPI_PL022=m + # Sensors CONFIG_SENSORS_IIO_HWMON=m CONFIG_IIO_SYSFS_TRIGGER=m @@ -173,29 +176,18 @@ CONFIG_CMA_AREAS=7 # CONFIG_CRYPTO_TEST is not set # CONFIG_TRANSPARENT_HUGEPAGE is not set # CONFIG_XEN is not set -# CONFIG_DRM_RCAR_DU is not set -# CONFIG_I2C_RCAR is not set -# CONFIG_DRM_SHMOBILE is not set -# CONFIG_I2C_SH_MOBILE is not set + # CONFIG_MMC_DW_SOCFPGA is not set # CONFIG_I2C_NOMADIK is not set -# CONFIG_IRQ_DOMAIN_DEBUG is not set # CONFIG_LEDS_RENESAS_TPU is not set -# CONFIG_LOCK_STAT is not set - # CONFIG_DRM_ARMADA is not set -# CONFIG_DRM_TEGRA is not set -# CONFIG_SHMOBILE_IOMMU is not set - # CONFIG_COMMON_CLK_SI570 is not set # CONFIG_COMMON_CLK_QCOM is not set +# CONFIG_IRQ_DOMAIN_DEBUG is not set # CONFIG_ARM_PTDUMP is not set -# CONFIG_PATA_PLATFORM is not set -# CONFIG_USB_ULPI is not set - -### turn off things which make no sense on embedded SoC +### turn off things which make no sense on ARM # core @@ -208,6 +200,8 @@ CONFIG_CMA_AREAS=7 # CONFIG_ISDN is not set # CONFIG_GAMEPORT is not set # CONFIG_AGP is not set +# CONFIG_PATA_PLATFORM is not set +# CONFIG_USB_ULPI is not set # netdrv diff --git a/freed-ora/current/f21/config-armv7 b/freed-ora/current/f21/config-armv7 index 03f43354f..967cdad5e 100644 --- a/freed-ora/current/f21/config-armv7 +++ b/freed-ora/current/f21/config-armv7 @@ -67,6 +67,7 @@ CONFIG_SND_KIRKWOOD_SOC=m CONFIG_SND_KIRKWOOD_SOC_ARMADA370_DB=m CONFIG_USB_EHCI_HCD_ORION=m CONFIG_MMC_SDHCI_PXAV3=m +CONFIG_MVPP2=m # CONFIG_CACHE_FEROCEON_L2 is not set # CONFIG_CACHE_FEROCEON_L2_WRITETHROUGH is not set @@ -109,7 +110,6 @@ CONFIG_OMAP_PACKAGE_CUS=y CONFIG_OMAP_MCBSP=y CONFIG_OMAP2PLUS_MBOX=m -CONFIG_OMAP_MBOX_FWK=m CONFIG_OMAP_MBOX_KFIFO_SIZE=256 CONFIG_OMAP_DM_TIMER=y CONFIG_OMAP_PM_NOOP=y @@ -302,15 +302,6 @@ CONFIG_RADIO_WL128X=m CONFIG_OMAP_REMOTEPROC=m # CONFIG_TIDSPBRIDGE is not set -# CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE=0x600000 -# CONFIG_TIDSPBRIDGE_DEBUG is not set -# CONFIG_TIDSPBRIDGE_RECOVERY=y -# CONFIG_TIDSPBRIDGE_CACHE_LINE_CHECK is not set -# CONFIG_TIDSPBRIDGE_WDT3=y -# CONFIG_TIDSPBRIDGE_WDT_TIMEOUT=5 -# CONFIG_TIDSPBRIDGE_NTFY_PWRERR is not set -# CONFIG_TIDSPBRIDGE_BACKTRACE is not set - # CONFIG_OMAP2_DSS_DEBUGFS is not set # CONFIG_OMAP_IOMMU_DEBUG is not set # CONFIG_OMAP_MUX_DEBUG is not set @@ -359,6 +350,17 @@ CONFIG_SERIAL_MSM=y CONFIG_SERIAL_MSM_CONSOLE=y CONFIG_PINCTRL_APQ8064=m CONFIG_PINCTRL_IPQ8064=m +CONFIG_PINCTRL_MSM8960=m +CONFIG_PINCTRL_MSM8960=m +CONFIG_COMMON_CLK_QCOM=m +CONFIG_APQ_GCC_8084=m +CONFIG_APQ_MMCC_8084=m +CONFIG_IPQ_GCC_806X=m +CONFIG_MSM_GCC_8660=m +CONFIG_MSM_GCC_8960=m +CONFIG_MSM_MMCC_8960=m +CONFIG_MSM_GCC_8974=m +CONFIG_MSM_MMCC_8974=m CONFIG_HW_RANDOM_MSM=m CONFIG_I2C_QUP=m CONFIG_SPI_QUP=m @@ -378,17 +380,21 @@ CONFIG_USB_EHCI_MSM=m CONFIG_MXC_IRQ_PRIOR=y # CONFIG_MXC_DEBUG_BOARD is not set CONFIG_SOC_IMX50=y +CONFIG_SOC_IMX51=y CONFIG_SOC_IMX53=y CONFIG_SOC_IMX6Q=y CONFIG_SOC_IMX6SL=y CONFIG_SOC_IMX6SX=y # CONFIG_SOC_VF610 is not set CONFIG_MACH_IMX51_DT=y -# CONFIG_MACH_MX51_BABBAGE is not set CONFIG_ARM_IMX6Q_CPUFREQ=m +CONFIG_PCI_IMX6=y CONFIG_IMX_THERMAL=m +CONFIG_IMX_SDMA=m +CONFIG_IMX_DMA=m +CONFIG_MXS_DMA=y +CONFIG_AHCI_IMX=m CONFIG_PATA_IMX=m -CONFIG_PCI_IMX6=y CONFIG_USB_EHCI_MXC=m CONFIG_USB_CHIPIDEA=m CONFIG_USB_CHIPIDEA_UDC=y @@ -406,10 +412,12 @@ CONFIG_PINCTRL_IMX6SL=y CONFIG_I2C_IMX=m CONFIG_STMPE_I2C=y CONFIG_SPI_IMX=m +CONFIG_SPI_FSL_QUADSPI=m CONFIG_STMPE_SPI=y CONFIG_MFD_MC13783=m CONFIG_MFD_MC13XXX_SPI=m CONFIG_MFD_STMPE=y +CONFIG_MTD_NAND_GPMI_NAND=m CONFIG_W1_MASTER_MXC=m CONFIG_IMX_WEIM=y CONFIG_IMX2_WDT=m @@ -435,6 +443,7 @@ CONFIG_SND_SOC_IMX_MC13783=m CONFIG_SND_SOC_IMX_SPDIF=m CONFIG_SND_SOC_EUKREA_TLV320=m CONFIG_SND_SOC_TVL320AIC32X4=m +CONFIG_SND_SOC_WM8731=m CONFIG_USB_IMX21_HCD=m CONFIG_USB_MXS_PHY=m @@ -445,10 +454,6 @@ CONFIG_RTC_DRV_IMXDI=m CONFIG_RTC_DRV_MXC=m # CONFIG_MX3_IPU is not set # CONFIG_MX3_IPU_IRQS is not set -CONFIG_IMX_SDMA=m -CONFIG_IMX_DMA=m -CONFIG_AHCI_IMX=m -# CONFIG_MXS_DMA is not set CONFIG_PWM_IMX=m CONFIG_DRM_IMX=m @@ -631,6 +636,7 @@ CONFIG_DRM_PANEL=y CONFIG_DRM_PANEL_SIMPLE=m CONFIG_DRM_PANEL_LD9040=m CONFIG_DRM_PANEL_S6E8AA0=m +CONFIG_NOUVEAU_PLATFORM_DRIVER=m # OLPC XO CONFIG_SERIO_OLPC_APSP=m diff --git a/freed-ora/current/f21/config-armv7-generic b/freed-ora/current/f21/config-armv7-generic index 058b9514b..82faa0303 100644 --- a/freed-ora/current/f21/config-armv7-generic +++ b/freed-ora/current/f21/config-armv7-generic @@ -205,6 +205,7 @@ CONFIG_ARM_EXYNOS5250_CPUFREQ=y CONFIG_ARM_EXYNOS5440_CPUFREQ=y CONFIG_ARM_EXYNOS_CPU_FREQ_BOOST_SW=y CONFIG_ARM_EXYNOS_CPUIDLE=y +# CONFIG_EXYNOS5420_MCPM not set CONFIG_I2C_EXYNOS5=m CONFIG_I2C_S3C2410=m @@ -248,6 +249,7 @@ CONFIG_DRM_EXYNOS_IOMMU=y CONFIG_DRM_EXYNOS_IPP=y CONFIG_DRM_EXYNOS_ROTATOR=y CONFIG_DRM_EXYNOS_VIDI=y +CONFIG_PHY_EXYNOS_DP_VIDEO=m # CONFIG_FB_S3C is not set # CONFIG_VIDEO_SAMSUNG_EXYNOS4_IS is not set CONFIG_VIDEO_SAMSUNG_S5P_G2D=m @@ -261,6 +263,7 @@ CONFIG_SND_SOC_SAMSUNG_SMDK_SPDIF=m CONFIG_SND_SOC_SAMSUNG_SMDK_WM8994=m CONFIG_SND_SOC_SMDK_WM8994_PCM=m CONFIG_SND_SOC_SNOW=m +CONFIG_SND_SOC_ODROIDX2=m # CONFIG_GPIO_WM8994 is not set # CONFIG_REGULATOR_WM8994 is not set # CONFIG_EXYNOS_IOMMU_DEBUG is not set @@ -299,15 +302,14 @@ CONFIG_GENERIC_CPUFREQ_CPU0=m # usb CONFIG_USB_OHCI_HCD_PLATFORM=m CONFIG_USB_EHCI_HCD_PLATFORM=m -CONFIG_USB_OTG=y # CONFIG_USB_OTG_WHITELIST is not set # CONFIG_USB_OTG_BLACKLIST_HUB is not set CONFIG_USB_ULPI=y CONFIG_AX88796=m CONFIG_AX88796_93CX6=y -CONFIG_USB_ISP1760_HCD=m # usb gadget +CONFIG_USB_OTG=y CONFIG_USB_GADGET=m CONFIG_USB_GADGET_MUSB_HDRC=m CONFIG_USB_GADGET_VBUS_DRAW=100 @@ -316,19 +318,6 @@ CONFIG_USB_MUSB_HDRC=m CONFIG_USB_MUSB_DUAL_ROLE=y CONFIG_USB_MUSB_DSPS=m CONFIG_USB_GPIO_VBUS=m -CONFIG_USB_G_ACM_MS=m -CONFIG_USB_G_DBGP=m -CONFIG_USB_G_DBGP_SERIAL=y -CONFIG_USB_G_MULTI=m -CONFIG_USB_G_MULTI_CDC=y -# CONFIG_USB_G_MULTI_RNDIS is not set -CONFIG_USB_G_NCM=m -CONFIG_USB_G_SERIAL=m -CONFIG_USB_ETH_EEM=y -# CONFIG_USB_ETH_RNDIS is not set -CONFIG_USB_CDC_COMPOSITE=m -CONFIG_USB_GADGET_TARGET=m -CONFIG_USB_MASS_STORAGE=m CONFIG_USB_CONFIGFS=m CONFIG_USB_CONFIGFS_ACM=y CONFIG_USB_CONFIGFS_ECM=y @@ -425,7 +414,6 @@ CONFIG_SPI_BUTTERFLY=m CONFIG_SPI_DESIGNWARE=m CONFIG_SPI_LM70_LLP=m CONFIG_SPI_OC_TINY=m -CONFIG_SPI_PL022=m CONFIG_SPI_SC18IS602=m CONFIG_SPI_TLE62X0=m CONFIG_SPI_XCOMM=m @@ -439,7 +427,6 @@ CONFIG_NFC_NCI_SPI=y CONFIG_I2C_DESIGNWARE_CORE=m CONFIG_I2C_DESIGNWARE_PLATFORM=m CONFIG_I2C_MV64XXX=m -# CONFIG_I2C_CROS_EC_TUNNEL is not set # HW crypto and rng CONFIG_CRYPTO_SHA1_ARM=m @@ -732,6 +719,7 @@ CONFIG_MFD_CROS_EC=m CONFIG_MFD_CROS_EC_I2C=m CONFIG_MFD_CROS_EC_SPI=m CONFIG_KEYBOARD_CROS_EC=m +CONFIG_I2C_CROS_EC_TUNNEL=m # Should be in generic CONFIG_BPF_JIT=y diff --git a/freed-ora/current/f21/config-generic b/freed-ora/current/f21/config-generic index bd0ea5710..0befc51ba 100644 --- a/freed-ora/current/f21/config-generic +++ b/freed-ora/current/f21/config-generic @@ -3906,7 +3906,6 @@ CONFIG_USB_CXACRU=m # CONFIG_USB_C67X00_HCD is not set # CONFIG_USB_CYTHERM is not set CONFIG_USB_EMI26=m -CONFIG_USB_ETH=m CONFIG_USB_FTDI_ELAN=m CONFIG_USB_FILE_STORAGE=m # CONFIG_USB_FILE_STORAGE_TEST is not set @@ -3944,7 +3943,6 @@ CONFIG_USB_TRANCEVIBRATOR=m CONFIG_USB_U132_HCD=m CONFIG_USB_UEAGLEATM=m CONFIG_USB_XUSBATM=m -CONFIG_USB_ZERO=m # CONFIG_USB_DWC2 is not set diff --git a/freed-ora/current/f21/drm-radeon-Disable-writeback-by-default-on-ppc.patch b/freed-ora/current/f21/drm-radeon-Disable-writeback-by-default-on-ppc.patch deleted file mode 100644 index 3aa1b147a..000000000 --- a/freed-ora/current/f21/drm-radeon-Disable-writeback-by-default-on-ppc.patch +++ /dev/null @@ -1,88 +0,0 @@ -Bugzilla: N/A -Upstream-status: Replaced by http://lists.freedesktop.org/archives/dri-devel/2013-December/050290.html in 3.14 - -From b67e0a6a7409f9c1a12e573fb7d8d80ee455b103 Mon Sep 17 00:00:00 2001 -From: Adam Jackson <ajax@redhat.com> -Date: Mon, 17 Jun 2013 09:59:34 -0400 -Subject: [PATCH] drm/radeon: Disable writeback by default on ppc - -At least on an IBM Power 720, this check passes, but several piglit -tests will reliably trigger GPU resets due to the ring buffer pointers -not being updated. There's probably a better way to limit this to just -affected machines though. - -Signed-off-by: Adam Jackson <ajax@redhat.com> ---- - drivers/gpu/drm/radeon/r600_cp.c | 7 +++++++ - drivers/gpu/drm/radeon/radeon_cp.c | 7 +++++++ - drivers/gpu/drm/radeon/radeon_device.c | 4 ++-- - drivers/gpu/drm/radeon/radeon_drv.c | 2 +- - 4 files changed, 17 insertions(+), 3 deletions(-) - -diff --git a/drivers/gpu/drm/radeon/r600_cp.c b/drivers/gpu/drm/radeon/r600_cp.c -index 1c51c08..ef28532 100644 ---- a/drivers/gpu/drm/radeon/r600_cp.c -+++ b/drivers/gpu/drm/radeon/r600_cp.c -@@ -552,6 +552,13 @@ static void r600_test_writeback(drm_radeon_private_t *dev_priv) - dev_priv->writeback_works = 0; - DRM_INFO("writeback test failed\n"); - } -+#if defined(__ppc__) || defined(__ppc64__) -+ /* the test might succeed on ppc, but it's usually not reliable */ -+ if (radeon_no_wb == -1) { -+ radeon_no_wb = 1; -+ DRM_INFO("not trusting writeback test due to arch quirk\n"); -+ } -+#endif - if (radeon_no_wb == 1) { - dev_priv->writeback_works = 0; - DRM_INFO("writeback forced off\n"); -diff --git a/drivers/gpu/drm/radeon/radeon_cp.c b/drivers/gpu/drm/radeon/radeon_cp.c -index efc4f64..a967b33 100644 ---- a/drivers/gpu/drm/radeon/radeon_cp.c -+++ b/drivers/gpu/drm/radeon/radeon_cp.c -@@ -892,6 +892,13 @@ static void radeon_test_writeback(drm_radeon_private_t * dev_priv) - dev_priv->writeback_works = 0; - DRM_INFO("writeback test failed\n"); - } -+#if defined(__ppc__) || defined(__ppc64__) -+ /* the test might succeed on ppc, but it's usually not reliable */ -+ if (radeon_no_wb == -1) { -+ radeon_no_wb = 1; -+ DRM_INFO("not trusting writeback test due to arch quirk\n"); -+ } -+#endif - if (radeon_no_wb == 1) { - dev_priv->writeback_works = 0; - DRM_INFO("writeback forced off\n"); -diff --git a/drivers/gpu/drm/radeon/radeon_device.c b/drivers/gpu/drm/radeon/radeon_device.c -index 1899738..524046e 100644 ---- a/drivers/gpu/drm/radeon/radeon_device.c -+++ b/drivers/gpu/drm/radeon/radeon_device.c -@@ -322,8 +322,8 @@ int radeon_wb_init(struct radeon_device *rdev) - /* disable event_write fences */ - rdev->wb.use_event = false; - /* disabled via module param */ -- if (radeon_no_wb == 1) { -- rdev->wb.enabled = false; -+ if (radeon_no_wb != -1) { -+ rdev->wb.enabled = !!radeon_no_wb; - } else { - if (rdev->flags & RADEON_IS_AGP) { - /* often unreliable on AGP */ -diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c -index 094e7e5..04809d4 100644 ---- a/drivers/gpu/drm/radeon/radeon_drv.c -+++ b/drivers/gpu/drm/radeon/radeon_drv.c -@@ -146,7 +146,7 @@ static inline void radeon_register_atpx_handler(void) {} - static inline void radeon_unregister_atpx_handler(void) {} - #endif - --int radeon_no_wb; -+int radeon_no_wb = -1; - int radeon_modeset = -1; - int radeon_dynclks = -1; - int radeon_r4xx_atom = 0; --- -1.8.2.1 - diff --git a/freed-ora/current/f21/kernel.spec b/freed-ora/current/f21/kernel.spec index a38349c68..e68192765 100644 --- a/freed-ora/current/f21/kernel.spec +++ b/freed-ora/current/f21/kernel.spec @@ -42,7 +42,7 @@ Summary: The Linux kernel # For non-released -rc kernels, this will be appended after the rcX and # gitX tags, so a 3 here would become part of release "0.rcX.gitX.3" # -%global baserelease 300 +%global baserelease 301 %global fedora_build %{baserelease} # base_sublevel is the kernel version we're starting with and patching @@ -602,8 +602,6 @@ Patch09: upstream-reverts.patch Patch450: input-kill-stupid-messages.patch Patch452: no-pcspkr-modalias.patch -Patch460: serial-460800.patch - Patch470: die-floppy-die.patch Patch500: Revert-Revert-ACPI-video-change-acpi-video-brightnes.patch @@ -613,9 +611,6 @@ Patch530: silence-fbcon-logo.patch Patch600: 0001-lib-cpumask-Make-CPUMASK_OFFSTACK-usable-without-deb.patch -#rhbz 917708 -Patch700: Revert-userns-Allow-unprivileged-users-to-create-use.patch - Patch800: crash-driver.patch # crypto/ @@ -657,6 +652,7 @@ Patch21021: arm-beagle.patch Patch21022: arm-imx6-utilite.patch # http://www.spinics.net/lists/linux-tegra/msg17948.html Patch21023: arm-tegra-drmdetection.patch +Patch21024: arm-qemu-fixdisplay.patch #rhbz 754518 Patch21235: scsi-sd_revalidate_disk-prevent-NULL-ptr-deref.patch @@ -669,8 +665,6 @@ Patch21247: ath9k_rx_dma_stop_check.patch Patch22000: weird-root-dentry-name-debug.patch -Patch25047: drm-radeon-Disable-writeback-by-default-on-ppc.patch - #rhbz 1025603 Patch25063: disable-libdw-unwind-on-non-x86.patch @@ -703,6 +697,9 @@ Patch25120: 0001-xhci-Blacklist-using-streams-on-the-Etron-EJ168-cont.patch #rhbz 1128472 Patch25121: 0001-uas-Limit-qdepth-to-32-when-connected-over-usb-2.patch +#rhbz 1131551 +Patch25122: nfs3_list_one_acl-check-get_acl-result-with-IS_ERR_O.patch + # git clone ssh://git.fedorahosted.org/git/kernel-arm64.git, git diff master...devel Patch30000: kernel-arm64.patch @@ -1390,6 +1387,7 @@ ApplyPatch arm-tegra-usb-no-reset-linux33.patch ApplyPatch arm-beagle.patch ApplyPatch arm-imx6-utilite.patch ApplyPatch arm-tegra-drmdetection.patch +ApplyPatch arm-qemu-fixdisplay.patch # # bugfixes to drivers and filesystems @@ -1436,9 +1434,6 @@ ApplyPatch die-floppy-die.patch ApplyPatch no-pcspkr-modalias.patch -# Allow to use 480600 baud on 16C950 UARTs -ApplyPatch serial-460800.patch - # Silence some useless messages that still get printed with 'quiet' ApplyPatch silence-noise.patch @@ -1447,9 +1442,6 @@ ApplyPatch silence-fbcon-logo.patch # Changes to upstream defaults. -#rhbz 917708 -ApplyPatch Revert-userns-Allow-unprivileged-users-to-create-use.patch - # /dev/crash driver. ApplyPatch crash-driver.patch @@ -1494,8 +1486,6 @@ ApplyPatch criu-no-expert.patch #rhbz 892811 ApplyPatch ath9k_rx_dma_stop_check.patch -ApplyPatch drm-radeon-Disable-writeback-by-default-on-ppc.patch - #rhbz 1025603 ApplyPatch disable-libdw-unwind-on-non-x86.patch @@ -1528,6 +1518,9 @@ ApplyPatch 0001-xhci-Blacklist-using-streams-on-the-Etron-EJ168-cont.patch #rhbz 1128472 ApplyPatch 0001-uas-Limit-qdepth-to-32-when-connected-over-usb-2.patch +#rhbz 1131551 +ApplyPatch nfs3_list_one_acl-check-get_acl-result-with-IS_ERR_O.patch + %if 0%{?aarch64patches} ApplyPatch kernel-arm64.patch %ifnarch aarch64 # this is stupid, but i want to notice before secondary koji does. @@ -2423,6 +2416,18 @@ fi # ||----w | # || || %changelog +* Fri Aug 22 2014 Josh Boyer <jwboyer@fedoraproject.org> - 3.16.1-301 +- Drop userns revert patch (rhbz 917708) + +* Tue Aug 19 2014 Josh Boyer <jwboyer@fedoraproject.org> +- Fix NFSv3 oops (rhbz 1131551) + +* Fri Aug 15 2014 Peter Robinson <pbrobinson@fedoraproject.org> +- ARM updates for 3.16 +- Cleanup some old removed options +- Disable legacy USB OTG (using new configfs equivilents) +- Upstream patch to fix display on qemu (VExpress A9) + * Thu Aug 14 2014 Alexandre Oliva <lxoliva@fsfla.org> -libre - GNU Linux-libre 3.16.1-gnu. diff --git a/freed-ora/current/f21/nfs3_list_one_acl-check-get_acl-result-with-IS_ERR_O.patch b/freed-ora/current/f21/nfs3_list_one_acl-check-get_acl-result-with-IS_ERR_O.patch new file mode 100644 index 000000000..5f48a1262 --- /dev/null +++ b/freed-ora/current/f21/nfs3_list_one_acl-check-get_acl-result-with-IS_ERR_O.patch @@ -0,0 +1,41 @@ +Bugzilla: 1131551 +Upstream-status: 3.17-rc1 and Cc'd to stable + +From 7a9e75a185e6b3a3860e6a26fb6e88691fc2c9d9 Mon Sep 17 00:00:00 2001 +From: Andrey Utkin <andrey.krieger.utkin@gmail.com> +Date: Sat, 26 Jul 2014 14:58:01 +0300 +Subject: [PATCH] nfs3_list_one_acl(): check get_acl() result with + IS_ERR_OR_NULL + +There was a check for result being not NULL. But get_acl() may return +NULL, or ERR_PTR, or actual pointer. +The purpose of the function where current change is done is to "list +ACLs only when they are available", so any error condition of get_acl() +mustn't be elevated, and returning 0 there is still valid. + +Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=81111 +Signed-off-by: Andrey Utkin <andrey.krieger.utkin@gmail.com> +Reviewed-by: Christoph Hellwig <hch@lst.de> +Fixes: 74adf83f5d77 (nfs: only show Posix ACLs in listxattr if actually...) +Cc: stable@vger.kernel.org # 3.14+ +Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> +--- + fs/nfs/nfs3acl.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/fs/nfs/nfs3acl.c b/fs/nfs/nfs3acl.c +index 8f854dde4150..d0fec260132a 100644 +--- a/fs/nfs/nfs3acl.c ++++ b/fs/nfs/nfs3acl.c +@@ -256,7 +256,7 @@ nfs3_list_one_acl(struct inode *inode, int type, const char *name, void *data, + char *p = data + *result; + + acl = get_acl(inode, type); +- if (!acl) ++ if (IS_ERR_OR_NULL(acl)) + return 0; + + posix_acl_release(acl); +-- +1.9.3 + diff --git a/freed-ora/current/f21/serial-460800.patch b/freed-ora/current/f21/serial-460800.patch deleted file mode 100644 index 2abea1e4c..000000000 --- a/freed-ora/current/f21/serial-460800.patch +++ /dev/null @@ -1,73 +0,0 @@ -Bugzilla: N/A -Upstream-status: Fedora mustard but I have no idea why. - -diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c -index 2209620..659c1bb 100644 ---- a/drivers/tty/serial/8250/8250_core.c -+++ b/drivers/tty/serial/8250/8250_core.c -@@ -7,6 +7,9 @@ - * - * Copyright (C) 2001 Russell King. - * -+ * 2005/09/16: Enabled higher baud rates for 16C95x. -+ * (Mathias Adam <a2@adamis.de>) -+ * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or -@@ -2227,6 +2230,14 @@ static unsigned int serial8250_get_divisor(struct uart_port *port, unsigned int - else if ((port->flags & UPF_MAGIC_MULTIPLIER) && - baud == (port->uartclk/8)) - quot = 0x8002; -+ /* -+ * For 16C950s UART_TCR is used in combination with divisor==1 -+ * to achieve baud rates up to baud_base*4. -+ */ -+ else if ((port->type == PORT_16C950) && -+ baud > (port->uartclk/16)) -+ quot = 1; -+ - else - quot = uart_get_divisor(port, baud); - -@@ -2240,7 +2251,7 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios, - container_of(port, struct uart_8250_port, port); - unsigned char cval, fcr = 0; - unsigned long flags; -- unsigned int baud, quot; -+ unsigned int baud, quot, max_baud; - int fifo_bug = 0; - - switch (termios->c_cflag & CSIZE) { -@@ -2272,9 +2283,10 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios, - /* - * Ask the core to calculate the divisor for us. - */ -+ max_baud = (up->port.type == PORT_16C950 ? port->uartclk/4 : port->uartclk/16); - baud = uart_get_baud_rate(port, termios, old, - port->uartclk / 16 / 0xffff, -- port->uartclk / 16); -+ max_baud); - quot = serial8250_get_divisor(port, baud); - - /* -@@ -2311,6 +2323,19 @@ serial8250_set_termios(struct uart_port *port, struct ktermios *termios, - spin_lock_irqsave(&up->port.lock, flags); - - /* -+ * 16C950 supports additional prescaler ratios between 1:16 and 1:4 -+ * thus increasing max baud rate to uartclk/4. -+ */ -+ if (up->port.type == PORT_16C950) { -+ if (baud == port->uartclk/4) -+ serial_icr_write(up, UART_TCR, 0x4); -+ else if (baud == port->uartclk/8) -+ serial_icr_write(up, UART_TCR, 0x8); -+ else -+ serial_icr_write(up, UART_TCR, 0); -+ } -+ -+ /* - * Update the per-port timeout. - */ - uart_update_timeout(port, termios->c_cflag, baud); |