diff --git a/arch/mips/brcmstb/irq.c b/arch/mips/brcmstb/irq.c
index 0b89138..ed1cfbe 100644
--- a/arch/mips/brcmstb/irq.c
+++ b/arch/mips/brcmstb/irq.c
@@ -267,7 +267,7 @@
 #endif
 }
 
-static void brcm_intc_dispatch(struct pt_regs *regs, unsigned long base)
+static void brcm_intc_dispatch(unsigned long base)
 {
 	u32 pend, shift;
 
@@ -302,19 +302,19 @@
 }
 
 /* IRQ2 = L1 interrupt for TP0 */
-static void brcm_mips_int2_dispatch(struct pt_regs *regs)
+static void brcm_mips_int2_dispatch(void)
 {
 	clear_c0_status(STATUSF_IP2);
-	brcm_intc_dispatch(regs, TP0_BASE);
+	brcm_intc_dispatch(TP0_BASE);
 	set_c0_status(STATUSF_IP2);
 }
 
 #ifdef CONFIG_SMP
 /* IRQ3 = L1 interrupt for TP1 */
-static void brcm_mips_int3_dispatch(struct pt_regs *regs)
+static void brcm_mips_int3_dispatch(void)
 {
 	clear_c0_status(STATUSF_IP3);
-	brcm_intc_dispatch(regs, TP1_BASE);
+	brcm_intc_dispatch(TP1_BASE);
 	set_c0_status(STATUSF_IP3);
 }
 #endif
@@ -380,7 +380,7 @@
 #endif
 }
 
-asmlinkage void plat_irq_dispatch(struct pt_regs *regs)
+asmlinkage void plat_irq_dispatch(void)
 {
 	unsigned int pend = ((read_c0_cause() & read_c0_status()) >> 8) & 0xff;
 	unsigned int shift;
@@ -389,10 +389,10 @@
 		shift--;
 		pend ^= 1 << shift;
 		if (shift == 2)
-			brcm_mips_int2_dispatch(regs);
+			brcm_mips_int2_dispatch();
 #ifdef CONFIG_SMP
 		else if (unlikely(shift == 3))
-			brcm_mips_int3_dispatch(regs);
+			brcm_mips_int3_dispatch();
 #endif
 		else
 			do_IRQ(MIPS_CPU_IRQ_BASE + shift);
diff --git a/arch/mips/mm/c-brcmstb.c b/arch/mips/mm/c-brcmstb.c
index 1efc0f6..2e2bf331 100644
--- a/arch/mips/mm/c-brcmstb.c
+++ b/arch/mips/mm/c-brcmstb.c
@@ -73,14 +73,18 @@
 
 static void (* r4k_blast_dcache_page)(unsigned long addr);
 static void (* r4k_blast_dcache_page_indexed)(unsigned long addr);
-static void (* r4k_blast_dcache)(void);
 static void (* r4k_blast_icache_page)(unsigned long addr);
 static void (* r4k_blast_icache_page_indexed)(unsigned long addr);
-static void (* r4k_blast_icache)(void);
 static void (* r4k_blast_scache_page)(unsigned long addr);
 static void (* r4k_blast_scache_page_indexed)(unsigned long addr);
 static void (* r4k_blast_scache)(void);
 
+void (* r4k_blast_dcache)(void);
+EXPORT_SYMBOL(r4k_blast_dcache);
+
+void (* r4k_blast_icache)(void);
+EXPORT_SYMBOL(r4k_blast_icache);
+
 static inline void r4k_blast_dcache_page_dc32(unsigned long addr)
 {
 	blast_dcache32_page(addr);
diff --git a/drivers/ata/ahci_platform.c b/drivers/ata/ahci_platform.c
index 2070aa8..fa6604d 100644
--- a/drivers/ata/ahci_platform.c
+++ b/drivers/ata/ahci_platform.c
@@ -50,8 +50,8 @@
 static int ahci_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
-	const struct platform_device_id *id = platform_get_device_id(pdev);
 	struct ahci_host_priv *hpriv;
+	const struct platform_device_id *id = platform_get_device_id(pdev);
 	int rc;
 
 	hpriv = ahci_platform_get_resources(pdev);
@@ -66,7 +66,7 @@
 		hpriv->flags |= AHCI_HFLAG_NO_FBS | AHCI_HFLAG_NO_NCQ;
 
 	if (id && id->driver_data == STRICT_AHCI)
-		hpriv->hflags |= AHCI_HFLAG_DELAY_ENGINE;
+		hpriv->flags |= AHCI_HFLAG_DELAY_ENGINE;
 
 	rc = ahci_platform_init_host(pdev, hpriv, &ahci_port_info);
 	if (rc)
diff --git a/drivers/brcmstb/repartition.c b/drivers/brcmstb/repartition.c
index cea9bb0..09b67ca 100644
--- a/drivers/brcmstb/repartition.c
+++ b/drivers/brcmstb/repartition.c
@@ -37,7 +37,7 @@
 	return partitionmap_print_bbinfo(bbinfo, sizeof(bbinfo));
 }
 
-static int repartition_sysctl_bbinfo(ctl_table *ctl, int write,
+static int repartition_sysctl_bbinfo(struct ctl_table *ctl, int write,
 				     void __user *buffer, size_t *lenp,
 				     loff_t *ppos)
 {
@@ -55,7 +55,7 @@
 	return 0;
 }
 
-static int repartition_sysctl_version(ctl_table *ctl, int write,
+static int repartition_sysctl_version(struct ctl_table *ctl, int write,
 				      void __user *buffer, size_t *lenp,
 				      loff_t *ppos)
 {
@@ -70,7 +70,7 @@
 	return ret;
 }
 
-static int repartition_sysctl_nand_size_mb(ctl_table *ctl, int write,
+static int repartition_sysctl_nand_size_mb(struct ctl_table *ctl, int write,
 				           void __user *buffer, size_t *lenp,
 				           loff_t *ppos)
 {
@@ -79,7 +79,7 @@
 	if (nand_size_mb == 0) {
 		mtd = get_mtd_device_nm("rootfs0");
 		if (IS_ERR(mtd)) {
-			printk(KERN_WARNING "repartition: no rootfs0: %d\n",
+			printk(KERN_WARNING "repartition: no rootfs0: %ld\n",
 			       PTR_ERR(mtd));
 			nand_size_mb = 0;
 		} else {
@@ -101,7 +101,7 @@
 	return proc_dointvec(ctl, write, buffer, lenp, ppos);
 }
 
-static ctl_table repartition_data_table[] = {
+static struct ctl_table repartition_data_table[] = {
 	{
 		.procname       = "bbinfo",
 		.data           = bbinfo,
@@ -126,7 +126,7 @@
 	{ }
 };
 
-static ctl_table repartition_dir_table[] = {
+static struct ctl_table repartition_dir_table[] = {
 	{
 		.procname     = "repartition",
 		.mode         = 0555,
@@ -136,7 +136,7 @@
 };
 
 /* Make sure that /proc/sys/dev is there */
-static ctl_table repartition_root_table[] = {
+static struct ctl_table repartition_root_table[] = {
 	{
 		.procname       = "dev",
 		.maxlen         = 0,
diff --git a/drivers/brcmstb/setup.c b/drivers/brcmstb/setup.c
index b86a33a..674ab51 100644
--- a/drivers/brcmstb/setup.c
+++ b/drivers/brcmstb/setup.c
@@ -106,7 +106,14 @@
 	return 0;
 }
 
-static struct ahci_platform_data brcm_ahci_pdata = {
+struct brcm_ahci_platform_data {
+	int (*init)(struct device *dev, void __iomem *addr);
+	void (*exit)(struct device *dev);
+	int (*suspend)(struct device *dev);
+	int (*resume)(struct device *dev);
+};
+
+static struct brcm_ahci_platform_data brcm_ahci_pdata = {
 	.init = &brcm_ahci_init,
 	.exit = &brcm_ahci_exit,
 	.suspend = &brcm_ahci_suspend,
diff --git a/drivers/md/dm-bufio.c b/drivers/md/dm-bufio.c
index c33b497..e7ce5ba 100644
--- a/drivers/md/dm-bufio.c
+++ b/drivers/md/dm-bufio.c
@@ -368,7 +368,7 @@
 static void *alloc_buffer_data(struct dm_bufio_client *c, gfp_t gfp_mask,
 			       enum data_mode *data_mode)
 {
-	unsigned noio_flag;
+	unsigned noio_flag = 0;
 	void *ptr;
 
 	if (c->block_size <= DM_BUFIO_BLOCK_SIZE_SLAB_LIMIT) {
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index eb35e41..e2d432d 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -334,8 +334,11 @@
  */
 static int mmc_decode_ext_csd(struct mmc_card *card, u8 *ext_csd)
 {
-	int err = 0, idx;
+	int err = 0;
+#ifndef CONFIG_BRUNO
+	int idx;
 	unsigned int part_size;
+#endif
 
 	/* Version is coded in the CSD_STRUCTURE byte in the EXT_CSD register */
 	card->ext_csd.raw_ext_csd_structure = ext_csd[EXT_CSD_STRUCTURE];
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 135248b..4975f93 100644
--- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c
@@ -249,7 +249,8 @@
 static void sdhci_reinit(struct sdhci_host *host)
 {
 #ifdef CONFIG_BRUNO
-	uint32_t addr = 0x10409804 | KSEG1, v;
+	uint32_t v;
+	void *addr = (void *)(0x10409804 | KSEG1);
 	printk("xx %s - resetting sdhci\n", __func__);
 	v = ioread32(addr);
 	iowrite32(v & (~0x100000), addr);
diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
index 5d3ac17..3cbf19a 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
@@ -1456,7 +1456,7 @@
 	struct sk_buff *skb;
 	u32 dma_length_status;
 	unsigned long dma_flag;
-	int len, err;
+	int len;
 	unsigned int rxpktprocessed = 0, rxpkttoprocess;
 	unsigned int p_index;
 	unsigned int discards;
diff --git a/drivers/net/wireless/mwifiex/main.c b/drivers/net/wireless/mwifiex/main.c
index c0daff3..cbfd472 100644
--- a/drivers/net/wireless/mwifiex/main.c
+++ b/drivers/net/wireless/mwifiex/main.c
@@ -37,7 +37,6 @@
 module_param(wifi_addr, charp, 0644);
 MODULE_PARM_DESC(wifi_addr, "Wifi adapter base mac address"); 
  
-extern int mac_pton(const char *s, u8 *mac);
 static int mwifiex_set_mac_address(struct net_device *dev, void *addr);
 
 /*
diff --git a/drivers/usb/host/ehci-brcm.c b/drivers/usb/host/ehci-brcm.c
index 36940ec..d92defa 100644
--- a/drivers/usb/host/ehci-brcm.c
+++ b/drivers/usb/host/ehci-brcm.c
@@ -25,11 +25,6 @@
 /* catch unwanted redefinitions */
 #define CONFIG_PCI		0
 
-static void ehci_port_power(const struct ehci_hcd *ehci, int level)
-{
-	printk("%s:%s - Not Implemented!\n", __FILE__, __func__);
-}
-
 /* for global USB settings, see arch/mips/brcmstb/bchip.c */
 
 static int ehci_brcm_reset(struct usb_hcd *hcd)
@@ -74,7 +69,6 @@
 		return ret;
 
 	ehci_reset(ehci);
-	ehci_port_power(ehci, 1);
 
 	return ret;
 }
@@ -216,9 +210,6 @@
 	ehci_writel(ehci, FLAG_CF, &ehci->regs->configured_flag);
 	ehci_readl(ehci, &ehci->regs->command);	/* unblock posted writes */
 
-	/* here we "know" root ports should always stay powered */
-	ehci_port_power(ehci, 1);
-
 	ehci->rh_state = EHCI_RH_SUSPENDED;
 	return 0;
 }
diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c
index 0037ee1..435d1c5 100644
--- a/kernel/time/timekeeping.c
+++ b/kernel/time/timekeeping.c
@@ -124,10 +124,10 @@
 }
 
 #ifdef CONFIG_AR_CLOCK
-long anti_rollback_time = 0;
+u64 anti_rollback_time = 0;
 u64 anti_rollback_jiffies = 0;
 
-static long get_antirollback_clock(void)
+static u64 get_antirollback_clock(void)
 {
 	if (anti_rollback_time == 0) return 0;
 
@@ -137,7 +137,7 @@
 
 static int ar_clock_show(struct seq_file *m, void *v)
 {
-	seq_printf(m, "%lu\n", get_antirollback_clock());
+	seq_printf(m, "%llu\n", get_antirollback_clock());
 	return 0;
 }
 
@@ -145,7 +145,7 @@
 	size_t count, loff_t *offs)
 {
 	char kbuf[32];
-	long t;
+	u64 t;
 
 	if (*offs || count > sizeof(kbuf))
 		return -EINVAL;
@@ -154,7 +154,7 @@
 		return -EFAULT;
 
 	kbuf[sizeof(kbuf)-1] = '\0';
-	if (sscanf(kbuf, "%lu", &t) == 1) {
+	if (sscanf(kbuf, "%llu", &t) == 1) {
 		anti_rollback_time = t;
 		anti_rollback_jiffies = get_jiffies_64();
 	} else {
@@ -834,10 +834,10 @@
 #ifdef CONFIG_AR_CLOCK
 	/* No more than MAX_DELTA seconds before /proc/ar_clock */
 	#define MAX_DELTA	(30*60)
-	long ar_clock = get_antirollback_clock();
+	u64 ar_clock = get_antirollback_clock();
 	if (ar_clock != 0 && ts->tv_sec < (ar_clock - MAX_DELTA)) {
-		printk(KERN_ERR "rejecting settimeofday %lu < "
-			"antirollback %lu\n", ts->tv_sec, ar_clock);
+		printk(KERN_ERR "rejecting settimeofday %llu < "
+			"antirollback %llu\n", ts->tv_sec, ar_clock);
 		return -EPERM;
 	}
 #endif
