Skip to content
Snippets Groups Projects
Commit 85082fd7 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm

* 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm: (241 commits)
  [ARM] 5171/1: ep93xx: fix compilation of modules using clocks
  [ARM] 5133/2: at91sam9g20 defconfig file
  [ARM] 5130/4: Support for the at91sam9g20
  [ARM] 5160/1: IOP3XX: gpio/gpiolib support
  [ARM] at91: Fix NAND FLASH timings for at91sam9x evaluation kits.
  [ARM] 5084/1: zylonite: Register AC97 device
  [ARM] 5085/2: PXA: Move AC97 over to the new central device declaration model
  [ARM] 5120/1: pxa: correct platform driver names for PXA25x and PXA27x UDC drivers
  [ARM] 5147/1: pxaficp_ir: drop pxa_gpio_mode calls, as pin setting
  [ARM] 5145/1: PXA2xx: provide api to control IrDA pins state
  [ARM] 5144/1: pxaficp_ir: cleanup includes
  [ARM] pxa: remove pxa_set_cken()
  [ARM] pxa: allow clk aliases
  [ARM] Feroceon: don't disable BPU on boot
  [ARM] Orion: LED support for HP mv2120
  [ARM] Orion: add RD88F5181L-FXO support
  [ARM] Orion: add RD88F5181L-GE support
  [ARM] Orion: add Netgear WNR854T support
  [ARM] s3c2410_defconfig: update for current build
  [ARM] Acer n30: Minor style and indentation fixes.
  ...
parents 666484f0 53ffe3b4
No related branches found
No related tags found
No related merge requests found
Showing
with 6780 additions and 837 deletions
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -201,7 +201,6 @@ CONFIG_ARM_THUMB=y ...@@ -201,7 +201,6 @@ CONFIG_ARM_THUMB=y
# Kernel Features # Kernel Features
# #
# CONFIG_PREEMPT is not set # CONFIG_PREEMPT is not set
CONFIG_NO_IDLE_HZ=y
CONFIG_HZ=100 CONFIG_HZ=100
CONFIG_AEABI=y CONFIG_AEABI=y
CONFIG_OABI_COMPAT=y CONFIG_OABI_COMPAT=y
......
...@@ -151,7 +151,6 @@ CONFIG_ARM_THUMB=y ...@@ -151,7 +151,6 @@ CONFIG_ARM_THUMB=y
# Kernel Features # Kernel Features
# #
CONFIG_PREEMPT=y CONFIG_PREEMPT=y
# CONFIG_NO_IDLE_HZ is not set
CONFIG_HZ=100 CONFIG_HZ=100
# CONFIG_AEABI is not set # CONFIG_AEABI is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
......
This diff is collapsed.
...@@ -177,7 +177,6 @@ CONFIG_NR_CPUS=4 ...@@ -177,7 +177,6 @@ CONFIG_NR_CPUS=4
CONFIG_HOTPLUG_CPU=y CONFIG_HOTPLUG_CPU=y
CONFIG_LOCAL_TIMERS=y CONFIG_LOCAL_TIMERS=y
# CONFIG_PREEMPT is not set # CONFIG_PREEMPT is not set
# CONFIG_NO_IDLE_HZ is not set
CONFIG_HZ=100 CONFIG_HZ=100
# CONFIG_AEABI is not set # CONFIG_AEABI is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
......
...@@ -126,7 +126,6 @@ CONFIG_ISA_DMA_API=y ...@@ -126,7 +126,6 @@ CONFIG_ISA_DMA_API=y
# #
# Kernel Features # Kernel Features
# #
# CONFIG_NO_IDLE_HZ is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_FLATMEM=y CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y CONFIG_FLAT_NODE_MEM_MAP=y
......
...@@ -190,7 +190,6 @@ CONFIG_ISA_DMA_API=y ...@@ -190,7 +190,6 @@ CONFIG_ISA_DMA_API=y
# #
# CONFIG_TICK_ONESHOT is not set # CONFIG_TICK_ONESHOT is not set
# CONFIG_PREEMPT is not set # CONFIG_PREEMPT is not set
# CONFIG_NO_IDLE_HZ is not set
CONFIG_HZ=100 CONFIG_HZ=100
# CONFIG_AEABI is not set # CONFIG_AEABI is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
......
This diff is collapsed.
...@@ -211,7 +211,6 @@ CONFIG_ARM_THUMB=y ...@@ -211,7 +211,6 @@ CONFIG_ARM_THUMB=y
# #
# CONFIG_TICK_ONESHOT is not set # CONFIG_TICK_ONESHOT is not set
CONFIG_PREEMPT=y CONFIG_PREEMPT=y
# CONFIG_NO_IDLE_HZ is not set
CONFIG_HZ=100 CONFIG_HZ=100
# CONFIG_AEABI is not set # CONFIG_AEABI is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
......
...@@ -164,7 +164,6 @@ CONFIG_PCMCIA_PXA2XX=y ...@@ -164,7 +164,6 @@ CONFIG_PCMCIA_PXA2XX=y
# Kernel Features # Kernel Features
# #
CONFIG_PREEMPT=y CONFIG_PREEMPT=y
# CONFIG_NO_IDLE_HZ is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y CONFIG_FLATMEM_MANUAL=y
......
...@@ -247,7 +247,6 @@ CONFIG_ARM_THUMB=y ...@@ -247,7 +247,6 @@ CONFIG_ARM_THUMB=y
# #
# CONFIG_TICK_ONESHOT is not set # CONFIG_TICK_ONESHOT is not set
# CONFIG_PREEMPT is not set # CONFIG_PREEMPT is not set
# CONFIG_NO_IDLE_HZ is not set
CONFIG_HZ=200 CONFIG_HZ=200
# CONFIG_AEABI is not set # CONFIG_AEABI is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
......
...@@ -195,7 +195,6 @@ CONFIG_PCMCIA_PXA2XX=y ...@@ -195,7 +195,6 @@ CONFIG_PCMCIA_PXA2XX=y
# Kernel Features # Kernel Features
# #
CONFIG_PREEMPT=y CONFIG_PREEMPT=y
# CONFIG_NO_IDLE_HZ is not set
CONFIG_HZ=100 CONFIG_HZ=100
CONFIG_AEABI=y CONFIG_AEABI=y
CONFIG_OABI_COMPAT=y CONFIG_OABI_COMPAT=y
......
This diff is collapsed.
This diff is collapsed.
...@@ -151,7 +151,6 @@ CONFIG_ARM_AMBA=y ...@@ -151,7 +151,6 @@ CONFIG_ARM_AMBA=y
# Kernel Features # Kernel Features
# #
# CONFIG_PREEMPT is not set # CONFIG_PREEMPT is not set
# CONFIG_NO_IDLE_HZ is not set
CONFIG_HZ=100 CONFIG_HZ=100
# CONFIG_AEABI is not set # CONFIG_AEABI is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set # CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
......
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/kexec.h>
#include <linux/proc_fs.h> #include <linux/proc_fs.h>
#include <asm/setup.h> #include <asm/setup.h>
#include <asm/types.h> #include <asm/types.h>
...@@ -7,9 +6,8 @@ ...@@ -7,9 +6,8 @@
struct buffer { struct buffer {
size_t size; size_t size;
char *data; char data[];
}; };
static struct buffer tags_buffer;
static int static int
read_buffer(char* page, char** start, off_t off, int count, read_buffer(char* page, char** start, off_t off, int count,
...@@ -29,58 +27,57 @@ read_buffer(char* page, char** start, off_t off, int count, ...@@ -29,58 +27,57 @@ read_buffer(char* page, char** start, off_t off, int count,
return count; return count;
} }
#define BOOT_PARAMS_SIZE 1536
static int static char __initdata atags_copy[BOOT_PARAMS_SIZE];
create_proc_entries(void)
{
struct proc_dir_entry* tags_entry;
tags_entry = create_proc_read_entry("atags", 0400, NULL, read_buffer, &tags_buffer);
if (!tags_entry)
return -ENOMEM;
return 0;
}
static char __initdata atags_copy_buf[KEXEC_BOOT_PARAMS_SIZE];
static char __initdata *atags_copy;
void __init save_atags(const struct tag *tags) void __init save_atags(const struct tag *tags)
{ {
atags_copy = atags_copy_buf; memcpy(atags_copy, tags, sizeof(atags_copy));
memcpy(atags_copy, tags, KEXEC_BOOT_PARAMS_SIZE);
} }
static int __init init_atags_procfs(void) static int __init init_atags_procfs(void)
{ {
struct tag *tag; /*
int error; * This cannot go into save_atags() because kmalloc and proc don't work
* yet when it is called.
*/
struct proc_dir_entry *tags_entry;
struct tag *tag = (struct tag *)atags_copy;
struct buffer *b;
size_t size;
if (!atags_copy) { if (tag->hdr.tag != ATAG_CORE) {
printk(KERN_WARNING "Exporting ATAGs: No saved tags found\n"); printk(KERN_INFO "No ATAGs?");
return -EIO; return -EINVAL;
} }
for (tag = (struct tag *) atags_copy; tag->hdr.size; tag = tag_next(tag)) for (; tag->hdr.size; tag = tag_next(tag))
; ;
tags_buffer.size = ((char *) tag - atags_copy) + sizeof(tag->hdr); /* include the terminating ATAG_NONE */
tags_buffer.data = kmalloc(tags_buffer.size, GFP_KERNEL); size = (char *)tag - atags_copy + sizeof(struct tag_header);
if (tags_buffer.data == NULL)
return -ENOMEM;
memcpy(tags_buffer.data, atags_copy, tags_buffer.size);
error = create_proc_entries();
if (error) {
printk(KERN_ERR "Exporting ATAGs: not enough memory\n");
kfree(tags_buffer.data);
tags_buffer.size = 0;
tags_buffer.data = NULL;
}
return error; WARN_ON(tag->hdr.tag != ATAG_NONE);
}
b = kmalloc(sizeof(*b) + size, GFP_KERNEL);
if (!b)
goto nomem;
b->size = size;
memcpy(b->data, atags_copy, size);
tags_entry = create_proc_read_entry("atags", 0400,
NULL, read_buffer, b);
if (!tags_entry)
goto nomem;
return 0;
nomem:
kfree(b);
printk(KERN_ERR "Exporting ATAGs: not enough memory\n");
return -ENOMEM;
}
arch_initcall(init_atags_procfs); arch_initcall(init_atags_procfs);
...@@ -680,7 +680,7 @@ static int __init ecard_probeirqhw(void) ...@@ -680,7 +680,7 @@ static int __init ecard_probeirqhw(void)
#define IO_EC_MEMC8_BASE 0 #define IO_EC_MEMC8_BASE 0
#endif #endif
unsigned int __ecard_address(ecard_t *ec, card_type_t type, card_speed_t speed) static unsigned int __ecard_address(ecard_t *ec, card_type_t type, card_speed_t speed)
{ {
unsigned long address = 0; unsigned long address = 0;
int slot = ec->slot_no; int slot = ec->slot_no;
...@@ -1002,7 +1002,7 @@ ecard_probe(int slot, card_type_t type) ...@@ -1002,7 +1002,7 @@ ecard_probe(int slot, card_type_t type)
} }
rc = -ENODEV; rc = -ENODEV;
if ((ec->podaddr = ecard_address(ec, type, ECARD_SYNC)) == 0) if ((ec->podaddr = __ecard_address(ec, type, ECARD_SYNC)) == 0)
goto nodev; goto nodev;
cid.r_zero = 1; cid.r_zero = 1;
...@@ -1141,10 +1141,10 @@ static int ecard_drv_probe(struct device *dev) ...@@ -1141,10 +1141,10 @@ static int ecard_drv_probe(struct device *dev)
id = ecard_match_device(drv->id_table, ec); id = ecard_match_device(drv->id_table, ec);
ecard_claim(ec); ec->claimed = 1;
ret = drv->probe(ec, id); ret = drv->probe(ec, id);
if (ret) if (ret)
ecard_release(ec); ec->claimed = 0;
return ret; return ret;
} }
...@@ -1154,7 +1154,7 @@ static int ecard_drv_remove(struct device *dev) ...@@ -1154,7 +1154,7 @@ static int ecard_drv_remove(struct device *dev)
struct ecard_driver *drv = ECARD_DRV(dev->driver); struct ecard_driver *drv = ECARD_DRV(dev->driver);
drv->remove(ec); drv->remove(ec);
ecard_release(ec); ec->claimed = 0;
/* /*
* Restore the default operations. We ensure that the * Restore the default operations. We ensure that the
...@@ -1182,7 +1182,7 @@ static void ecard_drv_shutdown(struct device *dev) ...@@ -1182,7 +1182,7 @@ static void ecard_drv_shutdown(struct device *dev)
if (dev->driver) { if (dev->driver) {
if (drv->shutdown) if (drv->shutdown)
drv->shutdown(ec); drv->shutdown(ec);
ecard_release(ec); ec->claimed = 0;
} }
/* /*
...@@ -1239,7 +1239,6 @@ static int ecard_bus_init(void) ...@@ -1239,7 +1239,6 @@ static int ecard_bus_init(void)
postcore_initcall(ecard_bus_init); postcore_initcall(ecard_bus_init);
EXPORT_SYMBOL(ecard_readchunk); EXPORT_SYMBOL(ecard_readchunk);
EXPORT_SYMBOL(__ecard_address);
EXPORT_SYMBOL(ecard_register_driver); EXPORT_SYMBOL(ecard_register_driver);
EXPORT_SYMBOL(ecard_remove_driver); EXPORT_SYMBOL(ecard_remove_driver);
EXPORT_SYMBOL(ecard_bus_type); EXPORT_SYMBOL(ecard_bus_type);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment