mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into sh-latest
Conflicts: arch/arm/mach-shmobile/clock-sh73a0.c Signed-off-by: Paul Mundt <[email protected]>
This commit is contained in:
commit
ca371d2854
5093 changed files with 187445 additions and 131892 deletions
|
|
@ -4,6 +4,7 @@ config SUPERH
|
|||
select CLKDEV_LOOKUP
|
||||
select HAVE_IDE if HAS_IOPORT
|
||||
select HAVE_MEMBLOCK
|
||||
select HAVE_MEMBLOCK_NODE_MAP
|
||||
select HAVE_OPROFILE
|
||||
select HAVE_GENERIC_DMA_COHERENT
|
||||
select HAVE_ARCH_TRACEHOOK
|
||||
|
|
|
|||
|
|
@ -12,18 +12,19 @@
|
|||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/stat.h>
|
||||
#include <linux/sysdev.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/string.h>
|
||||
#include <asm/dma.h>
|
||||
|
||||
static struct sysdev_class dma_sysclass = {
|
||||
static struct bus_type dma_subsys = {
|
||||
.name = "dma",
|
||||
.dev_name = "dma",
|
||||
};
|
||||
|
||||
static ssize_t dma_show_devices(struct sys_device *dev,
|
||||
struct sysdev_attribute *attr, char *buf)
|
||||
static ssize_t dma_show_devices(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
ssize_t len = 0;
|
||||
int i;
|
||||
|
|
@ -43,29 +44,29 @@ static ssize_t dma_show_devices(struct sys_device *dev,
|
|||
return len;
|
||||
}
|
||||
|
||||
static SYSDEV_ATTR(devices, S_IRUGO, dma_show_devices, NULL);
|
||||
static DEVICE_ATTR(devices, S_IRUGO, dma_show_devices, NULL);
|
||||
|
||||
static int __init dma_sysclass_init(void)
|
||||
static int __init dma_subsys_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = sysdev_class_register(&dma_sysclass);
|
||||
ret = subsys_system_register(&dma_subsys, NULL);
|
||||
if (unlikely(ret))
|
||||
return ret;
|
||||
|
||||
return sysfs_create_file(&dma_sysclass.kset.kobj, &attr_devices.attr);
|
||||
return device_create_file(dma_subsys.dev_root, &dev_attr_devices.attr);
|
||||
}
|
||||
postcore_initcall(dma_sysclass_init);
|
||||
postcore_initcall(dma_subsys_init);
|
||||
|
||||
static ssize_t dma_show_dev_id(struct sys_device *dev,
|
||||
struct sysdev_attribute *attr, char *buf)
|
||||
static ssize_t dma_show_dev_id(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct dma_channel *channel = to_dma_channel(dev);
|
||||
return sprintf(buf, "%s\n", channel->dev_id);
|
||||
}
|
||||
|
||||
static ssize_t dma_store_dev_id(struct sys_device *dev,
|
||||
struct sysdev_attribute *attr,
|
||||
static ssize_t dma_store_dev_id(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct dma_channel *channel = to_dma_channel(dev);
|
||||
|
|
@ -73,10 +74,10 @@ static ssize_t dma_store_dev_id(struct sys_device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SYSDEV_ATTR(dev_id, S_IRUGO | S_IWUSR, dma_show_dev_id, dma_store_dev_id);
|
||||
static DEVICE_ATTR(dev_id, S_IRUGO | S_IWUSR, dma_show_dev_id, dma_store_dev_id);
|
||||
|
||||
static ssize_t dma_store_config(struct sys_device *dev,
|
||||
struct sysdev_attribute *attr,
|
||||
static ssize_t dma_store_config(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct dma_channel *channel = to_dma_channel(dev);
|
||||
|
|
@ -88,17 +89,17 @@ static ssize_t dma_store_config(struct sys_device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SYSDEV_ATTR(config, S_IWUSR, NULL, dma_store_config);
|
||||
static DEVICE_ATTR(config, S_IWUSR, NULL, dma_store_config);
|
||||
|
||||
static ssize_t dma_show_mode(struct sys_device *dev,
|
||||
struct sysdev_attribute *attr, char *buf)
|
||||
static ssize_t dma_show_mode(struct device *dev,
|
||||
struct device_attribute *attr, char *buf)
|
||||
{
|
||||
struct dma_channel *channel = to_dma_channel(dev);
|
||||
return sprintf(buf, "0x%08x\n", channel->mode);
|
||||
}
|
||||
|
||||
static ssize_t dma_store_mode(struct sys_device *dev,
|
||||
struct sysdev_attribute *attr,
|
||||
static ssize_t dma_store_mode(struct device *dev,
|
||||
struct device_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
struct dma_channel *channel = to_dma_channel(dev);
|
||||
|
|
@ -106,38 +107,38 @@ static ssize_t dma_store_mode(struct sys_device *dev,
|
|||
return count;
|
||||
}
|
||||
|
||||
static SYSDEV_ATTR(mode, S_IRUGO | S_IWUSR, dma_show_mode, dma_store_mode);
|
||||
static DEVICE_ATTR(mode, S_IRUGO | S_IWUSR, dma_show_mode, dma_store_mode);
|
||||
|
||||
#define dma_ro_attr(field, fmt) \
|
||||
static ssize_t dma_show_##field(struct sys_device *dev, \
|
||||
struct sysdev_attribute *attr, char *buf)\
|
||||
static ssize_t dma_show_##field(struct device *dev, \
|
||||
struct device_attribute *attr, char *buf)\
|
||||
{ \
|
||||
struct dma_channel *channel = to_dma_channel(dev); \
|
||||
return sprintf(buf, fmt, channel->field); \
|
||||
} \
|
||||
static SYSDEV_ATTR(field, S_IRUGO, dma_show_##field, NULL);
|
||||
static DEVICE_ATTR(field, S_IRUGO, dma_show_##field, NULL);
|
||||
|
||||
dma_ro_attr(count, "0x%08x\n");
|
||||
dma_ro_attr(flags, "0x%08lx\n");
|
||||
|
||||
int dma_create_sysfs_files(struct dma_channel *chan, struct dma_info *info)
|
||||
{
|
||||
struct sys_device *dev = &chan->dev;
|
||||
struct device *dev = &chan->dev;
|
||||
char name[16];
|
||||
int ret;
|
||||
|
||||
dev->id = chan->vchan;
|
||||
dev->cls = &dma_sysclass;
|
||||
dev->bus = &dma_subsys;
|
||||
|
||||
ret = sysdev_register(dev);
|
||||
ret = device_register(dev);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret |= sysdev_create_file(dev, &attr_dev_id);
|
||||
ret |= sysdev_create_file(dev, &attr_count);
|
||||
ret |= sysdev_create_file(dev, &attr_mode);
|
||||
ret |= sysdev_create_file(dev, &attr_flags);
|
||||
ret |= sysdev_create_file(dev, &attr_config);
|
||||
ret |= device_create_file(dev, &dev_attr_dev_id);
|
||||
ret |= device_create_file(dev, &dev_attr_count);
|
||||
ret |= device_create_file(dev, &dev_attr_mode);
|
||||
ret |= device_create_file(dev, &dev_attr_flags);
|
||||
ret |= device_create_file(dev, &dev_attr_config);
|
||||
|
||||
if (unlikely(ret)) {
|
||||
dev_err(&info->pdev->dev, "Failed creating attrs\n");
|
||||
|
|
@ -150,17 +151,17 @@ int dma_create_sysfs_files(struct dma_channel *chan, struct dma_info *info)
|
|||
|
||||
void dma_remove_sysfs_files(struct dma_channel *chan, struct dma_info *info)
|
||||
{
|
||||
struct sys_device *dev = &chan->dev;
|
||||
struct device *dev = &chan->dev;
|
||||
char name[16];
|
||||
|
||||
sysdev_remove_file(dev, &attr_dev_id);
|
||||
sysdev_remove_file(dev, &attr_count);
|
||||
sysdev_remove_file(dev, &attr_mode);
|
||||
sysdev_remove_file(dev, &attr_flags);
|
||||
sysdev_remove_file(dev, &attr_config);
|
||||
device_remove_file(dev, &dev_attr_dev_id);
|
||||
device_remove_file(dev, &dev_attr_count);
|
||||
device_remove_file(dev, &dev_attr_mode);
|
||||
device_remove_file(dev, &dev_attr_flags);
|
||||
device_remove_file(dev, &dev_attr_config);
|
||||
|
||||
snprintf(name, sizeof(name), "dma%d", chan->chan);
|
||||
sysfs_remove_link(&info->pdev->dev.kobj, name);
|
||||
|
||||
sysdev_unregister(dev);
|
||||
device_unregister(dev);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
#include <linux/spinlock.h>
|
||||
#include <linux/wait.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/sysdev.h>
|
||||
#include <linux/device.h>
|
||||
#include <cpu/dma.h>
|
||||
#include <asm-generic/dma.h>
|
||||
|
||||
|
|
@ -91,7 +91,7 @@ struct dma_channel {
|
|||
|
||||
wait_queue_head_t wait_queue;
|
||||
|
||||
struct sys_device dev;
|
||||
struct device dev;
|
||||
void *priv_data;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +0,0 @@
|
|||
#ifndef __ASM_SH_MEMBLOCK_H
|
||||
#define __ASM_SH_MEMBLOCK_H
|
||||
|
||||
#endif /* __ASM_SH_MEMBLOCK_H */
|
||||
|
|
@ -122,7 +122,6 @@ extern void init_thread_xstate(void);
|
|||
#define TIF_SYSCALL_TRACEPOINT 8 /* for ftrace syscall instrumentation */
|
||||
#define TIF_POLLING_NRFLAG 17 /* true if poll_idle() is polling TIF_NEED_RESCHED */
|
||||
#define TIF_MEMDIE 18 /* is terminating due to OOM killer */
|
||||
#define TIF_FREEZE 19 /* Freezing for suspend */
|
||||
|
||||
#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)
|
||||
#define _TIF_SIGPENDING (1 << TIF_SIGPENDING)
|
||||
|
|
@ -133,7 +132,6 @@ extern void init_thread_xstate(void);
|
|||
#define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME)
|
||||
#define _TIF_SYSCALL_TRACEPOINT (1 << TIF_SYSCALL_TRACEPOINT)
|
||||
#define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG)
|
||||
#define _TIF_FREEZE (1 << TIF_FREEZE)
|
||||
|
||||
/*
|
||||
* _TIF_ALLWORK_MASK and _TIF_WORK_MASK need to fit within 2 bytes, or we
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
#include <linux/init.h>
|
||||
#include <linux/cpu.h>
|
||||
#include <linux/bitmap.h>
|
||||
#include <linux/sysdev.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/slab.h>
|
||||
|
|
@ -337,9 +337,9 @@ static struct kobj_type ktype_percpu_entry = {
|
|||
.default_attrs = sq_sysfs_attrs,
|
||||
};
|
||||
|
||||
static int __devinit sq_sysdev_add(struct sys_device *sysdev)
|
||||
static int __devinit sq_dev_add(struct device *dev)
|
||||
{
|
||||
unsigned int cpu = sysdev->id;
|
||||
unsigned int cpu = dev->id;
|
||||
struct kobject *kobj;
|
||||
int error;
|
||||
|
||||
|
|
@ -348,25 +348,27 @@ static int __devinit sq_sysdev_add(struct sys_device *sysdev)
|
|||
return -ENOMEM;
|
||||
|
||||
kobj = sq_kobject[cpu];
|
||||
error = kobject_init_and_add(kobj, &ktype_percpu_entry, &sysdev->kobj,
|
||||
error = kobject_init_and_add(kobj, &ktype_percpu_entry, &dev->kobj,
|
||||
"%s", "sq");
|
||||
if (!error)
|
||||
kobject_uevent(kobj, KOBJ_ADD);
|
||||
return error;
|
||||
}
|
||||
|
||||
static int __devexit sq_sysdev_remove(struct sys_device *sysdev)
|
||||
static int __devexit sq_dev_remove(struct device *dev)
|
||||
{
|
||||
unsigned int cpu = sysdev->id;
|
||||
unsigned int cpu = dev->id;
|
||||
struct kobject *kobj = sq_kobject[cpu];
|
||||
|
||||
kobject_put(kobj);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct sysdev_driver sq_sysdev_driver = {
|
||||
.add = sq_sysdev_add,
|
||||
.remove = __devexit_p(sq_sysdev_remove),
|
||||
static struct subsys_interface sq_interface = {
|
||||
.name = "sq"
|
||||
.subsys = &cpu_subsys,
|
||||
.add_dev = sq_dev_add,
|
||||
.remove_dev = __devexit_p(sq_dev_remove),
|
||||
};
|
||||
|
||||
static int __init sq_api_init(void)
|
||||
|
|
@ -386,7 +388,7 @@ static int __init sq_api_init(void)
|
|||
if (unlikely(!sq_bitmap))
|
||||
goto out;
|
||||
|
||||
ret = sysdev_driver_register(&cpu_sysdev_class, &sq_sysdev_driver);
|
||||
ret = subsys_interface_register(&sq_interface);
|
||||
if (unlikely(ret != 0))
|
||||
goto out;
|
||||
|
||||
|
|
@ -401,7 +403,7 @@ out:
|
|||
|
||||
static void __exit sq_api_exit(void)
|
||||
{
|
||||
sysdev_driver_unregister(&cpu_sysdev_class, &sq_sysdev_driver);
|
||||
subsys_interface_unregister(&sq_interface);
|
||||
kfree(sq_bitmap);
|
||||
kmem_cache_destroy(sq_cache);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -89,7 +89,8 @@ void cpu_idle(void)
|
|||
|
||||
/* endless idle loop with no priority at all */
|
||||
while (1) {
|
||||
tick_nohz_stop_sched_tick(1);
|
||||
tick_nohz_idle_enter();
|
||||
rcu_idle_enter();
|
||||
|
||||
while (!need_resched()) {
|
||||
check_pgt_cache();
|
||||
|
|
@ -111,7 +112,8 @@ void cpu_idle(void)
|
|||
start_critical_timings();
|
||||
}
|
||||
|
||||
tick_nohz_restart_sched_tick();
|
||||
rcu_idle_exit();
|
||||
tick_nohz_idle_exit();
|
||||
preempt_enable_no_resched();
|
||||
schedule();
|
||||
preempt_disable();
|
||||
|
|
|
|||
|
|
@ -157,9 +157,6 @@ void __init reserve_crashkernel(void)
|
|||
unsigned long long crash_size, crash_base;
|
||||
int ret;
|
||||
|
||||
/* this is necessary because of memblock_phys_mem_size() */
|
||||
memblock_analyze();
|
||||
|
||||
ret = parse_crashkernel(boot_command_line, memblock_phys_mem_size(),
|
||||
&crash_size, &crash_base);
|
||||
if (ret == 0 && crash_size > 0) {
|
||||
|
|
|
|||
|
|
@ -230,7 +230,8 @@ void __init __add_active_range(unsigned int nid, unsigned long start_pfn,
|
|||
pmb_bolt_mapping((unsigned long)__va(start), start, end - start,
|
||||
PAGE_KERNEL);
|
||||
|
||||
add_active_range(nid, start_pfn, end_pfn);
|
||||
memblock_set_node(PFN_PHYS(start_pfn),
|
||||
PFN_PHYS(end_pfn - start_pfn), nid);
|
||||
}
|
||||
|
||||
void __init __weak plat_early_device_setup(void)
|
||||
|
|
|
|||
|
|
@ -143,9 +143,6 @@ config MAX_ACTIVE_REGIONS
|
|||
CPU_SUBTYPE_SH7785)
|
||||
default "1"
|
||||
|
||||
config ARCH_POPULATES_NODE_MAP
|
||||
def_bool y
|
||||
|
||||
config ARCH_SELECT_MEMORY_MODEL
|
||||
def_bool y
|
||||
|
||||
|
|
|
|||
|
|
@ -324,7 +324,6 @@ void __init paging_init(void)
|
|||
unsigned long vaddr, end;
|
||||
int nid;
|
||||
|
||||
memblock_init();
|
||||
sh_mv.mv_mem_init();
|
||||
|
||||
early_reserve_mem();
|
||||
|
|
@ -337,7 +336,7 @@ void __init paging_init(void)
|
|||
sh_mv.mv_mem_reserve();
|
||||
|
||||
memblock_enforce_memory_limit(memory_limit);
|
||||
memblock_analyze();
|
||||
memblock_allow_resize();
|
||||
|
||||
memblock_dump_all();
|
||||
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
|
|||
return oprofile_perf_init(ops);
|
||||
}
|
||||
|
||||
void __exit oprofile_arch_exit(void)
|
||||
void oprofile_arch_exit(void)
|
||||
{
|
||||
oprofile_perf_exit();
|
||||
kfree(sh_pmu_op_name);
|
||||
|
|
@ -60,5 +60,5 @@ int __init oprofile_arch_init(struct oprofile_operations *ops)
|
|||
ops->backtrace = sh_backtrace;
|
||||
return -ENODEV;
|
||||
}
|
||||
void __exit oprofile_arch_exit(void) {}
|
||||
void oprofile_arch_exit(void) {}
|
||||
#endif /* CONFIG_HW_PERF_EVENTS */
|
||||
|
|
|
|||
Loading…
Reference in a new issue