diff options
Diffstat (limited to 'arch/sparc/kernel')
| -rw-r--r-- | arch/sparc/kernel/leon_pci.c | 25 | ||||
| -rw-r--r-- | arch/sparc/kernel/pci.c | 22 | ||||
| -rw-r--r-- | arch/sparc/kernel/smp_64.c | 2 | ||||
| -rw-r--r-- | arch/sparc/kernel/sysfs.c | 122 | 
4 files changed, 81 insertions, 90 deletions
diff --git a/arch/sparc/kernel/leon_pci.c b/arch/sparc/kernel/leon_pci.c index f1cf6ef011a..c7bec25fdb1 100644 --- a/arch/sparc/kernel/leon_pci.c +++ b/arch/sparc/kernel/leon_pci.c @@ -19,22 +19,22 @@   */  void leon_pci_init(struct platform_device *ofdev, struct leon_pci_info *info)  { +	LIST_HEAD(resources);  	struct pci_bus *root_bus; -	root_bus = pci_scan_bus_parented(&ofdev->dev, 0, info->ops, info); -	if (root_bus) { -		root_bus->resource[0] = &info->io_space; -		root_bus->resource[1] = &info->mem_space; -		root_bus->resource[2] = NULL; - -		/* Init all PCI devices into PCI tree */ -		pci_bus_add_devices(root_bus); +	pci_add_resource(&resources, &info->io_space); +	pci_add_resource(&resources, &info->mem_space); +	root_bus = pci_scan_root_bus(&ofdev->dev, 0, info->ops, info, +				     &resources); +	if (root_bus) {  		/* Setup IRQs of all devices using custom routines */  		pci_fixup_irqs(pci_common_swizzle, info->map_irq);  		/* Assign devices with resources */  		pci_assign_unassigned_resources(); +	} else { +		pci_free_resource_list(&resources);  	}  } @@ -83,15 +83,6 @@ void __devinit pcibios_fixup_bus(struct pci_bus *pbus)  	int i, has_io, has_mem;  	u16 cmd; -	/* Generic PCI bus probing sets these to point at -	 * &io{port,mem}_resouce which is wrong for us. -	 */ -	if (pbus->self == NULL) { -		pbus->resource[0] = &info->io_space; -		pbus->resource[1] = &info->mem_space; -		pbus->resource[2] = NULL; -	} -  	list_for_each_entry(dev, &pbus->devices, bus_list) {  		/*  		 * We can not rely on that the bootloader has enabled I/O diff --git a/arch/sparc/kernel/pci.c b/arch/sparc/kernel/pci.c index 31111e35281..bb8bc2e519a 100644 --- a/arch/sparc/kernel/pci.c +++ b/arch/sparc/kernel/pci.c @@ -685,23 +685,25 @@ static void __devinit pci_bus_register_of_sysfs(struct pci_bus *bus)  struct pci_bus * __devinit pci_scan_one_pbm(struct pci_pbm_info *pbm,  					    struct device *parent)  { +	LIST_HEAD(resources);  	struct device_node *node = pbm->op->dev.of_node;  	struct pci_bus *bus;  	printk("PCI: Scanning PBM %s\n", node->full_name); -	bus = pci_create_bus(parent, pbm->pci_first_busno, pbm->pci_ops, pbm); +	pci_add_resource(&resources, &pbm->io_space); +	pci_add_resource(&resources, &pbm->mem_space); +	bus = pci_create_root_bus(parent, pbm->pci_first_busno, pbm->pci_ops, +				  pbm, &resources);  	if (!bus) {  		printk(KERN_ERR "Failed to create bus for %s\n",  		       node->full_name); +		pci_free_resource_list(&resources);  		return NULL;  	}  	bus->secondary = pbm->pci_first_busno;  	bus->subordinate = pbm->pci_last_busno; -	bus->resource[0] = &pbm->io_space; -	bus->resource[1] = &pbm->mem_space; -  	pci_of_scan_bus(pbm, node, bus);  	pci_bus_add_devices(bus);  	pci_bus_register_of_sysfs(bus); @@ -711,13 +713,6 @@ struct pci_bus * __devinit pci_scan_one_pbm(struct pci_pbm_info *pbm,  void __devinit pcibios_fixup_bus(struct pci_bus *pbus)  { -	struct pci_pbm_info *pbm = pbus->sysdata; - -	/* Generic PCI bus probing sets these to point at -	 * &io{port,mem}_resouce which is wrong for us. -	 */ -	pbus->resource[0] = &pbm->io_space; -	pbus->resource[1] = &pbm->mem_space;  }  void pcibios_update_irq(struct pci_dev *pdev, int irq) @@ -1083,6 +1078,11 @@ void pci_resource_to_user(const struct pci_dev *pdev, int bar,  	*end = rp->end - offset;  } +void pcibios_set_master(struct pci_dev *dev) +{ +	/* No special bus mastering setup handling */ +} +  static int __init pcibios_init(void)  {  	pci_dfl_cache_line_size = 64 >> 2; diff --git a/arch/sparc/kernel/smp_64.c b/arch/sparc/kernel/smp_64.c index 75607724d29..3b1bd7c5016 100644 --- a/arch/sparc/kernel/smp_64.c +++ b/arch/sparc/kernel/smp_64.c @@ -840,7 +840,7 @@ static void tsb_sync(void *info)  	struct trap_per_cpu *tp = &trap_block[raw_smp_processor_id()];  	struct mm_struct *mm = info; -	/* It is not valid to test "currrent->active_mm == mm" here. +	/* It is not valid to test "current->active_mm == mm" here.  	 *  	 * The value of "current" is not changed atomically with  	 * switch_mm().  But that's OK, we just need to check the diff --git a/arch/sparc/kernel/sysfs.c b/arch/sparc/kernel/sysfs.c index 7408201d7ef..654e8aad3bb 100644 --- a/arch/sparc/kernel/sysfs.c +++ b/arch/sparc/kernel/sysfs.c @@ -3,7 +3,7 @@   * Copyright (C) 2007 David S. Miller <davem@davemloft.net>   */  #include <linux/sched.h> -#include <linux/sysdev.h> +#include <linux/device.h>  #include <linux/cpu.h>  #include <linux/smp.h>  #include <linux/percpu.h> @@ -16,13 +16,13 @@  static DEFINE_PER_CPU(struct hv_mmu_statistics, mmu_stats) __attribute__((aligned(64)));  #define SHOW_MMUSTAT_ULONG(NAME) \ -static ssize_t show_##NAME(struct sys_device *dev, \ -			struct sysdev_attribute *attr, char *buf) \ +static ssize_t show_##NAME(struct device *dev, \ +			struct device_attribute *attr, char *buf) \  { \  	struct hv_mmu_statistics *p = &per_cpu(mmu_stats, dev->id); \  	return sprintf(buf, "%lu\n", p->NAME); \  } \ -static SYSDEV_ATTR(NAME, 0444, show_##NAME, NULL) +static DEVICE_ATTR(NAME, 0444, show_##NAME, NULL)  SHOW_MMUSTAT_ULONG(immu_tsb_hits_ctx0_8k_tte);  SHOW_MMUSTAT_ULONG(immu_tsb_ticks_ctx0_8k_tte); @@ -58,38 +58,38 @@ SHOW_MMUSTAT_ULONG(dmmu_tsb_hits_ctxnon0_256mb_tte);  SHOW_MMUSTAT_ULONG(dmmu_tsb_ticks_ctxnon0_256mb_tte);  static struct attribute *mmu_stat_attrs[] = { -	&attr_immu_tsb_hits_ctx0_8k_tte.attr, -	&attr_immu_tsb_ticks_ctx0_8k_tte.attr, -	&attr_immu_tsb_hits_ctx0_64k_tte.attr, -	&attr_immu_tsb_ticks_ctx0_64k_tte.attr, -	&attr_immu_tsb_hits_ctx0_4mb_tte.attr, -	&attr_immu_tsb_ticks_ctx0_4mb_tte.attr, -	&attr_immu_tsb_hits_ctx0_256mb_tte.attr, -	&attr_immu_tsb_ticks_ctx0_256mb_tte.attr, -	&attr_immu_tsb_hits_ctxnon0_8k_tte.attr, -	&attr_immu_tsb_ticks_ctxnon0_8k_tte.attr, -	&attr_immu_tsb_hits_ctxnon0_64k_tte.attr, -	&attr_immu_tsb_ticks_ctxnon0_64k_tte.attr, -	&attr_immu_tsb_hits_ctxnon0_4mb_tte.attr, -	&attr_immu_tsb_ticks_ctxnon0_4mb_tte.attr, -	&attr_immu_tsb_hits_ctxnon0_256mb_tte.attr, -	&attr_immu_tsb_ticks_ctxnon0_256mb_tte.attr, -	&attr_dmmu_tsb_hits_ctx0_8k_tte.attr, -	&attr_dmmu_tsb_ticks_ctx0_8k_tte.attr, -	&attr_dmmu_tsb_hits_ctx0_64k_tte.attr, -	&attr_dmmu_tsb_ticks_ctx0_64k_tte.attr, -	&attr_dmmu_tsb_hits_ctx0_4mb_tte.attr, -	&attr_dmmu_tsb_ticks_ctx0_4mb_tte.attr, -	&attr_dmmu_tsb_hits_ctx0_256mb_tte.attr, -	&attr_dmmu_tsb_ticks_ctx0_256mb_tte.attr, -	&attr_dmmu_tsb_hits_ctxnon0_8k_tte.attr, -	&attr_dmmu_tsb_ticks_ctxnon0_8k_tte.attr, -	&attr_dmmu_tsb_hits_ctxnon0_64k_tte.attr, -	&attr_dmmu_tsb_ticks_ctxnon0_64k_tte.attr, -	&attr_dmmu_tsb_hits_ctxnon0_4mb_tte.attr, -	&attr_dmmu_tsb_ticks_ctxnon0_4mb_tte.attr, -	&attr_dmmu_tsb_hits_ctxnon0_256mb_tte.attr, -	&attr_dmmu_tsb_ticks_ctxnon0_256mb_tte.attr, +	&dev_attr_immu_tsb_hits_ctx0_8k_tte.attr, +	&dev_attr_immu_tsb_ticks_ctx0_8k_tte.attr, +	&dev_attr_immu_tsb_hits_ctx0_64k_tte.attr, +	&dev_attr_immu_tsb_ticks_ctx0_64k_tte.attr, +	&dev_attr_immu_tsb_hits_ctx0_4mb_tte.attr, +	&dev_attr_immu_tsb_ticks_ctx0_4mb_tte.attr, +	&dev_attr_immu_tsb_hits_ctx0_256mb_tte.attr, +	&dev_attr_immu_tsb_ticks_ctx0_256mb_tte.attr, +	&dev_attr_immu_tsb_hits_ctxnon0_8k_tte.attr, +	&dev_attr_immu_tsb_ticks_ctxnon0_8k_tte.attr, +	&dev_attr_immu_tsb_hits_ctxnon0_64k_tte.attr, +	&dev_attr_immu_tsb_ticks_ctxnon0_64k_tte.attr, +	&dev_attr_immu_tsb_hits_ctxnon0_4mb_tte.attr, +	&dev_attr_immu_tsb_ticks_ctxnon0_4mb_tte.attr, +	&dev_attr_immu_tsb_hits_ctxnon0_256mb_tte.attr, +	&dev_attr_immu_tsb_ticks_ctxnon0_256mb_tte.attr, +	&dev_attr_dmmu_tsb_hits_ctx0_8k_tte.attr, +	&dev_attr_dmmu_tsb_ticks_ctx0_8k_tte.attr, +	&dev_attr_dmmu_tsb_hits_ctx0_64k_tte.attr, +	&dev_attr_dmmu_tsb_ticks_ctx0_64k_tte.attr, +	&dev_attr_dmmu_tsb_hits_ctx0_4mb_tte.attr, +	&dev_attr_dmmu_tsb_ticks_ctx0_4mb_tte.attr, +	&dev_attr_dmmu_tsb_hits_ctx0_256mb_tte.attr, +	&dev_attr_dmmu_tsb_ticks_ctx0_256mb_tte.attr, +	&dev_attr_dmmu_tsb_hits_ctxnon0_8k_tte.attr, +	&dev_attr_dmmu_tsb_ticks_ctxnon0_8k_tte.attr, +	&dev_attr_dmmu_tsb_hits_ctxnon0_64k_tte.attr, +	&dev_attr_dmmu_tsb_ticks_ctxnon0_64k_tte.attr, +	&dev_attr_dmmu_tsb_hits_ctxnon0_4mb_tte.attr, +	&dev_attr_dmmu_tsb_ticks_ctxnon0_4mb_tte.attr, +	&dev_attr_dmmu_tsb_hits_ctxnon0_256mb_tte.attr, +	&dev_attr_dmmu_tsb_ticks_ctxnon0_256mb_tte.attr,  	NULL,  }; @@ -139,15 +139,15 @@ static unsigned long write_mmustat_enable(unsigned long val)  	return sun4v_mmustat_conf(ra, &orig_ra);  } -static ssize_t show_mmustat_enable(struct sys_device *s, -				struct sysdev_attribute *attr, char *buf) +static ssize_t show_mmustat_enable(struct device *s, +				struct device_attribute *attr, char *buf)  {  	unsigned long val = run_on_cpu(s->id, read_mmustat_enable, 0);  	return sprintf(buf, "%lx\n", val);  } -static ssize_t store_mmustat_enable(struct sys_device *s, -			struct sysdev_attribute *attr, const char *buf, +static ssize_t store_mmustat_enable(struct device *s, +			struct device_attribute *attr, const char *buf,  			size_t count)  {  	unsigned long val, err; @@ -163,39 +163,39 @@ static ssize_t store_mmustat_enable(struct sys_device *s,  	return count;  } -static SYSDEV_ATTR(mmustat_enable, 0644, show_mmustat_enable, store_mmustat_enable); +static DEVICE_ATTR(mmustat_enable, 0644, show_mmustat_enable, store_mmustat_enable);  static int mmu_stats_supported; -static int register_mmu_stats(struct sys_device *s) +static int register_mmu_stats(struct device *s)  {  	if (!mmu_stats_supported)  		return 0; -	sysdev_create_file(s, &attr_mmustat_enable); +	device_create_file(s, &dev_attr_mmustat_enable);  	return sysfs_create_group(&s->kobj, &mmu_stat_group);  }  #ifdef CONFIG_HOTPLUG_CPU -static void unregister_mmu_stats(struct sys_device *s) +static void unregister_mmu_stats(struct device *s)  {  	if (!mmu_stats_supported)  		return;  	sysfs_remove_group(&s->kobj, &mmu_stat_group); -	sysdev_remove_file(s, &attr_mmustat_enable); +	device_remove_file(s, &dev_attr_mmustat_enable);  }  #endif  #define SHOW_CPUDATA_ULONG_NAME(NAME, MEMBER) \ -static ssize_t show_##NAME(struct sys_device *dev, \ -		struct sysdev_attribute *attr, char *buf) \ +static ssize_t show_##NAME(struct device *dev, \ +		struct device_attribute *attr, char *buf) \  { \  	cpuinfo_sparc *c = &cpu_data(dev->id); \  	return sprintf(buf, "%lu\n", c->MEMBER); \  }  #define SHOW_CPUDATA_UINT_NAME(NAME, MEMBER) \ -static ssize_t show_##NAME(struct sys_device *dev, \ -		struct sysdev_attribute *attr, char *buf) \ +static ssize_t show_##NAME(struct device *dev, \ +		struct device_attribute *attr, char *buf) \  { \  	cpuinfo_sparc *c = &cpu_data(dev->id); \  	return sprintf(buf, "%u\n", c->MEMBER); \ @@ -209,14 +209,14 @@ SHOW_CPUDATA_UINT_NAME(l1_icache_line_size, icache_line_size);  SHOW_CPUDATA_UINT_NAME(l2_cache_size, ecache_size);  SHOW_CPUDATA_UINT_NAME(l2_cache_line_size, ecache_line_size); -static struct sysdev_attribute cpu_core_attrs[] = { -	_SYSDEV_ATTR(clock_tick,          0444, show_clock_tick, NULL), -	_SYSDEV_ATTR(l1_dcache_size,      0444, show_l1_dcache_size, NULL), -	_SYSDEV_ATTR(l1_dcache_line_size, 0444, show_l1_dcache_line_size, NULL), -	_SYSDEV_ATTR(l1_icache_size,      0444, show_l1_icache_size, NULL), -	_SYSDEV_ATTR(l1_icache_line_size, 0444, show_l1_icache_line_size, NULL), -	_SYSDEV_ATTR(l2_cache_size,       0444, show_l2_cache_size, NULL), -	_SYSDEV_ATTR(l2_cache_line_size,  0444, show_l2_cache_line_size, NULL), +static struct device_attribute cpu_core_attrs[] = { +	__ATTR(clock_tick,          0444, show_clock_tick, NULL), +	__ATTR(l1_dcache_size,      0444, show_l1_dcache_size, NULL), +	__ATTR(l1_dcache_line_size, 0444, show_l1_dcache_line_size, NULL), +	__ATTR(l1_icache_size,      0444, show_l1_icache_size, NULL), +	__ATTR(l1_icache_line_size, 0444, show_l1_icache_line_size, NULL), +	__ATTR(l2_cache_size,       0444, show_l2_cache_size, NULL), +	__ATTR(l2_cache_line_size,  0444, show_l2_cache_line_size, NULL),  };  static DEFINE_PER_CPU(struct cpu, cpu_devices); @@ -224,11 +224,11 @@ static DEFINE_PER_CPU(struct cpu, cpu_devices);  static void register_cpu_online(unsigned int cpu)  {  	struct cpu *c = &per_cpu(cpu_devices, cpu); -	struct sys_device *s = &c->sysdev; +	struct device *s = &c->dev;  	int i;  	for (i = 0; i < ARRAY_SIZE(cpu_core_attrs); i++) -		sysdev_create_file(s, &cpu_core_attrs[i]); +		device_create_file(s, &cpu_core_attrs[i]);  	register_mmu_stats(s);  } @@ -237,12 +237,12 @@ static void register_cpu_online(unsigned int cpu)  static void unregister_cpu_online(unsigned int cpu)  {  	struct cpu *c = &per_cpu(cpu_devices, cpu); -	struct sys_device *s = &c->sysdev; +	struct device *s = &c->dev;  	int i;  	unregister_mmu_stats(s);  	for (i = 0; i < ARRAY_SIZE(cpu_core_attrs); i++) -		sysdev_remove_file(s, &cpu_core_attrs[i]); +		device_remove_file(s, &cpu_core_attrs[i]);  }  #endif  |