ifeq ($(LINUX_VERSION),3.1.10)
LINUX_KERNEL_MD5SUM:=3649bdaa50ffd9114cc16486ec54d83a
endif
-ifeq ($(LINUX_VERSION),3.2.13)
- LINUX_KERNEL_MD5SUM:=1966afd4474000e48fb1e22a5991882e
+ifeq ($(LINUX_VERSION),3.2.14)
+ LINUX_KERNEL_MD5SUM:=961da0dc037181a4a5059f763b70eabd
endif
ifeq ($(LINUX_VERSION),3.3)
LINUX_KERNEL_MD5SUM:=98a6cdd7d082b7ea72df9c89842bac74
CFLAGS:=-Os -pipe -mips32r2 -mtune=mips32r2 -fno-caller-saves
SUBTARGETS:=generic nand
-LINUX_VERSION:=3.2.13
+LINUX_VERSION:=3.2.14
include $(INCLUDE_DIR)/target.mk
SUBTARGETS=au1500 au1550
MAINTAINER:=Florian Fainelli <florian@openwrt.org>
-LINUX_VERSION:=3.2.13
+LINUX_VERSION:=3.2.14
include $(INCLUDE_DIR)/target.mk
DEFAULT_PACKAGES += wpad-mini yamonenv
BOARDNAME:=Broadcom BCM947xx/953xx
FEATURES:=squashfs usb pcmcia
-LINUX_VERSION:=3.2.13
+LINUX_VERSION:=3.2.14
include $(INCLUDE_DIR)/target.mk
DEFAULT_PACKAGES += wpad-mini kmod-switch kmod-diag nvram
FEATURES:=squashfs broken
CFLAGS:=-Os -pipe -march=armv4 -mtune=fa526 -fno-caller-saves
-LINUX_VERSION:=3.2.13
+LINUX_VERSION:=3.2.14
include $(INCLUDE_DIR)/target.mk
CFLAGS:=-Os -pipe -march=armv4t -fno-caller-saves
MAINTAINER:=Florian Fainelli <florian@openwrt.org>
-LINUX_VERSION:=3.2.13
+LINUX_VERSION:=3.2.14
include $(INCLUDE_DIR)/target.mk
--- a/lib/kobject_uevent.c
+++ b/lib/kobject_uevent.c
-@@ -49,6 +49,18 @@ static const char *kobject_actions[] = {
+@@ -50,6 +50,18 @@ static const char *kobject_actions[] = {
[KOBJ_OFFLINE] = "offline",
};
+{
+ u64 seq;
+
-+ spin_lock(&sequence_lock);
++ mutex_lock(&uevent_sock_mutex);
+ seq = ++uevent_seqnum;
-+ spin_unlock(&sequence_lock);
++ mutex_unlock(&uevent_sock_mutex);
+
+ return seq;
+}
/**
* kobject_action_type - translate action string to numeric type
*
-@@ -244,9 +256,7 @@ int kobject_uevent_env(struct kobject *k
- kobj->state_remove_uevent_sent = 1;
-
- /* we will send an event, so request a new sequence number */
-- spin_lock(&sequence_lock);
-- seq = ++uevent_seqnum;
-- spin_unlock(&sequence_lock);
-+ seq = uevent_next_seqnum();
- retval = add_uevent_var(env, "SEQNUM=%llu", (unsigned long long)seq);
- if (retval)
- goto exit;
#endif /* _KOBJECT_H_ */
--- a/lib/kobject_uevent.c
+++ b/lib/kobject_uevent.c
-@@ -377,6 +377,43 @@ int add_uevent_var(struct kobj_uevent_en
+@@ -378,6 +378,43 @@ int add_uevent_var(struct kobj_uevent_en
EXPORT_SYMBOL_GPL(add_uevent_var);
#if defined(CONFIG_NET)
--- a/mm/memory.c
+++ b/mm/memory.c
-@@ -1385,6 +1385,7 @@ unsigned long zap_page_range(struct vm_a
+@@ -1393,6 +1393,7 @@ unsigned long zap_page_range(struct vm_a
tlb_finish_mmu(&tlb, address, end);
return end;
}
/**
* zap_vma_ptes - remove ptes mapping the vma
-@@ -3060,6 +3061,7 @@ static inline int check_stack_guard_page
+@@ -3068,6 +3069,7 @@ static inline int check_stack_guard_page
}
return 0;
}
FEATURES:=squashfs jffs2
DEFAULT_SUBTARGET:=danube
-LINUX_VERSION:=3.2.13
+LINUX_VERSION:=3.2.14
CFLAGS=-Os -pipe -mips32r2 -mtune=mips32r2 -fno-caller-saves
INITRAMFS_EXTRA_FILES:=
MAINTAINER:=Florian Fainelli <florian@openwrt.org>
-LINUX_VERSION:=3.2.13
+LINUX_VERSION:=3.2.14
include $(INCLUDE_DIR)/target.mk
CFLAGS:=-Os -pipe -fno-caller-saves -mcpu=603e
FEATURES:=targz ext4
-LINUX_VERSION:=3.2.13
+LINUX_VERSION:=3.2.14
include $(INCLUDE_DIR)/target.mk
BOARDNAME:=TI OMAP4
FEATURES:=usb targz audio display
-LINUX_VERSION:=3.2.13
+LINUX_VERSION:=3.2.14
CFLAGS:=-Os -pipe -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp
MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
CFLAGS:=-Os -pipe -fno-caller-saves -mcpu=405
MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
-LINUX_VERSION:=3.2.13
+LINUX_VERSION:=3.2.14
include $(INCLUDE_DIR)/target.mk
CFLAGS:=-Os -pipe -fno-caller-saves -mcpu=440
MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
-LINUX_VERSION:=3.2.13
+LINUX_VERSION:=3.2.14
include $(INCLUDE_DIR)/target.mk
CFLAGS:=-Os -pipe -mips32r2 -mtune=mips32r2 -fno-caller-saves
FEATURES:=squashfs
-LINUX_VERSION:=3.2.13
+LINUX_VERSION:=3.2.14
include $(INCLUDE_DIR)/target.mk
DEFAULT_PACKAGES+=\
FEATURES:=ext4 audio
MAINTAINER:=Florian Fainelli <florian@openwrt.org>
-LINUX_VERSION:=3.2.13
+LINUX_VERSION:=3.2.14
include $(INCLUDE_DIR)/target.mk
+++ /dev/null
-From b189e810619a676e6b931a942a3e8387f3d39c21 Mon Sep 17 00:00:00 2001
-From: =?utf8?q?fran=C3=A7ois=20romieu?= <romieu@fr.zoreil.com>
-Date: Sun, 8 Jan 2012 13:41:33 +0000
-Subject: [PATCH] 8139cp: fix missing napi_gro_flush.
-
-The driver uses __napi_complete and napi_gro_receive. Without it, the
-driver hits the BUG_ON(n->gro_list) assertion hard in __napi_complete.
-
-Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
-Tested-by: Marin Glibic <zhilla2@gmail.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/ethernet/realtek/8139cp.c | 1 +
- 1 files changed, 1 insertions(+), 0 deletions(-)
-
---- a/drivers/net/ethernet/realtek/8139cp.c
-+++ b/drivers/net/ethernet/realtek/8139cp.c
-@@ -563,6 +563,7 @@ rx_next:
- if (cpr16(IntrStatus) & cp_rx_intr_mask)
- goto rx_status_loop;
-
-+ napi_gro_flush(napi);
- spin_lock_irqsave(&cp->lock, flags);
- __napi_complete(napi);
- cpw16_f(IntrMask, cp_intr_mask);
FEATURES:=jffs2 targz ubifs audio
SUBTARGETS:=qi_lb60 n516 n526 id800wt
-LINUX_VERSION:=3.2.1
+LINUX_VERSION:=3.2.14
DEVICE_TYPE=other
drivers/mtd/ubi/io.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
-diff --git a/drivers/mtd/ubi/io.c b/drivers/mtd/ubi/io.c
-index f20b6f2..e66079d 100644
--- a/drivers/mtd/ubi/io.c
+++ b/drivers/mtd/ubi/io.c
-@@ -1031,7 +1031,7 @@ int ubi_io_read_vid_hdr(struct ubi_device *ubi, int pnum,
+@@ -1031,7 +1031,7 @@ int ubi_io_read_vid_hdr(struct ubi_devic
p = (char *)vid_hdr - ubi->vid_hdr_shift;
read_err = ubi_io_read(ubi, p, pnum, ubi->vid_hdr_aloffset,
if (read_err && read_err != UBI_IO_BITFLIPS && !mtd_is_eccerr(read_err))
return read_err;
---
-1.7.5.4
-
create mode 100644 drivers/usb/gadget/jz4740_udc.c
create mode 100644 drivers/usb/gadget/jz4740_udc.h
-diff --git a/drivers/usb/gadget/Kconfig b/drivers/usb/gadget/Kconfig
-index 23a4473..89b7d28 100644
--- a/drivers/usb/gadget/Kconfig
+++ b/drivers/usb/gadget/Kconfig
@@ -178,6 +178,14 @@ config USB_FUSB300
config USB_OMAP
tristate "OMAP USB Device Controller"
depends on ARCH_OMAP
-diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile
-index b54ac61..2d65f6e 100644
--- a/drivers/usb/gadget/Makefile
+++ b/drivers/usb/gadget/Makefile
@@ -31,6 +31,7 @@ obj-$(CONFIG_USB_PXA_U2O) += mv_udc.o
#
# USB gadget drivers
-diff --git a/drivers/usb/gadget/gadget_chips.h b/drivers/usb/gadget/gadget_chips.h
-index a8855d0..99f1580 100644
--- a/drivers/usb/gadget/gadget_chips.h
+++ b/drivers/usb/gadget/gadget_chips.h
@@ -36,6 +36,7 @@
#define gadget_is_langwell(g) (!strcmp("langwell_udc", (g)->name))
#define gadget_is_m66592(g) (!strcmp("m66592_udc", (g)->name))
#define gadget_is_musbhdrc(g) (!strcmp("musb-hdrc", (g)->name))
-@@ -118,6 +119,8 @@ static inline int usb_gadget_controller_number(struct usb_gadget *gadget)
+@@ -118,6 +119,8 @@ static inline int usb_gadget_controller_
return 0x31;
else if (gadget_is_dwc3(gadget))
return 0x32;
return -ENOENT;
}
-diff --git a/drivers/usb/gadget/jz4740_udc.c b/drivers/usb/gadget/jz4740_udc.c
-new file mode 100644
-index 0000000..8d36434
--- /dev/null
+++ b/drivers/usb/gadget/jz4740_udc.c
@@ -0,0 +1,2199 @@
+MODULE_DESCRIPTION("JZ4740 USB Device Controller");
+MODULE_AUTHOR("Wei Jianli <jlwei@ingenic.cn>");
+MODULE_LICENSE("GPL");
-diff --git a/drivers/usb/gadget/jz4740_udc.h b/drivers/usb/gadget/jz4740_udc.h
-new file mode 100644
-index 0000000..53fd1da
--- /dev/null
+++ b/drivers/usb/gadget/jz4740_udc.h
@@ -0,0 +1,101 @@
+}
+
+#endif /* __USB_GADGET_JZ4740_H__ */
---
-1.7.5.4
-
drivers/mtd/nand/nand_base.c | 14 ++++++++++----
1 files changed, 10 insertions(+), 4 deletions(-)
-diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
-index 3ed9c5e..184aa93 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
-@@ -1294,9 +1294,15 @@ static int nand_read_page_hwecc_oob_first(struct mtd_info *mtd,
+@@ -1294,9 +1294,15 @@ static int nand_read_page_hwecc_oob_firs
uint8_t *ecc_calc = chip->buffers->ecccalc;
/* Read the OOB area first */
for (i = 0; i < chip->ecc.total; i++)
ecc_code[i] = chip->oob_poi[eccpos[i]];
-@@ -1465,7 +1471,7 @@ static int nand_do_read_ops(struct mtd_info *mtd, loff_t from,
+@@ -1465,7 +1471,7 @@ static int nand_do_read_ops(struct mtd_i
if (realpage != chip->pagebuf || oob) {
bufpoi = aligned ? buf : chip->buffers->databuf;
chip->cmdfunc(mtd, NAND_CMD_READ0, 0x00, page);
sndcmd = 0;
}
---
-1.7.5.4
-
include/linux/mtd/nand.h | 8 ++--
2 files changed, 79 insertions(+), 7 deletions(-)
-diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
-index 184aa93..0131e84 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
-@@ -1143,7 +1143,7 @@ static int nand_read_page_swecc(struct mtd_info *mtd, struct nand_chip *chip,
+@@ -1143,7 +1143,7 @@ static int nand_read_page_swecc(struct m
* @bufpoi: buffer to store read data
*/
static int nand_read_subpage(struct mtd_info *mtd, struct nand_chip *chip,
{
int start_step, end_step, num_steps;
uint32_t *eccpos = chip->ecc.layout->eccpos;
-@@ -1324,6 +1324,75 @@ static int nand_read_page_hwecc_oob_first(struct mtd_info *mtd,
+@@ -1324,6 +1324,75 @@ static int nand_read_page_hwecc_oob_firs
}
/**
* nand_read_page_syndrome - [REPLACEABLE] hardware ECC syndrome based page read
* @mtd: mtd info structure
* @chip: nand chip info structure
-@@ -1482,7 +1551,7 @@ static int nand_do_read_ops(struct mtd_info *mtd, loff_t from,
+@@ -1482,7 +1551,7 @@ static int nand_do_read_ops(struct mtd_i
bufpoi, page);
else if (!aligned && NAND_SUBPAGE_READ(chip) && !oob)
ret = chip->ecc.read_subpage(mtd, chip,
case NAND_ECC_HW:
/* Use standard hwecc read page function? */
-diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
-index 904131b..9034100 100644
--- a/include/linux/mtd/nand.h
+++ b/include/linux/mtd/nand.h
@@ -211,9 +211,9 @@ typedef enum {
void (*write_page)(struct mtd_info *mtd, struct nand_chip *chip,
const uint8_t *buf);
int (*write_oob_raw)(struct mtd_info *mtd, struct nand_chip *chip,
---
-1.7.5.4
-
drivers/mtd/nand/nand_base.c | 14 ++++----------
1 files changed, 4 insertions(+), 10 deletions(-)
-diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
-index 0131e84..74b8cce 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
-@@ -1295,8 +1295,8 @@ static int nand_read_page_hwecc_oob_first(struct mtd_info *mtd,
+@@ -1295,8 +1295,8 @@ static int nand_read_page_hwecc_oob_firs
/* Read the OOB area first */
if (mtd->writesize > 512) {
chip->cmdfunc(mtd, NAND_CMD_RNDOUT, 0, -1);
} else {
chip->cmdfunc(mtd, NAND_CMD_READOOB, 0, page);
-@@ -1304,9 +1304,6 @@ static int nand_read_page_hwecc_oob_first(struct mtd_info *mtd,
+@@ -1304,9 +1304,6 @@ static int nand_read_page_hwecc_oob_firs
chip->cmdfunc(mtd, NAND_CMD_READ0, 0, page);
}
for (i = 0; eccsteps; eccsteps--, i += eccbytes, p += eccsize) {
int stat;
-@@ -1361,8 +1358,8 @@ static int nand_read_subpage_hwecc_oob_first(struct mtd_info *mtd, struct nand_c
+@@ -1361,8 +1358,8 @@ static int nand_read_subpage_hwecc_oob_f
/* Read the OOB area first */
if (mtd->writesize > 512) {
chip->cmdfunc(mtd, NAND_CMD_RNDOUT, data_col_addr, -1);
} else {
chip->cmdfunc(mtd, NAND_CMD_READOOB, 0, page);
-@@ -1370,9 +1367,6 @@ static int nand_read_subpage_hwecc_oob_first(struct mtd_info *mtd, struct nand_c
+@@ -1370,9 +1367,6 @@ static int nand_read_subpage_hwecc_oob_f
chip->cmdfunc(mtd, NAND_CMD_READ0, data_col_addr, page);
}
p = bufpoi + data_col_addr;
for (i = eccbytes * start_step; num_steps; num_steps--, i += eccbytes, p += eccsize) {
---
-1.7.5.4
-
drivers/mtd/nand/jz4740_nand.c | 228 +++++++++++++++++++----
3 files changed, 215 insertions(+), 37 deletions(-)
-diff --git a/arch/mips/include/asm/mach-jz4740/jz4740_nand.h b/arch/mips/include/asm/mach-jz4740/jz4740_nand.h
-index bb5b9a4..986982d 100644
--- a/arch/mips/include/asm/mach-jz4740/jz4740_nand.h
+++ b/arch/mips/include/asm/mach-jz4740/jz4740_nand.h
@@ -19,6 +19,8 @@
void (*ident_callback)(struct platform_device *, struct nand_chip *,
struct mtd_partition **, int *num_partitions);
};
-diff --git a/arch/mips/jz4740/platform.c b/arch/mips/jz4740/platform.c
-index 10929e2..e342ed4 100644
--- a/arch/mips/jz4740/platform.c
+++ b/arch/mips/jz4740/platform.c
-@@ -157,11 +157,29 @@ static struct resource jz4740_nand_resources[] = {
+@@ -157,11 +157,29 @@ static struct resource jz4740_nand_resou
.flags = IORESOURCE_MEM,
},
{
};
struct platform_device jz4740_nand_device = {
-diff --git a/drivers/mtd/nand/jz4740_nand.c b/drivers/mtd/nand/jz4740_nand.c
-index e266407..b254b99 100644
--- a/drivers/mtd/nand/jz4740_nand.c
+++ b/drivers/mtd/nand/jz4740_nand.c
@@ -52,9 +52,10 @@
struct jz_nand_platform_data *pdata;
bool is_reading;
-@@ -74,26 +78,50 @@ static inline struct jz_nand *mtd_to_jz_nand(struct mtd_info *mtd)
+@@ -74,26 +78,50 @@ static inline struct jz_nand *mtd_to_jz_
return container_of(mtd, struct jz_nand, mtd);
}
writel(reg, nand->base + JZ_REG_NAND_CTRL);
}
if (dat != NAND_CMD_NONE)
-@@ -252,7 +280,7 @@ static int jz_nand_correct_ecc_rs(struct mtd_info *mtd, uint8_t *dat,
+@@ -252,7 +280,7 @@ static int jz_nand_correct_ecc_rs(struct
}
static int jz_nand_ioremap_resource(struct platform_device *pdev,
static int __devinit jz_nand_probe(struct platform_device *pdev)
{
int ret;
-@@ -295,6 +407,8 @@ static int __devinit jz_nand_probe(struct platform_device *pdev)
+@@ -295,6 +407,8 @@ static int __devinit jz_nand_probe(struc
struct nand_chip *chip;
struct mtd_info *mtd;
struct jz_nand_platform_data *pdata = pdev->dev.platform_data;
nand = kzalloc(sizeof(*nand), GFP_KERNEL);
if (!nand) {
-@@ -305,10 +419,6 @@ static int __devinit jz_nand_probe(struct platform_device *pdev)
+@@ -305,10 +419,6 @@ static int __devinit jz_nand_probe(struc
ret = jz_nand_ioremap_resource(pdev, "mmio", &nand->mem, &nand->base);
if (ret)
goto err_free;
if (pdata && gpio_is_valid(pdata->busy_gpio)) {
ret = gpio_request(pdata->busy_gpio, "NAND busy pin");
-@@ -316,7 +426,7 @@ static int __devinit jz_nand_probe(struct platform_device *pdev)
+@@ -316,7 +426,7 @@ static int __devinit jz_nand_probe(struc
dev_err(&pdev->dev,
"Failed to request busy gpio %d: %d\n",
pdata->busy_gpio, ret);
}
}
-@@ -338,22 +448,51 @@ static int __devinit jz_nand_probe(struct platform_device *pdev)
+@@ -338,22 +448,51 @@ static int __devinit jz_nand_probe(struc
chip->chip_delay = 50;
chip->cmd_ctrl = jz_nand_cmd_ctrl;
}
if (pdata && pdata->ident_callback) {
-@@ -363,8 +502,8 @@ static int __devinit jz_nand_probe(struct platform_device *pdev)
+@@ -363,8 +502,8 @@ static int __devinit jz_nand_probe(struc
ret = nand_scan_tail(mtd);
if (ret) {
}
ret = mtd_device_parse_register(mtd, NULL, 0,
-@@ -381,14 +520,21 @@ static int __devinit jz_nand_probe(struct platform_device *pdev)
+@@ -381,14 +520,21 @@ static int __devinit jz_nand_probe(struc
return 0;
err_nand_release:
platform_set_drvdata(pdev, NULL);
kfree(nand);
---
-1.7.5.4
-
3 files changed, 271 insertions(+), 0 deletions(-)
create mode 100644 drivers/video/backlight/ili8960.c
-diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig
-index 278aeaa..f617883 100644
--- a/drivers/video/backlight/Kconfig
+++ b/drivers/video/backlight/Kconfig
@@ -59,6 +59,13 @@ config LCD_LTV350QV
config LCD_ILI9320
tristate
help
-diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile
-index fdd1fc4..01ec378 100644
--- a/drivers/video/backlight/Makefile
+++ b/drivers/video/backlight/Makefile
-@@ -6,6 +6,7 @@ obj-$(CONFIG_LCD_HP700) += jornada720_lcd.o
+@@ -6,6 +6,7 @@ obj-$(CONFIG_LCD_HP700) += jornada72
obj-$(CONFIG_LCD_L4F00242T03) += l4f00242t03.o
obj-$(CONFIG_LCD_LMS283GF05) += lms283gf05.o
obj-$(CONFIG_LCD_LTV350QV) += ltv350qv.o
obj-$(CONFIG_LCD_ILI9320) += ili9320.o
obj-$(CONFIG_LCD_PLATFORM) += platform_lcd.o
obj-$(CONFIG_LCD_VGG2432A4) += vgg2432a4.o
-diff --git a/drivers/video/backlight/ili8960.c b/drivers/video/backlight/ili8960.c
-new file mode 100644
-index 0000000..1438e92
--- /dev/null
+++ b/drivers/video/backlight/ili8960.c
@@ -0,0 +1,263 @@
+MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("LCD driver for Ilitek ili8960");
+MODULE_ALIAS("spi:ili8960");
---
-1.7.5.4
-
arch/mips/jz4740/board-qi_lb60.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
-diff --git a/arch/mips/jz4740/board-qi_lb60.c b/arch/mips/jz4740/board-qi_lb60.c
-index c3b04be..b622941 100644
--- a/arch/mips/jz4740/board-qi_lb60.c
+++ b/arch/mips/jz4740/board-qi_lb60.c
-@@ -310,7 +310,6 @@ static struct spi_board_info qi_lb60_spi_board_info[] = {
+@@ -310,7 +310,6 @@ static struct spi_board_info qi_lb60_spi
.chip_select = 0,
.bus_num = 1,
.max_speed_hz = 30 * 1000,
},
};
---
-1.7.5.4
-
drivers/char/mem.c | 17 +++++++++++++++++
3 files changed, 28 insertions(+), 0 deletions(-)
-diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug
-index bf56e17..0c97d51 100644
--- a/arch/x86/Kconfig.debug
+++ b/arch/x86/Kconfig.debug
@@ -7,6 +7,7 @@ source "lib/Kconfig.debug"
---help---
If this option is disabled, you allow userspace (root) access to all
of memory, including kernel and userspace memory. Accidental
-diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
-index 4364303..a2e462e 100644
--- a/drivers/char/Kconfig
+++ b/drivers/char/Kconfig
@@ -6,6 +6,16 @@ menu "Character devices"
config DEVKMEM
bool "/dev/kmem virtual device support"
default y
-diff --git a/drivers/char/mem.c b/drivers/char/mem.c
-index 1451790..a6020ca 100644
--- a/drivers/char/mem.c
+++ b/drivers/char/mem.c
-@@ -87,6 +87,8 @@ void __weak unxlate_dev_mem_ptr(unsigned long phys, void *addr)
+@@ -87,6 +87,8 @@ void __weak unxlate_dev_mem_ptr(unsigned
{
}
/*
* This funcion reads the *physical* memory. The f_pos points directly to the
* memory location.
-@@ -210,6 +212,10 @@ static ssize_t write_mem(struct file *file, const char __user *buf,
+@@ -210,6 +212,10 @@ static ssize_t write_mem(struct file *fi
return written;
}
int __weak phys_mem_access_prot_allowed(struct file *file,
unsigned long pfn, unsigned long size, pgprot_t *vma_prot)
{
-@@ -331,6 +337,8 @@ static int mmap_mem(struct file *file, struct vm_area_struct *vma)
+@@ -331,6 +337,8 @@ static int mmap_mem(struct file *file, s
return 0;
}
#ifdef CONFIG_DEVKMEM
static int mmap_kmem(struct file *file, struct vm_area_struct *vma)
{
-@@ -694,6 +702,7 @@ static loff_t null_lseek(struct file *file, loff_t offset, int orig)
+@@ -694,6 +702,7 @@ static loff_t null_lseek(struct file *fi
return file->f_pos = 0;
}
/*
* The memory devices use the full 32/64 bits of the offset, and so we cannot
* check against negative addresses: they are ok. The return value is weird,
-@@ -726,11 +735,15 @@ static loff_t memory_lseek(struct file *file, loff_t offset, int orig)
+@@ -726,11 +735,15 @@ static loff_t memory_lseek(struct file *
mutex_unlock(&file->f_path.dentry->d_inode->i_mutex);
return ret;
}
#define zero_lseek null_lseek
#define full_lseek null_lseek
-@@ -740,6 +753,7 @@ static int open_port(struct inode * inode, struct file * filp)
+@@ -740,6 +753,7 @@ static int open_port(struct inode * inod
#define open_kmem open_mem
#define open_oldmem open_mem
static const struct file_operations mem_fops = {
.llseek = memory_lseek,
.read = read_mem,
-@@ -748,6 +762,7 @@ static const struct file_operations mem_fops = {
+@@ -748,6 +762,7 @@ static const struct file_operations mem_
.open = open_mem,
.get_unmapped_area = get_unmapped_area_mem,
};
#ifdef CONFIG_DEVKMEM
[2] = { "kmem", 0, &kmem_fops, &directly_mappable_cdev_bdi },
#endif
---
-1.7.5.4
-
drivers/cpufreq/cpufreq_stats.c | 161 ++++++++++++++++++++-------------------
1 files changed, 83 insertions(+), 78 deletions(-)
-diff --git a/drivers/cpufreq/cpufreq_stats.c b/drivers/cpufreq/cpufreq_stats.c
-index c5072a9..95f6eb9 100644
--- a/drivers/cpufreq/cpufreq_stats.c
+++ b/drivers/cpufreq/cpufreq_stats.c
@@ -21,6 +21,7 @@
cputime64_t *time_in_state;
unsigned int *freq_table;
#ifdef CONFIG_CPU_FREQ_STAT_DETAILS
-@@ -60,7 +61,7 @@ static int cpufreq_stats_update(unsigned int cpu)
+@@ -60,7 +61,7 @@ static int cpufreq_stats_update(unsigned
cur_time = get_jiffies_64();
spin_lock(&cpufreq_stats_lock);
stat = per_cpu(cpufreq_stats_table, cpu);
stat->time_in_state[stat->last_index] =
cputime64_add(stat->time_in_state[stat->last_index],
cputime_sub(cur_time, stat->last_time));
-@@ -83,7 +84,7 @@ static ssize_t show_time_in_state(struct cpufreq_policy *policy, char *buf)
+@@ -83,7 +84,7 @@ static ssize_t show_time_in_state(struct
ssize_t len = 0;
int i;
struct cpufreq_stats *stat = per_cpu(cpufreq_stats_table, policy->cpu);
return 0;
cpufreq_stats_update(stat->cpu);
for (i = 0; i < stat->state_num; i++) {
-@@ -101,7 +102,7 @@ static ssize_t show_trans_table(struct cpufreq_policy *policy, char *buf)
+@@ -101,7 +102,7 @@ static ssize_t show_trans_table(struct c
int i, j;
struct cpufreq_stats *stat = per_cpu(cpufreq_stats_table, policy->cpu);
return 0;
cpufreq_stats_update(stat->cpu);
len += snprintf(buf + len, PAGE_SIZE - len, " From : To\n");
-@@ -160,63 +161,35 @@ static struct attribute_group stats_attr_group = {
+@@ -160,63 +161,35 @@ static struct attribute_group stats_attr
static int freq_table_get_index(struct cpufreq_stats *stat, unsigned int freq)
{
int index;
for (i = 0; table[i].frequency != CPUFREQ_TABLE_END; i++) {
unsigned int freq = table[i].frequency;
-@@ -225,40 +198,73 @@ static int cpufreq_stats_create_table(struct cpufreq_policy *policy,
+@@ -225,40 +198,73 @@ static int cpufreq_stats_create_table(st
count++;
}
kfree(stat);
per_cpu(cpufreq_stats_table, cpu) = NULL;
return ret;
-@@ -276,10 +282,12 @@ static int cpufreq_stat_notifier_policy(struct notifier_block *nb,
+@@ -276,10 +282,12 @@ static int cpufreq_stat_notifier_policy(
table = cpufreq_frequency_get_table(cpu);
if (!table)
return 0;
}
static int cpufreq_stat_notifier_trans(struct notifier_block *nb,
-@@ -299,21 +307,23 @@ static int cpufreq_stat_notifier_trans(struct notifier_block *nb,
+@@ -299,21 +307,23 @@ static int cpufreq_stat_notifier_trans(s
old_index = stat->last_index;
new_index = freq_table_get_index(stat, freq->new);
spin_unlock(&cpufreq_stats_lock);
return 0;
}
-@@ -329,9 +339,6 @@ static int __cpuinit cpufreq_stat_cpu_callback(struct notifier_block *nfb,
+@@ -329,9 +339,6 @@ static int __cpuinit cpufreq_stat_cpu_ca
case CPU_ONLINE_FROZEN:
cpufreq_update_policy(cpu);
break;
case CPU_DEAD:
case CPU_DEAD_FROZEN:
cpufreq_stats_free_table(cpu);
-@@ -340,10 +347,9 @@ static int __cpuinit cpufreq_stat_cpu_callback(struct notifier_block *nfb,
+@@ -340,10 +347,9 @@ static int __cpuinit cpufreq_stat_cpu_ca
return NOTIFY_OK;
}
};
static struct notifier_block notifier_policy_block = {
-@@ -390,7 +396,6 @@ static void __exit cpufreq_stats_exit(void)
+@@ -390,7 +396,6 @@ static void __exit cpufreq_stats_exit(vo
unregister_hotcpu_notifier(&cpufreq_stat_cpu_notifier);
for_each_online_cpu(cpu) {
cpufreq_stats_free_table(cpu);
}
}
---
-1.7.5.4
-
arch/mips/jz4740/clock.h | 4 +
2 files changed, 224 insertions(+), 10 deletions(-)
-diff --git a/arch/mips/jz4740/clock.c b/arch/mips/jz4740/clock.c
-index 118a8a5..da423d1 100644
--- a/arch/mips/jz4740/clock.c
+++ b/arch/mips/jz4740/clock.c
@@ -1,5 +1,8 @@
struct main_clk {
struct clk clk;
uint32_t div_offset;
-@@ -204,25 +217,88 @@ static int jz_clk_ko_is_enabled(struct clk *clk)
+@@ -204,25 +217,88 @@ static int jz_clk_ko_is_enabled(struct c
return !!(jz_clk_reg_read(JZ_REG_CLOCK_CTRL) & JZ_CLOCK_CTRL_KO_ENABLE);
}
}
static unsigned long jz_clk_pll_half_get_rate(struct clk *clk)
-@@ -235,7 +311,77 @@ static unsigned long jz_clk_pll_half_get_rate(struct clk *clk)
+@@ -235,7 +311,77 @@ static unsigned long jz_clk_pll_half_get
return jz_clk_pll_get_rate(clk->parent) >> 1;
}
static unsigned long jz_clk_main_round_rate(struct clk *clk, unsigned long rate)
{
-@@ -290,6 +436,64 @@ static int jz_clk_main_set_rate(struct clk *clk, unsigned long rate)
+@@ -290,6 +436,64 @@ static int jz_clk_main_set_rate(struct c
return 0;
}
spin_lock_init(&jz_clock_lock);
jz_clk_ext.rate = jz4740_clock_bdata.ext_rate;
-diff --git a/arch/mips/jz4740/clock.h b/arch/mips/jz4740/clock.h
-index 5d07499..cc8d1db 100644
--- a/arch/mips/jz4740/clock.h
+++ b/arch/mips/jz4740/clock.h
@@ -17,6 +17,7 @@
#ifdef CONFIG_DEBUG_FS
void jz4740_clock_debugfs_init(void);
void jz4740_clock_debugfs_add_clk(struct clk *clk);
---
-1.7.5.4
-
4 files changed, 240 insertions(+), 1 deletions(-)
create mode 100644 arch/mips/jz4740/cpufreq.c
-diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
-index d46f1da..8128df7 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -209,6 +209,7 @@ config MACH_JZ4740
config LANTIQ
bool "Lantiq based platforms"
-diff --git a/arch/mips/jz4740/Makefile b/arch/mips/jz4740/Makefile
-index a9dff33..15f828e 100644
--- a/arch/mips/jz4740/Makefile
+++ b/arch/mips/jz4740/Makefile
-@@ -16,5 +16,6 @@ obj-$(CONFIG_JZ4740_QI_LB60) += board-qi_lb60.o
+@@ -16,5 +16,6 @@ obj-$(CONFIG_JZ4740_QI_LB60) += board-qi
# PM support
obj-$(CONFIG_PM) += pm.o
+obj-$(CONFIG_CPU_FREQ_JZ) += cpufreq.o
ccflags-y := -Werror -Wall
-diff --git a/arch/mips/jz4740/cpufreq.c b/arch/mips/jz4740/cpufreq.c
-new file mode 100644
-index 0000000..aa41e9f
--- /dev/null
+++ b/arch/mips/jz4740/cpufreq.c
@@ -0,0 +1,226 @@
+ "Maarten ter Huurne <maarten@treewalker.org>");
+MODULE_DESCRIPTION("cpufreq driver for Jz4740");
+MODULE_LICENSE("GPL");
-diff --git a/arch/mips/kernel/cpufreq/Kconfig b/arch/mips/kernel/cpufreq/Kconfig
-index 58c601e..11af8e8 100644
--- a/arch/mips/kernel/cpufreq/Kconfig
+++ b/arch/mips/kernel/cpufreq/Kconfig
@@ -8,7 +8,7 @@ config MIPS_EXTERNAL_TIMER
endif # CPU_FREQ
endmenu
---
-1.7.5.4
-
drivers/mmc/host/jz4740_mmc.c | 69 +++++++++++++++++++++++++++++++++++++++-
1 files changed, 67 insertions(+), 2 deletions(-)
-diff --git a/drivers/mmc/host/jz4740_mmc.c b/drivers/mmc/host/jz4740_mmc.c
-index 74218ad..6e40f1b 100644
--- a/drivers/mmc/host/jz4740_mmc.c
+++ b/drivers/mmc/host/jz4740_mmc.c
@@ -23,6 +23,7 @@
#include <linux/bitops.h>
#include <linux/gpio.h>
-@@ -685,6 +686,60 @@ static void jz4740_mmc_enable_sdio_irq(struct mmc_host *mmc, int enable)
+@@ -685,6 +686,60 @@ static void jz4740_mmc_enable_sdio_irq(s
jz4740_mmc_set_irq_enabled(host, JZ_MMC_IRQ_SDIO, enable);
}
static const struct mmc_host_ops jz4740_mmc_ops = {
.request = jz4740_mmc_request,
.set_ios = jz4740_mmc_set_ios,
-@@ -834,11 +889,18 @@ static int __devinit jz4740_mmc_probe(struct platform_device* pdev)
+@@ -834,11 +889,18 @@ static int __devinit jz4740_mmc_probe(st
goto err_free_host;
}
}
host->mem = request_mem_region(host->mem->start,
-@@ -846,7 +908,7 @@ static int __devinit jz4740_mmc_probe(struct platform_device* pdev)
+@@ -846,7 +908,7 @@ static int __devinit jz4740_mmc_probe(st
if (!host->mem) {
ret = -EBUSY;
dev_err(&pdev->dev, "Failed to request base memory region\n");
err_clk_put:
clk_put(host->clk);
err_free_host:
-@@ -958,6 +1022,7 @@ static int __devexit jz4740_mmc_remove(struct platform_device *pdev)
+@@ -958,6 +1022,7 @@ static int __devexit jz4740_mmc_remove(s
iounmap(host->base);
release_mem_region(host->mem->start, resource_size(host->mem));
clk_put(host->clk);
platform_set_drvdata(pdev, NULL);
---
-1.7.5.4
-
arch/mips/jz4740/reset.c | 46 ++++++++++++++++++++++++++++++++++++++++------
1 files changed, 40 insertions(+), 6 deletions(-)
-diff --git a/arch/mips/jz4740/reset.c b/arch/mips/jz4740/reset.c
-index 5f1fb95..e6d1d7b 100644
--- a/arch/mips/jz4740/reset.c
+++ b/arch/mips/jz4740/reset.c
@@ -21,6 +21,9 @@
static void jz4740_halt(void)
{
while (1) {
-@@ -53,21 +56,52 @@ static void jz4740_restart(char *command)
+@@ -53,21 +56,52 @@ static void jz4740_restart(char *command
jz4740_halt();
}
-#define JZ_REG_RTC_CTRL 0x00
-#define JZ_REG_RTC_HIBERNATE 0x20
+-
+-#define JZ_RTC_CTRL_WRDY BIT(7)
+#define JZ_REG_RTC_CTRL 0x00
+#define JZ_REG_RTC_HIBERNATE 0x20
+#define JZ_REG_RTC_WAKEUP_FILTER 0x24
+#define JZ_REG_RTC_RESET_COUNTER 0x28
-
--#define JZ_RTC_CTRL_WRDY BIT(7)
++
+#define JZ_RTC_CTRL_WRDY BIT(7)
+#define JZ_RTC_WAKEUP_FILTER_MASK 0x0000FFE0
+#define JZ_RTC_RESET_COUNTER_MASK 0x00000FE0
jz4740_halt();
}
---
-1.7.5.4
-
sound/soc/jz4740/jz4740-i2s.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
-diff --git a/sound/soc/jz4740/jz4740-i2s.c b/sound/soc/jz4740/jz4740-i2s.c
-index cd22a54..d28b4cc 100644
--- a/sound/soc/jz4740/jz4740-i2s.c
+++ b/sound/soc/jz4740/jz4740-i2s.c
-@@ -346,7 +346,7 @@ static void jz4740_i2c_init_pcm_config(struct jz4740_i2s *i2s)
+@@ -346,7 +346,7 @@ static void jz4740_i2c_init_pcm_config(s
/* Playback */
dma_config = &i2s->pcm_config_playback.dma_config;
dma_config->transfer_size = JZ4740_DMA_TRANSFER_SIZE_16BYTE;
dma_config->request_type = JZ4740_DMA_TYPE_AIC_TRANSMIT;
dma_config->flags = JZ4740_DMA_SRC_AUTOINC;
-@@ -355,7 +355,7 @@ static void jz4740_i2c_init_pcm_config(struct jz4740_i2s *i2s)
+@@ -355,7 +355,7 @@ static void jz4740_i2c_init_pcm_config(s
/* Capture */
dma_config = &i2s->pcm_config_capture.dma_config;
dma_config->transfer_size = JZ4740_DMA_TRANSFER_SIZE_16BYTE;
dma_config->request_type = JZ4740_DMA_TYPE_AIC_RECEIVE;
dma_config->flags = JZ4740_DMA_DST_AUTOINC;
---
-1.7.5.4
-
sound/soc/jz4740/jz4740-pcm.c | 21 ++++++++++++++++++---
1 files changed, 18 insertions(+), 3 deletions(-)
-diff --git a/sound/soc/jz4740/jz4740-pcm.c b/sound/soc/jz4740/jz4740-pcm.c
-index d1989cd..1f9a005 100644
--- a/sound/soc/jz4740/jz4740-pcm.c
+++ b/sound/soc/jz4740/jz4740-pcm.c
@@ -31,6 +31,7 @@
dma_addr_t dma_start;
dma_addr_t dma_pos;
dma_addr_t dma_end;
-@@ -67,10 +68,13 @@ static void jz4740_pcm_start_transfer(struct jz4740_runtime_data *prtd,
+@@ -67,10 +68,13 @@ static void jz4740_pcm_start_transfer(st
if (prtd->dma_pos == prtd->dma_end)
prtd->dma_pos = prtd->dma_start;
jz4740_dma_disable(prtd->dma);
-@@ -85,6 +89,7 @@ static void jz4740_pcm_start_transfer(struct jz4740_runtime_data *prtd,
+@@ -85,6 +89,7 @@ static void jz4740_pcm_start_transfer(st
jz4740_dma_set_transfer_count(prtd->dma, count);
prtd->dma_pos += count;
jz4740_dma_enable(prtd->dma);
}
-@@ -96,7 +101,8 @@ static void jz4740_pcm_dma_transfer_done(struct jz4740_dma_chan *dma, int err,
+@@ -96,7 +101,8 @@ static void jz4740_pcm_dma_transfer_done
struct snd_pcm_runtime *runtime = substream->runtime;
struct jz4740_runtime_data *prtd = runtime->private_data;
jz4740_pcm_start_transfer(prtd, substream);
}
-@@ -133,6 +139,7 @@ static int jz4740_pcm_hw_params(struct snd_pcm_substream *substream,
+@@ -133,6 +139,7 @@ static int jz4740_pcm_hw_params(struct s
runtime->dma_bytes = params_buffer_bytes(params);
prtd->dma_period = params_period_bytes(params);
prtd->dma_start = runtime->dma_addr;
prtd->dma_pos = prtd->dma_start;
prtd->dma_end = prtd->dma_start + runtime->dma_bytes;
-@@ -160,6 +167,7 @@ static int jz4740_pcm_prepare(struct snd_pcm_substream *substream)
+@@ -160,6 +167,7 @@ static int jz4740_pcm_prepare(struct snd
if (!prtd->dma)
return -EBUSY;
prtd->dma_pos = prtd->dma_start;
return 0;
-@@ -219,6 +227,13 @@ static int jz4740_pcm_open(struct snd_pcm_substream *substream)
+@@ -219,6 +227,13 @@ static int jz4740_pcm_open(struct snd_pc
if (prtd == NULL)
return -ENOMEM;
snd_soc_set_runtime_hwparams(substream, &jz4740_pcm_hardware);
runtime->private_data = prtd;
---
-1.7.5.4
-
arch/mips/jz4740/board-qi_lb60.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
-diff --git a/arch/mips/jz4740/board-qi_lb60.c b/arch/mips/jz4740/board-qi_lb60.c
-index b622941..f2d94c1 100644
--- a/arch/mips/jz4740/board-qi_lb60.c
+++ b/arch/mips/jz4740/board-qi_lb60.c
-@@ -140,6 +140,7 @@ static void qi_lb60_nand_ident(struct platform_device *pdev,
+@@ -140,6 +140,7 @@ static void qi_lb60_nand_ident(struct pl
static struct jz_nand_platform_data qi_lb60_nand_pdata = {
.ident_callback = qi_lb60_nand_ident,
.busy_gpio = 94,
};
/* Keyboard*/
---
-1.7.5.4
-
sound/soc/jz4740/qi_lb60.c | 56 +++++++++++++++++--------------------
2 files changed, 32 insertions(+), 30 deletions(-)
-diff --git a/arch/mips/jz4740/board-qi_lb60.c b/arch/mips/jz4740/board-qi_lb60.c
-index f2d94c1..be14dfb 100644
--- a/arch/mips/jz4740/board-qi_lb60.c
+++ b/arch/mips/jz4740/board-qi_lb60.c
-@@ -418,6 +418,11 @@ static struct platform_device qi_lb60_charger_device = {
+@@ -418,6 +418,11 @@ static struct platform_device qi_lb60_ch
},
};
static struct platform_device *jz_platform_devices[] __initdata = {
&jz4740_udc_device,
-@@ -434,6 +439,7 @@ static struct platform_device *jz_platform_devices[] __initdata = {
+@@ -434,6 +439,7 @@ static struct platform_device *jz_platfo
&qi_lb60_gpio_keys,
&qi_lb60_pwm_beeper,
&qi_lb60_charger_device,
};
static void __init board_gpio_setup(void)
-diff --git a/sound/soc/jz4740/qi_lb60.c b/sound/soc/jz4740/qi_lb60.c
-index c5fc339..67ddbdd 100644
--- a/sound/soc/jz4740/qi_lb60.c
+++ b/sound/soc/jz4740/qi_lb60.c
@@ -90,56 +90,52 @@ static struct snd_soc_card qi_lb60 = {
MODULE_DESCRIPTION("ALSA SoC QI LB60 Audio support");
MODULE_LICENSE("GPL v2");
+MODULE_ALIAS("platform:qi-lb60-audio");
---
-1.7.5.4
-
drivers/video/fbmem.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
-diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
-index ad93629..e13e6bf 100644
--- a/drivers/video/fbmem.c
+++ b/drivers/video/fbmem.c
-@@ -1032,12 +1032,12 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
+@@ -1032,12 +1032,12 @@ fb_set_var(struct fb_info *info, struct
int
fb_blank(struct fb_info *info, int blank)
{
ret = info->fbops->fb_blank(blank, info);
if (!ret) {
-@@ -1048,6 +1048,10 @@ fb_blank(struct fb_info *info, int blank)
+@@ -1048,6 +1048,10 @@ fb_blank(struct fb_info *info, int blank
fb_notifier_call_chain(FB_EVENT_BLANK, &event);
}
return ret;
}
---
-1.7.5.4
-
arch/mips/jz4740/board-qi_lb60.c | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
-diff --git a/arch/mips/jz4740/board-qi_lb60.c b/arch/mips/jz4740/board-qi_lb60.c
-index be14dfb..4e24b95 100644
--- a/arch/mips/jz4740/board-qi_lb60.c
+++ b/arch/mips/jz4740/board-qi_lb60.c
-@@ -118,8 +118,13 @@ static struct mtd_partition qi_lb60_partitions_2gb[] = {
+@@ -118,8 +118,13 @@ static struct mtd_partition qi_lb60_part
{
.name = "NAND ROOTFS partition",
.offset = 8 * 0x100000,
};
static void qi_lb60_nand_ident(struct platform_device *pdev,
---
-1.7.5.4
-
drivers/rtc/rtc-jz4740.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
-diff --git a/drivers/rtc/rtc-jz4740.c b/drivers/rtc/rtc-jz4740.c
-index b647363..50c5df0 100644
--- a/drivers/rtc/rtc-jz4740.c
+++ b/drivers/rtc/rtc-jz4740.c
-@@ -280,6 +280,8 @@ static int __devinit jz4740_rtc_probe(struct platform_device *pdev)
+@@ -280,6 +280,8 @@ static int __devinit jz4740_rtc_probe(st
}
}
return 0;
err_free_irq:
---
-1.7.5.4
-