]> git.hungrycats.org Git - linux/commitdiff
v2.4.5.9 -> v2.4.6
authorLinus Torvalds <torvalds@athlon.transmeta.com>
Tue, 5 Feb 2002 03:08:35 +0000 (19:08 -0800)
committerLinus Torvalds <torvalds@athlon.transmeta.com>
Tue, 5 Feb 2002 03:08:35 +0000 (19:08 -0800)
  - misc mtd updates

12 files changed:
Makefile
drivers/char/Config.in
drivers/mtd/nand/Config.in
drivers/mtd/nand/spia.c
drivers/pcmcia/yenta.c
drivers/sound/i810_audio.c
fs/ext2/ialloc.c
fs/namei.c
fs/proc/base.c
include/linux/pci.h
include/linux/pci_ids.h
mm/mmap.c

index c9a769c3a32128e57af6cefa3b181b690c19f0b8..891ee08e20ac828cf54d88aaa8eb74f356a4f87b 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 4
 SUBLEVEL = 6
-EXTRAVERSION =-pre9
+EXTRAVERSION =
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
index 9259d21124cdd6671c60272d9b14fc9380088568..0c8a7091be7608130d70d994584cbad23bfa3af2 100644 (file)
@@ -186,7 +186,7 @@ if [ "$CONFIG_AGP" != "n" ]; then
    bool '  AMD Irongate support' CONFIG_AGP_AMD
    bool '  Generic SiS support' CONFIG_AGP_SIS
    bool '  ALI chipset support' CONFIG_AGP_ALI
-   bool '  Severworks LE/HE support' CONFIG_AGP_SWORKS
+   bool '  Serverworks LE/HE support' CONFIG_AGP_SWORKS
 fi
 
 source drivers/char/drm/Config.in
index b28fdb8b63b9c5ddef83d7b859e3270c0c6be90c..ac2b008eba1240fe42bcbc34f92e9b357f843efd 100644 (file)
@@ -1,6 +1,6 @@
 # drivers/mtd/nand/Config.in
 
-# $Id: Config.in,v 1.1 2001/04/20 15:27:38 dwmw2 Exp $
+# $Id: Config.in,v 1.3 2001/07/03 17:50:56 sjhill Exp $
 
 mainmenu_option next_comment
 
@@ -11,6 +11,8 @@ if [ "$CONFIG_MTD_NAND" = "y" -o "$CONFIG_MTD_NAND" = "m" ]; then
    bool '    Enable ECC correction algorithm'  CONFIG_MTD_NAND_ECC y
    bool '    Verify NAND page writes' CONFIG_MTD_NAND_VERIFY_WRITE y
 fi
-dep_tristate '  NAND Flash device on SPIA board' CONFIG_MTD_NAND_SPIA $CONFIG_MTD_NAND
+if [ "$CONFIG_ARM" = "y" -a "$CONFIG_ARCH_P720T" = "y" ]; then
+   dep_tristate '  NAND Flash device on SPIA board' CONFIG_MTD_NAND_SPIA $CONFIG_MTD_NAND
+fi
 
 endmenu
index bf92ad67a414008b1f178673769d23c4140ab145..1d320326a30d781c43c4cfa5cd27733a59b3c746 100644 (file)
@@ -3,7 +3,7 @@
  *
  *  Copyright (C) 2000 Steven J. Hill (sjhill@cotw.com)
  *
- * $Id: spia.c,v 1.9 2001/06/02 14:47:16 dwmw2 Exp $
+ * $Id: spia.c,v 1.11 2001/07/03 17:50:56 sjhill Exp $
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
  */
 static struct mtd_info *spia_mtd = NULL;
 
+/*
+ * Values specific to the SPIA board (used with EP7212 processor)
+ */
+#define SPIA_IO_ADDR   = 0xd0000000    /* Start of EP7212 IO address space */
+#define SPIA_FIO_ADDR  = 0xf0000000    /* Address where flash is mapped */
+#define SPIA_PEDR      = 0x0080        /*
+                                        * IO offset to Port E data register
+                                        * where the CLE, ALE and NCE pins
+                                        * are wired to.
+                                        */
+#define SPIA_PEDDR     = 0x00c0        /*
+                                        * IO offset to Port E data direction
+                                        * register so we can control the IO
+                                        * lines.
+                                        */
+
 /*
  * Module stuff
  */
@@ -35,6 +51,21 @@ static struct mtd_info *spia_mtd = NULL;
   #define spia_cleanup cleanup_module
 #endif
 
+static int spia_io_base = SPIA_IO_BASE;
+static int spia_fio_base = SPIA_FIO_BASE;
+static int spia_pedr = SPIA_PEDR;
+static int spia_peddr = SPIA_PEDDR;
+
+MODULE_PARM(spia_io_base, "i");
+MODULE_PARM(spia_fio_base, "i");
+MODULE_PARM(spia_pedr, "i");
+MODULE_PARM(spia_peddr, "i");
+
+__setup("spia_io_base=",spia_io_base);
+__setup("spia_fio_base=",spia_fio_base);
+__setup("spia_pedr=",spia_pedr);
+__setup("spia_peddr=",spia_peddr);
+
 /*
  * Define partitions for flash device
  */
@@ -77,11 +108,11 @@ int __init spia_init (void)
         * Set GPIO Port E control register so that the pins are configured
         * to be outputs for controlling the NAND flash.
         */
-       (*(volatile unsigned char *) (IO_BASE + PEDDR)) = 0x07;
+       (*(volatile unsigned char *) (spia_io_base + spia_peddr)) = 0x07;
 
        /* Set address of NAND IO lines */
-       this->IO_ADDR = FIO_BASE;
-       this->CTRL_ADDR = IO_BASE + PEDR;
+       this->IO_ADDR = spia_fio_base;
+       this->CTRL_ADDR = spia_io_base + spia_pedr;
        this->CLE = 0x01;
        this->ALE = 0x02;
        this->NCE = 0x04;
index 4f3afe2a405877737e35a6e8064554fd9d15cd8e..eace5f9b6b306f0f62203bf1524ccfd0141b90cf 100644 (file)
@@ -793,6 +793,7 @@ static struct cardbus_override_struct {
        { PD(TI,1251A), &ti_ops },
        { PD(TI,1211),  &ti_ops },
        { PD(TI,1251B), &ti_ops },
+       { PD(TI,1410),  &ti_ops },
        { PD(TI,1420),  &ti_ops },
 
        { PD(RICOH,RL5C465), &ricoh_ops },
index 32d78c011c867d7c76529b52cdbe0a20acf19f56..44bc041fc2b1d8bb70c0b2512320b817cc718dd6 100644 (file)
@@ -1446,7 +1446,7 @@ static int i810_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
                if (dmabuf->enable & ADC_RUNNING) {
                        stop_adc(state);
                }
-               return ret;
+               return put_user(ret, (int *)arg);
 
        case SNDCTL_DSP_GETBLKSIZE:
                if (file->f_mode & FMODE_WRITE) {
index de384189370cb0859a1bfaa7eac5b15d97c8f5d4..6b0ff54d9129ba52f07a739e574256cb0c88b3c0 100644 (file)
@@ -194,6 +194,7 @@ void ext2_free_inode (struct inode * inode)
         * Note: we must free any quota before locking the superblock,
         * as writing the quota to disk may need the lock as well.
         */
+       DQUOT_INIT(inode);
        DQUOT_FREE_INODE(sb, inode);
        DQUOT_DROP(inode);
 
@@ -417,7 +418,6 @@ repeat:
                cpu_to_le32(le32_to_cpu(es->s_free_inodes_count) - 1);
        mark_buffer_dirty(sb->u.ext2_sb.s_sbh);
        sb->s_dirt = 1;
-       inode->i_mode = mode;
        inode->i_uid = current->fsuid;
        if (test_opt (sb, GRPID))
                inode->i_gid = dir->i_gid;
@@ -427,6 +427,7 @@ repeat:
                        mode |= S_ISGID;
        } else
                inode->i_gid = current->fsgid;
+       inode->i_mode = mode;
 
        inode->i_ino = j;
        inode->i_blksize = PAGE_SIZE;   /* This is the optimal IO size (for stat), not the fs block size */
index 8a6c100d2b5316bd7485073086376626fab6a70c..1ccbb3421747e22be15520a015e4126dff5cee22 100644 (file)
@@ -1126,10 +1126,10 @@ do_link:
                putname(nd->last.name);
                goto exit;
        }
+       error = -ELOOP;
        if (count++==32) {
-               dentry = nd->dentry;
                putname(nd->last.name);
-               goto ok;
+               goto exit;
        }
        dir = nd->dentry;
        down(&dir->d_inode->i_sem);
index 1be054c3286b5ce3f0de4b469a3b0ddd610daa88..f6cce3b126c566d176334c43a8943d8ab832d4aa 100644 (file)
@@ -341,6 +341,8 @@ static ssize_t mem_read(struct file * file, char * buf,
        if (mm)
                atomic_inc(&mm->mm_users);
        task_unlock(task);
+       if (!mm)
+               return 0;
 
        if (file->private_data != (void*)((long)current->self_exec_id) ) {
                mmput(mm);
index 9fc5ccf43a5ac7a475f8b3263e21522751f50e51..4afedc1502a77aed90c6d86aea9fd1153297edbf 100644 (file)
@@ -642,7 +642,6 @@ static inline int pci_enable_device(struct pci_dev *dev) { return -EIO; }
 static inline void pci_disable_device(struct pci_dev *dev) { }
 static inline int pci_module_init(struct pci_driver *drv) { return -ENODEV; }
 static inline int pci_set_dma_mask(struct pci_dev *dev, dma_addr_t mask) { return -EIO; }
-static inline int pci_set_power_state(struct pci_dev *dev, int state) { return 0; }
 static inline int pci_assign_resource(struct pci_dev *dev, int i) { return -EBUSY;}
 static inline int pci_register_driver(struct pci_driver *drv) { return 0;}
 static inline void pci_unregister_driver(struct pci_driver *drv) { }
index 9575ef38dee085a26313c75004e93bb46f877012..b209d49792f6da549f21692c632e5c2b00bf4805 100644 (file)
 #define PCI_DEVICE_ID_TI_1220          0xac17
 #define PCI_DEVICE_ID_TI_1221          0xac19
 #define PCI_DEVICE_ID_TI_1210          0xac1a
+#define PCI_DEVICE_ID_TI_1410          0xac50
 #define PCI_DEVICE_ID_TI_1450          0xac1b
 #define PCI_DEVICE_ID_TI_1225          0xac1c
 #define PCI_DEVICE_ID_TI_1251A         0xac1d
index 707e672a0c963951c2585fb0a93af988c8b4de90..6f539de6dce25cb1dae1c5aa554bda4c4ad8919d 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -65,6 +65,14 @@ int vm_enough_memory(long pages)
        free += nr_free_pages();
        free += nr_swap_pages;
 
+       /*
+        * This double-counts: the nrpages are both in the page-cache
+        * and in the swapper space. At the same time, this compensates
+        * for the swap-space over-allocation (ie "nr_swap_pages" being
+        * too small. 
+        */
+       free += swapper_space.nrpages;
+
        /*
         * The code below doesn't account for free space in the inode
         * and dentry slab cache, slab cache fragmentation, inodes and