Commit 62933d36 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc

* 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (24 commits)
  [POWERPC] Fix compile error with kexec and CONFIG_SMP=n
  [POWERPC] Split initrd logic out of early_init_dt_scan_chosen() to fix warning
  [POWERPC] Fix warning in hpte_decode(), and generalize it
  [POWERPC] Minor pSeries IOMMU debug cleanup
  [POWERPC] PS3: Fix sys manager build error
  [POWERPC] Assorted janitorial EEH cleanups
  [POWERPC] We don't define CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
  [POWERPC] pmu_sys_suspended is only defined for PPC32
  [POWERPC] Fix incorrect calculation of I/O window addresses
  [POWERPC] celleb: Update celleb_defconfig
  [POWERPC] celleb: Fix parsing of machine type hack command line option
  [POWERPC] celleb: Fix PCI config space accesses to subordinate buses
  [POWERPC] celleb: Fix support for multiple PCI domains
  [POWERPC] Wire up sys_utimensat
  [POWERPC] CPM_UART: Removed __init from cpm_uart_init_portdesc to fix warning
  [POWERPC] User rheap from arch/powerpc/lib
  [POWERPC] 83xx: Fix the PCI ranges in the MPC834x_MDS device tree.
  [POWERPC] 83xx: Fix the PCI ranges in the MPC832x_MDS device tree.
  [POWERPC] CPM_UART: cpm_uart_set_termios should take ktermios, not termios
  [POWERPC] Change rheap functions to use ulongs instead of pointers
  ...
parents 0ab59809 f6407120
...@@ -146,7 +146,7 @@ c000 0 0 3 &ipic 17 8 ...@@ -146,7 +146,7 @@ c000 0 0 3 &ipic 17 8
interrupt-parent = < &ipic >; interrupt-parent = < &ipic >;
interrupts = <42 8>; interrupts = <42 8>;
bus-range = <0 0>; bus-range = <0 0>;
ranges = <02000000 0 a0000000 90000000 0 10000000 ranges = <02000000 0 90000000 90000000 0 10000000
42000000 0 80000000 80000000 0 10000000 42000000 0 80000000 80000000 0 10000000
01000000 0 00000000 d0000000 0 00100000>; 01000000 0 00000000 d0000000 0 00100000>;
clock-frequency = <0>; clock-frequency = <0>;
......
...@@ -223,7 +223,7 @@ c000 0 0 3 &ipic 17 8 ...@@ -223,7 +223,7 @@ c000 0 0 3 &ipic 17 8
interrupt-parent = < &ipic >; interrupt-parent = < &ipic >;
interrupts = <42 8>; interrupts = <42 8>;
bus-range = <0 0>; bus-range = <0 0>;
ranges = <02000000 0 a0000000 a0000000 0 10000000 ranges = <02000000 0 90000000 90000000 0 10000000
42000000 0 80000000 80000000 0 10000000 42000000 0 80000000 80000000 0 10000000
01000000 0 00000000 e2000000 0 00100000>; 01000000 0 00000000 e2000000 0 00100000>;
clock-frequency = <3f940aa>; clock-frequency = <3f940aa>;
...@@ -284,7 +284,7 @@ c000 0 0 3 &ipic 17 8 ...@@ -284,7 +284,7 @@ c000 0 0 3 &ipic 17 8
interrupts = <42 8>; interrupts = <42 8>;
bus-range = <0 0>; bus-range = <0 0>;
ranges = <02000000 0 b0000000 b0000000 0 10000000 ranges = <02000000 0 b0000000 b0000000 0 10000000
42000000 0 90000000 90000000 0 10000000 42000000 0 a0000000 a0000000 0 10000000
01000000 0 00000000 e2100000 0 00100000>; 01000000 0 00000000 e2100000 0 00100000>;
clock-frequency = <3f940aa>; clock-frequency = <3f940aa>;
#interrupt-cells = <1>; #interrupt-cells = <1>;
......
This diff is collapsed.
...@@ -1098,28 +1098,18 @@ static int get_bus_io_range(struct pci_bus *bus, unsigned long *start_phys, ...@@ -1098,28 +1098,18 @@ static int get_bus_io_range(struct pci_bus *bus, unsigned long *start_phys,
unsigned long *start_virt, unsigned long *size) unsigned long *start_virt, unsigned long *size)
{ {
struct pci_controller *hose = pci_bus_to_host(bus); struct pci_controller *hose = pci_bus_to_host(bus);
struct pci_bus_region region;
struct resource *res; struct resource *res;
if (bus->self) { if (bus->self)
res = bus->resource[0]; res = bus->resource[0];
pcibios_resource_to_bus(bus->self, &region, res); else
*start_phys = hose->io_base_phys + region.start;
*start_virt = (unsigned long) hose->io_base_virt +
region.start;
if (region.end > region.start)
*size = region.end - region.start + 1;
else {
printk("%s(): unexpected region 0x%lx->0x%lx\n",
__FUNCTION__, region.start, region.end);
return 1;
}
} else {
/* Root Bus */ /* Root Bus */
res = &hose->io_resource; res = &hose->io_resource;
*start_phys = hose->io_base_phys + res->start;
*start_virt = (unsigned long) hose->io_base_virt + res->start; *start_virt = pci_io_base + res->start;
*start_phys = *start_virt + hose->io_base_phys
- (unsigned long) hose->io_base_virt;
if (res->end > res->start) if (res->end > res->start)
*size = res->end - res->start + 1; *size = res->end - res->start + 1;
else { else {
...@@ -1127,7 +1117,6 @@ static int get_bus_io_range(struct pci_bus *bus, unsigned long *start_phys, ...@@ -1127,7 +1117,6 @@ static int get_bus_io_range(struct pci_bus *bus, unsigned long *start_phys,
__FUNCTION__, res->start, res->end); __FUNCTION__, res->start, res->end);
return 1; return 1;
} }
}
return 0; return 0;
} }
......
...@@ -716,11 +716,40 @@ static int __init early_init_dt_scan_cpus(unsigned long node, ...@@ -716,11 +716,40 @@ static int __init early_init_dt_scan_cpus(unsigned long node,
return 0; return 0;
} }
#ifdef CONFIG_BLK_DEV_INITRD
static void __init early_init_dt_check_for_initrd(unsigned long node)
{
unsigned long l;
u32 *prop;
DBG("Looking for initrd properties... ");
prop = of_get_flat_dt_prop(node, "linux,initrd-start", &l);
if (prop) {
initrd_start = (unsigned long)__va(of_read_ulong(prop, l/4));
prop = of_get_flat_dt_prop(node, "linux,initrd-end", &l);
if (prop) {
initrd_end = (unsigned long)
__va(of_read_ulong(prop, l/4));
initrd_below_start_ok = 1;
} else {
initrd_start = 0;
}
}
DBG("initrd_start=0x%lx initrd_end=0x%lx\n", initrd_start, initrd_end);
}
#else
static inline void early_init_dt_check_for_initrd(unsigned long node)
{
}
#endif /* CONFIG_BLK_DEV_INITRD */
static int __init early_init_dt_scan_chosen(unsigned long node, static int __init early_init_dt_scan_chosen(unsigned long node,
const char *uname, int depth, void *data) const char *uname, int depth, void *data)
{ {
unsigned long *lprop; unsigned long *lprop;
u32 *prop;
unsigned long l; unsigned long l;
char *p; char *p;
...@@ -762,21 +791,7 @@ static int __init early_init_dt_scan_chosen(unsigned long node, ...@@ -762,21 +791,7 @@ static int __init early_init_dt_scan_chosen(unsigned long node,
crashk_res.end = crashk_res.start + *lprop - 1; crashk_res.end = crashk_res.start + *lprop - 1;
#endif #endif
#ifdef CONFIG_BLK_DEV_INITRD early_init_dt_check_for_initrd(node);
DBG("Looking for initrd properties... ");
prop = of_get_flat_dt_prop(node, "linux,initrd-start", &l);
if (prop) {
initrd_start = (unsigned long)__va(of_read_ulong(prop, l/4));
prop = of_get_flat_dt_prop(node, "linux,initrd-end", &l);
if (prop) {
initrd_end = (unsigned long)__va(of_read_ulong(prop, l/4));
initrd_below_start_ok = 1;
} else {
initrd_start = 0;
}
}
DBG("initrd_start=0x%lx initrd_end=0x%lx\n", initrd_start, initrd_end);
#endif /* CONFIG_BLK_DEV_INITRD */
/* Retreive command line */ /* Retreive command line */
p = of_get_flat_dt_prop(node, "bootargs", &l); p = of_get_flat_dt_prop(node, "bootargs", &l);
......
...@@ -23,7 +23,5 @@ obj-$(CONFIG_SMP) += locks.o ...@@ -23,7 +23,5 @@ obj-$(CONFIG_SMP) += locks.o
endif endif
# Temporary hack until we have migrated to asm-powerpc # Temporary hack until we have migrated to asm-powerpc
ifeq ($(CONFIG_PPC_MERGE),y)
obj-$(CONFIG_8xx) += rheap.o obj-$(CONFIG_8xx) += rheap.o
obj-$(CONFIG_CPM2) += rheap.o obj-$(CONFIG_CPM2) += rheap.o
endif
This diff is collapsed.
...@@ -376,31 +376,28 @@ static void hpte_decode(hpte_t *hpte, unsigned long slot, ...@@ -376,31 +376,28 @@ static void hpte_decode(hpte_t *hpte, unsigned long slot,
} }
} }
/* /* This works for all page sizes, and for 256M and 1T segments */
* FIXME, the code below works for 16M, 64K, and 4K pages as these
* fall under the p<=23 rules for calculating the virtual address.
* In the case of 16M pages, an extra bit is stolen from the AVPN
* field to achieve the requisite 24 bits.
*
* Does not work for 16G pages or 1 TB segments.
*/
shift = mmu_psize_defs[size].shift; shift = mmu_psize_defs[size].shift;
if (mmu_psize_defs[size].avpnm) avpn = (HPTE_V_AVPN_VAL(hpte_v) & ~mmu_psize_defs[size].avpnm) << 23;
avpnm_bits = __ilog2_u64(mmu_psize_defs[size].avpnm) + 1;
else
avpnm_bits = 0;
if (shift - avpnm_bits <= 23) {
avpn = HPTE_V_AVPN_VAL(hpte_v) << 23;
if (shift < 23) { if (shift < 23) {
unsigned long vpi, pteg; unsigned long vpi, vsid, pteg;
pteg = slot / HPTES_PER_GROUP; pteg = slot / HPTES_PER_GROUP;
if (hpte_v & HPTE_V_SECONDARY) if (hpte_v & HPTE_V_SECONDARY)
pteg = ~pteg; pteg = ~pteg;
switch (hpte_v >> HPTE_V_SSIZE_SHIFT) {
case MMU_SEGSIZE_256M:
vpi = ((avpn >> 28) ^ pteg) & htab_hash_mask; vpi = ((avpn >> 28) ^ pteg) & htab_hash_mask;
avpn |= (vpi << mmu_psize_defs[size].shift); break;
case MMU_SEGSIZE_1T:
vsid = avpn >> 40;
vpi = (vsid ^ (vsid << 25) ^ pteg) & htab_hash_mask;
break;
default:
avpn = vpi = psize = 0;
} }
avpn |= (vpi << mmu_psize_defs[size].shift);
} }
*va = avpn; *va = avpn;
......
...@@ -40,7 +40,9 @@ unsigned long isa_mem_base = 0; ...@@ -40,7 +40,9 @@ unsigned long isa_mem_base = 0;
*/ */
static void __init mpc8313_rdb_setup_arch(void) static void __init mpc8313_rdb_setup_arch(void)
{ {
#ifdef CONFIG_PCI
struct device_node *np; struct device_node *np;
#endif
if (ppc_md.progress) if (ppc_md.progress)
ppc_md.progress("mpc8313_rdb_setup_arch()", 0); ppc_md.progress("mpc8313_rdb_setup_arch()", 0);
......
...@@ -44,7 +44,9 @@ unsigned long isa_mem_base = 0; ...@@ -44,7 +44,9 @@ unsigned long isa_mem_base = 0;
*/ */
static void __init mpc832x_rdb_setup_arch(void) static void __init mpc832x_rdb_setup_arch(void)
{ {
#if defined(CONFIG_PCI) || defined(CONFIG_QUICC_ENGINE)
struct device_node *np; struct device_node *np;
#endif
if (ppc_md.progress) if (ppc_md.progress)
ppc_md.progress("mpc832x_rdb_setup_arch()", 0); ppc_md.progress("mpc832x_rdb_setup_arch()", 0);
......
...@@ -50,7 +50,9 @@ unsigned long isa_mem_base = 0; ...@@ -50,7 +50,9 @@ unsigned long isa_mem_base = 0;
*/ */
static void __init mpc834x_itx_setup_arch(void) static void __init mpc834x_itx_setup_arch(void)
{ {
#ifdef CONFIG_PCI
struct device_node *np; struct device_node *np;
#endif
if (ppc_md.progress) if (ppc_md.progress)
ppc_md.progress("mpc834x_itx_setup_arch()", 0); ppc_md.progress("mpc834x_itx_setup_arch()", 0);
......
...@@ -120,7 +120,9 @@ static int mpc834x_usb_cfg(void) ...@@ -120,7 +120,9 @@ static int mpc834x_usb_cfg(void)
*/ */
static void __init mpc834x_mds_setup_arch(void) static void __init mpc834x_mds_setup_arch(void)
{ {
#ifdef CONFIG_PCI
struct device_node *np; struct device_node *np;
#endif
if (ppc_md.progress) if (ppc_md.progress)
ppc_md.progress("mpc834x_mds_setup_arch()", 0); ppc_md.progress("mpc834x_mds_setup_arch()", 0);
......
...@@ -168,7 +168,7 @@ static void __devinit quirk_uli1575(struct pci_dev *dev) ...@@ -168,7 +168,7 @@ static void __devinit quirk_uli1575(struct pci_dev *dev)
{ {
unsigned short temp; unsigned short temp;
struct pci_controller *hose = pci_bus_to_host(dev->bus); struct pci_controller *hose = pci_bus_to_host(dev->bus);
unsigned char irq2pin[16]; unsigned char irq2pin[16], c;
unsigned long pirq_map_word = 0; unsigned long pirq_map_word = 0;
u32 irq; u32 irq;
int i; int i;
...@@ -288,6 +288,11 @@ static void __devinit quirk_uli1575(struct pci_dev *dev) ...@@ -288,6 +288,11 @@ static void __devinit quirk_uli1575(struct pci_dev *dev)
outb(0x1e, 0x4d1); outb(0x1e, 0x4d1);
#undef ULI1575_SET_DEV_IRQ #undef ULI1575_SET_DEV_IRQ
/* Disable the HD interface and enable the AC97 interface. */
pci_read_config_byte(dev, 0xb8, &c);
c &= 0x7f;
pci_write_config_byte(dev, 0xb8, c);
} }
static void __devinit quirk_uli5288(struct pci_dev *dev) static void __devinit quirk_uli5288(struct pci_dev *dev)
......
...@@ -457,6 +457,7 @@ int __devinit celleb_setup_phb(struct pci_controller *phb) ...@@ -457,6 +457,7 @@ int __devinit celleb_setup_phb(struct pci_controller *phb)
pr_debug("PCI: celleb_setup_phb() %s\n", name); pr_debug("PCI: celleb_setup_phb() %s\n", name);
phb_set_bus_ranges(dev, phb); phb_set_bus_ranges(dev, phb);
phb->buid = 1;
if (strcmp(name, "epci") == 0) { if (strcmp(name, "epci") == 0) {
phb->ops = &celleb_epci_ops; phb->ops = &celleb_epci_ops;
......
...@@ -133,13 +133,13 @@ static int celleb_epci_check_abort(struct pci_controller *hose, ...@@ -133,13 +133,13 @@ static int celleb_epci_check_abort(struct pci_controller *hose,
} }
static volatile void __iomem *celleb_epci_make_config_addr( static volatile void __iomem *celleb_epci_make_config_addr(
struct pci_bus *bus,
struct pci_controller *hose, struct pci_controller *hose,
unsigned int devfn, int where) unsigned int devfn, int where)
{ {
volatile void __iomem *addr; volatile void __iomem *addr;
struct pci_bus *bus = hose->bus;
if (bus->self) if (bus != hose->bus)
addr = celleb_epci_get_epci_cfg(hose) + addr = celleb_epci_get_epci_cfg(hose) +
(((bus->number & 0xff) << 16) (((bus->number & 0xff) << 16)
| ((devfn & 0xff) << 8) | ((devfn & 0xff) << 8)
...@@ -193,7 +193,7 @@ static int celleb_epci_read_config(struct pci_bus *bus, ...@@ -193,7 +193,7 @@ static int celleb_epci_read_config(struct pci_bus *bus,
} else { } else {
clear_and_disable_master_abort_interrupt(hose); clear_and_disable_master_abort_interrupt(hose);
addr = celleb_epci_make_config_addr(hose, devfn, where); addr = celleb_epci_make_config_addr(bus, hose, devfn, where);
switch (size) { switch (size) {
case 1: case 1:
...@@ -257,7 +257,7 @@ static int celleb_epci_write_config(struct pci_bus *bus, ...@@ -257,7 +257,7 @@ static int celleb_epci_write_config(struct pci_bus *bus,
} else { } else {
clear_and_disable_master_abort_interrupt(hose); clear_and_disable_master_abort_interrupt(hose);
addr = celleb_epci_make_config_addr(hose, devfn, where); addr = celleb_epci_make_config_addr(bus, hose, devfn, where);
switch (size) { switch (size) {
case 1: case 1:
......
...@@ -80,7 +80,7 @@ static int celleb_machine_type_hack(char *ptr) ...@@ -80,7 +80,7 @@ static int celleb_machine_type_hack(char *ptr)
return 0; return 0;
} }
__setup("celleb_machine_type_hack", celleb_machine_type_hack); __setup("celleb_machine_type_hack=", celleb_machine_type_hack);
static void celleb_progress(char *s, unsigned short hex) static void celleb_progress(char *s, unsigned short hex)
{ {
......
...@@ -76,7 +76,7 @@ ...@@ -76,7 +76,7 @@
*/ */
#define EEH_MAX_FAILS 2100000 #define EEH_MAX_FAILS 2100000
/* Time to wait for a PCI slot to retport status, in milliseconds */ /* Time to wait for a PCI slot to report status, in milliseconds */
#define PCI_BUS_RESET_WAIT_MSEC (60*1000) #define PCI_BUS_RESET_WAIT_MSEC (60*1000)
/* RTAS tokens */ /* RTAS tokens */
...@@ -95,11 +95,18 @@ EXPORT_SYMBOL(eeh_subsystem_enabled); ...@@ -95,11 +95,18 @@ EXPORT_SYMBOL(eeh_subsystem_enabled);
/* Lock to avoid races due to multiple reports of an error */ /* Lock to avoid races due to multiple reports of an error */
static DEFINE_SPINLOCK(confirm_error_lock); static DEFINE_SPINLOCK(confirm_error_lock);
/* Buffer for reporting slot-error-detail rtas calls */ /* Buffer for reporting slot-error-detail rtas calls. Its here
* in BSS, and not dynamically alloced, so that it ends up in
* RMO where RTAS can access it.
*/
static unsigned char slot_errbuf[RTAS_ERROR_LOG_MAX]; static unsigned char slot_errbuf[RTAS_ERROR_LOG_MAX];
static DEFINE_SPINLOCK(slot_errbuf_lock); static DEFINE_SPINLOCK(slot_errbuf_lock);
static int eeh_error_buf_size; static int eeh_error_buf_size;
/* Buffer for reporting pci register dumps. Its here in BSS, and
* not dynamically alloced, so that it ends up in RMO where RTAS
* can access it.
*/
#define EEH_PCI_REGS_LOG_LEN 4096 #define EEH_PCI_REGS_LOG_LEN 4096
static unsigned char pci_regs_buf[EEH_PCI_REGS_LOG_LEN]; static unsigned char pci_regs_buf[EEH_PCI_REGS_LOG_LEN];
...@@ -218,7 +225,7 @@ static size_t gather_pci_data(struct pci_dn *pdn, char * buf, size_t len) ...@@ -218,7 +225,7 @@ static size_t gather_pci_data(struct pci_dn *pdn, char * buf, size_t len)
void eeh_slot_error_detail(struct pci_dn *pdn, int severity) void eeh_slot_error_detail(struct pci_dn *pdn, int severity)
{ {
size_t loglen = 0; size_t loglen = 0;
memset(pci_regs_buf, 0, EEH_PCI_REGS_LOG_LEN); pci_regs_buf[0] = 0;
rtas_pci_enable(pdn, EEH_THAW_MMIO); rtas_pci_enable(pdn, EEH_THAW_MMIO);
loglen = gather_pci_data(pdn, pci_regs_buf, EEH_PCI_REGS_LOG_LEN); loglen = gather_pci_data(pdn, pci_regs_buf, EEH_PCI_REGS_LOG_LEN);
......
...@@ -378,8 +378,9 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event) ...@@ -378,8 +378,9 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event)
/* Since rtas may enable MMIO when posting the error log, /* Since rtas may enable MMIO when posting the error log,
* don't post the error log until after all dev drivers * don't post the error log until after all dev drivers
* have been informed. */ * have been informed.
eeh_slot_error_detail(frozen_pdn, 1 /* Temporary Error */); */
eeh_slot_error_detail(frozen_pdn, EEH_LOG_TEMP_FAILURE);
/* If all device drivers were EEH-unaware, then shut /* If all device drivers were EEH-unaware, then shut
* down all of the device drivers, and hope they * down all of the device drivers, and hope they
...@@ -470,7 +471,7 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event) ...@@ -470,7 +471,7 @@ struct pci_dn * handle_eeh_events (struct eeh_event *event)
location, drv_str, pci_str); location, drv_str, pci_str);
perm_error: perm_error:
eeh_slot_error_detail(frozen_pdn, 2 /* Permanent Error */); eeh_slot_error_detail(frozen_pdn, EEH_LOG_PERM_FAILURE);
/* Notify all devices that they're about to go down. */ /* Notify all devices that they're about to go down. */
pci_walk_bus(frozen_bus, eeh_report_failure, NULL); pci_walk_bus(frozen_bus, eeh_report_failure, NULL);
......
...@@ -520,7 +520,6 @@ static void pci_dma_dev_setup_pSeriesLP(struct pci_dev *dev) ...@@ -520,7 +520,6 @@ static void pci_dma_dev_setup_pSeriesLP(struct pci_dev *dev)
dev->dev.archdata.dma_data = PCI_DN(pdn)->iommu_table; dev->dev.archdata.dma_data = PCI_DN(pdn)->iommu_table;
return; return;
} }
DBG(" found DMA window, table: %p\n", pci->iommu_table);
pci = PCI_DN(pdn); pci = PCI_DN(pdn);
if (!pci->iommu_table) { if (!pci->iommu_table) {
...@@ -534,6 +533,8 @@ static void pci_dma_dev_setup_pSeriesLP(struct pci_dev *dev) ...@@ -534,6 +533,8 @@ static void pci_dma_dev_setup_pSeriesLP(struct pci_dev *dev)
pci->iommu_table = iommu_init_table(tbl, pci->phb->node); pci->iommu_table = iommu_init_table(tbl, pci->phb->node);
DBG(" created table: %p\n", pci->iommu_table); DBG(" created table: %p\n", pci->iommu_table);
} else {
DBG(" found DMA window, table: %p\n", pci->iommu_table);
} }
dev->dev.archdata.dma_data = pci->iommu_table; dev->dev.archdata.dma_data = pci->iommu_table;
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include <asm/firmware.h> #include <asm/firmware.h>
#include <asm/kexec.h> #include <asm/kexec.h>
#include <asm/mpic.h> #include <asm/mpic.h>
#include <asm/smp.h>
#include "pseries.h" #include "pseries.h"
#include "xics.h" #include "xics.h"
......
...@@ -330,7 +330,7 @@ void m8xx_cpm_dpinit(void) ...@@ -330,7 +330,7 @@ void m8xx_cpm_dpinit(void)
* with the processor and the microcode patches applied / activated. * with the processor and the microcode patches applied / activated.
* But the following should be at least safe. * But the following should be at least safe.
*/ */
rh_attach_region(&cpm_dpmem_info, (void *)CPM_DATAONLY_BASE, CPM_DATAONLY_SIZE); rh_attach_region(&cpm_dpmem_info, CPM_DATAONLY_BASE, CPM_DATAONLY_SIZE);
} }
/* /*
...@@ -338,9 +338,9 @@ void m8xx_cpm_dpinit(void) ...@@ -338,9 +338,9 @@ void m8xx_cpm_dpinit(void)
* This function returns an offset into the DPRAM area. * This function returns an offset into the DPRAM area.
* Use cpm_dpram_addr() to get the virtual address of the area. * Use cpm_dpram_addr() to get the virtual address of the area.
*/ */
uint cpm_dpalloc(uint size, uint align) unsigned long cpm_dpalloc(uint size, uint align)
{ {
void *start; unsigned long start;
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&cpm_dpmem_lock, flags); spin_lock_irqsave(&cpm_dpmem_lock, flags);
...@@ -352,30 +352,30 @@ uint cpm_dpalloc(uint size, uint align) ...@@ -352,30 +352,30 @@ uint cpm_dpalloc(uint size, uint align)
} }
EXPORT_SYMBOL(cpm_dpalloc); EXPORT_SYMBOL(cpm_dpalloc);
int cpm_dpfree(uint offset) int cpm_dpfree(unsigned long offset)
{ {
int ret; int ret;
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&cpm_dpmem_lock, flags); spin_lock_irqsave(&cpm_dpmem_lock, flags);
ret = rh_free(&cpm_dpmem_info, (void *)offset); ret = rh_free(&cpm_dpmem_info, offset);
spin_unlock_irqrestore(&cpm_dpmem_lock, flags); spin_unlock_irqrestore(&cpm_dpmem_lock, flags);
return ret; return ret;
} }
EXPORT_SYMBOL(cpm_dpfree); EXPORT_SYMBOL(cpm_dpfree);
uint cpm_dpalloc_fixed(uint offset, uint size, uint align) unsigned long cpm_dpalloc_fixed(unsigned long offset, uint size, uint align)
{ {
void *start; unsigned long start;
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&cpm_dpmem_lock, flags); spin_lock_irqsave(&cpm_dpmem_lock, flags);
cpm_dpmem_info.alignment = align; cpm_dpmem_info.alignment = align;
start = rh_alloc_fixed(&cpm_dpmem_info, (void *)offset, size, "commproc"); start = rh_alloc_fixed(&cpm_dpmem_info, offset, size, "commproc");
spin_unlock_irqrestore(&cpm_dpmem_lock, flags); spin_unlock_irqrestore(&cpm_dpmem_lock, flags);
return (uint)start; return start;
} }
EXPORT_SYMBOL(cpm_dpalloc_fixed); EXPORT_SYMBOL(cpm_dpalloc_fixed);
...@@ -385,7 +385,7 @@ void cpm_dpdump(void) ...@@ -385,7 +385,7 @@ void cpm_dpdump(void)
} }
EXPORT_SYMBOL(cpm_dpdump); EXPORT_SYMBOL(cpm_dpdump);
void *cpm_dpram_addr(uint offset) void *cpm_dpram_addr(unsigned long offset)
{ {
return (void *)(dpram_vbase + offset); return (void *)(dpram_vbase + offset);
} }
......
...@@ -248,15 +248,14 @@ static void cpm2_dpinit(void) ...@@ -248,15 +248,14 @@ static void cpm2_dpinit(void)
* varies with the processor and the microcode patches activated. * varies with the processor and the microcode patches activated.
* But the following should be at least safe. * But the following should be at least safe.
*/ */
rh_attach_region(&cpm_dpmem_info, (void *)CPM_DATAONLY_BASE, rh_attach_region(&cpm_dpmem_info, CPM_DATAONLY_BASE, CPM_DATAONLY_SIZE);
CPM_DATAONLY_SIZE);
} }
/* This function returns an index into the DPRAM area. /* This function returns an index into the DPRAM area.
*/ */
uint cpm_dpalloc(uint size, uint align) unsigned long cpm_dpalloc(uint size, uint align)
{ {
void *start; unsigned long start;
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&cpm_dpmem_lock, flags); spin_lock_irqsave(&cpm_dpmem_lock, flags);
...@@ -268,13 +267,13 @@ uint cpm_dpalloc(uint size, uint align) ...@@ -268,13 +267,13 @@ uint cpm_dpalloc(uint size, uint align)
} }
EXPORT_SYMBOL(cpm_dpalloc); EXPORT_SYMBOL(cpm_dpalloc);
int cpm_dpfree(uint offset) int cpm_dpfree(unsigned long offset)
{ {
int ret; int ret;
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&cpm_dpmem_lock, flags); spin_lock_irqsave(&cpm_dpmem_lock, flags);
ret = rh_free(&cpm_dpmem_info, (void *)offset); ret = rh_free(&cpm_dpmem_info, offset);
spin_unlock_irqrestore(&cpm_dpmem_lock, flags); spin_unlock_irqrestore(&cpm_dpmem_lock, flags);
return ret; return ret;
...@@ -282,17 +281,17 @@ int cpm_dpfree(uint offset) ...@@ -282,17 +281,17 @@ int cpm_dpfree(uint offset)
EXPORT_SYMBOL(cpm_dpfree); EXPORT_SYMBOL(cpm_dpfree);
/* not sure if this is ever needed */ /* not sure if this is ever needed */
uint cpm_dpalloc_fixed(uint offset, uint size, uint align) unsigned long cpm_dpalloc_fixed(unsigned long offset, uint size, uint align)
{ {
void *start; unsigned long start;
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&cpm_dpmem_lock, flags); spin_lock_irqsave(&cpm_dpmem_lock, flags);
cpm_dpmem_info.alignment = align; cpm_dpmem_info.alignment = align;
start = rh_alloc_fixed(&cpm_dpmem_info, (void *)offset, size, "commproc"); start = rh_alloc_fixed(&cpm_dpmem_info, offset, size, "commproc");
spin_unlock_irqrestore(&cpm_dpmem_lock, flags); spin_unlock_irqrestore(&cpm_dpmem_lock, flags);
return (uint)start; return start;
} }
EXPORT_SYMBOL(cpm_dpalloc_fixed); EXPORT_SYMBOL(cpm_dpalloc_fixed);
...@@ -302,7 +301,7 @@ void cpm_dpdump(void) ...@@ -302,7 +301,7 @@ void cpm_dpdump(void)
} }
EXPORT_SYMBOL(cpm_dpdump); EXPORT_SYMBOL(cpm_dpdump);
void *cpm_dpram_addr(uint offset) void *cpm_dpram_addr(unsigned long offset)
{ {
return (void *)(im_dprambase + offset); return (void *)(im_dprambase + offset);
} }
......
...@@ -244,7 +244,7 @@ EXPORT_SYMBOL(qe_put_snum); ...@@ -244,7 +244,7 @@ EXPORT_SYMBOL(qe_put_snum);
static int qe_sdma_init(void) static int qe_sdma_init(void)
{ {
struct sdma *sdma = &qe_immr->sdma; struct sdma *sdma = &qe_immr->sdma;
u32 sdma_buf_offset; unsigned long sdma_buf_offset;
if (!sdma) if (!sdma)
return -ENODEV; return -ENODEV;
...@@ -252,10 +252,10 @@ static int qe_sdma_init(void) ...@@ -252,10 +252,10 @@ static int qe_sdma_init(void)
/* allocate 2 internal temporary buffers (512 bytes size each) for /* allocate 2 internal temporary buffers (512 bytes size each) for
* the SDMA */ * the SDMA */
sdma_buf_offset = qe_muram_alloc(512 * 2, 4096); sdma_buf_offset = qe_muram_alloc(512 * 2, 4096);
if (IS_MURAM_ERR(sdma_buf_offset)) if (IS_ERR_VALUE(sdma_buf_offset))
return -ENOMEM; return -ENOMEM;
out_be32(&sdma->sdebcr, sdma_buf_offset & QE_SDEBCR_BA_MASK); out_be32(&sdma->sdebcr, (u32) sdma_buf_offset & QE_SDEBCR_BA_MASK);
out_be32(&sdma->sdmr, (QE_SDMR_GLB_1_MSK | out_be32(&sdma->sdmr, (QE_SDMR_GLB_1_MSK |
(0x1 << QE_SDMR_CEN_SHIFT))); (0x1 << QE_SDMR_CEN_SHIFT)));
...@@ -291,33 +291,32 @@ static void qe_muram_init(void) ...@@ -291,33 +291,32 @@ static void qe_muram_init(void)
if ((np = of_find_node_by_name(NULL, "data-only")) != NULL) { if ((np = of_find_node_by_name(NULL, "data-only")) != NULL) {
address = *of_get_address(np, 0, &size, &flags); address = *of_get_address(np, 0, &size, &flags);
of_node_put(np); of_node_put(np);
rh_attach_region(&qe_muram_info, rh_attach_region(&qe_muram_info, address, (int) size);
(void *)address, (int)size);
} }
} }
/* This function returns an index into the MURAM area. /* This function returns an index into the MURAM area.
*/ */
u32 qe_muram_alloc(u32 size, u32 align) unsigned long qe_muram_alloc(int size, int align)
{ {
void *start; unsigned long start;
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&qe_muram_lock, flags); spin_lock_irqsave(&qe_muram_lock, flags);
start = rh_alloc_align(&qe_muram_info, size, align, "QE"); start = rh_alloc_align(&qe_muram_info, size, align, "QE");
spin_unlock_irqrestore(&qe_muram_lock, flags); spin_unlock_irqrestore(&qe_muram_lock, flags);
return (u32) start; return start;
} }
EXPORT_SYMBOL(qe_muram_alloc); EXPORT_SYMBOL(qe_muram_alloc);
int qe_muram_free(u32 offset) int qe_muram_free(unsigned long offset)
{ {
int ret; int ret;
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&qe_muram_lock, flags); spin_lock_irqsave(&qe_muram_lock, flags);
ret = rh_free(&qe_muram_info, (void *)offset); ret = rh_free(&qe_muram_info, offset);
spin_unlock_irqrestore(&qe_muram_lock, flags); spin_unlock_irqrestore(&qe_muram_lock, flags);
return ret; return ret;
...@@ -325,16 +324,16 @@ int qe_muram_free(u32 offset) ...@@ -325,16 +324,16 @@ int qe_muram_free(u32 offset)
EXPORT_SYMBOL(qe_muram_free); EXPORT_SYMBOL(qe_muram_free);
/* not sure if this is ever needed */ /* not sure if this is ever needed */
u32 qe_muram_alloc_fixed(u32 offset, u32 size) unsigned long qe_muram_alloc_fixed(unsigned long offset, int size)
{ {
void *start; unsigned long start;
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&qe_muram_lock, flags); spin_lock_irqsave(&qe_muram_lock, flags);
start = rh_alloc_fixed(&qe_muram_info, (void *)offset, size, "commproc"); start = rh_alloc_fixed(&qe_muram_info, offset, size, "commproc");
spin_unlock_irqrestore(&qe_muram_lock, flags); spin_unlock_irqrestore(&qe_muram_lock, flags);
return (u32) start; return start;
} }
EXPORT_SYMBOL(qe_muram_alloc_fixed); EXPORT_SYMBOL(qe_muram_alloc_fixed);
...@@ -344,7 +343,7 @@ void qe_muram_dump(void) ...@@ -344,7 +343,7 @@ void qe_muram_dump(void)
} }
EXPORT_SYMBOL(qe_muram_dump); EXPORT_SYMBOL(qe_muram_dump);
void *qe_muram_addr(u32 offset) void *qe_muram_addr(unsigned long offset)
{ {
return (void *)&qe_immr->muram[offset]; return (void *)&qe_immr->muram[offset];
} }
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/stddef.h> #include <linux/stddef.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/err.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/immap_qe.h> #include <asm/immap_qe.h>
...@@ -268,7 +269,7 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc ...@@ -268,7 +269,7 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc
/* Allocate memory for Tx Virtual Fifo */ /* Allocate memory for Tx Virtual Fifo */
uccf->ucc_fast_tx_virtual_fifo_base_offset = uccf->ucc_fast_tx_virtual_fifo_base_offset =
qe_muram_alloc(uf_info->utfs, UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT); qe_muram_alloc(uf_info->utfs, UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT);
if (IS_MURAM_ERR(uccf->ucc_fast_tx_virtual_fifo_base_offset)) { if (IS_ERR_VALUE(uccf->ucc_fast_tx_virtual_fifo_base_offset)) {
printk(KERN_ERR "%s: cannot allocate MURAM for TX FIFO", __FUNCTION__); printk(KERN_ERR "%s: cannot allocate MURAM for TX FIFO", __FUNCTION__);
uccf->ucc_fast_tx_virtual_fifo_base_offset = 0; uccf->ucc_fast_tx_virtual_fifo_base_offset = 0;
ucc_fast_free(uccf); ucc_fast_free(uccf);
...@@ -280,7 +281,7 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc ...@@ -280,7 +281,7 @@ int ucc_fast_init(struct ucc_fast_info * uf_info, struct ucc_fast_private ** ucc
qe_muram_alloc(uf_info->urfs + qe_muram_alloc(uf_info->urfs +
UCC_FAST_RECEIVE_VIRTUAL_FIFO_SIZE_FUDGE_FACTOR, UCC_FAST_RECEIVE_VIRTUAL_FIFO_SIZE_FUDGE_FACTOR,
UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT); UCC_FAST_VIRT_FIFO_REGS_ALIGNMENT);
if (IS_MURAM_ERR(uccf->ucc_fast_rx_virtual_fifo_base_offset)) { if (IS_ERR_VALUE(uccf->ucc_fast_rx_virtual_fifo_base_offset)) {
printk(KERN_ERR "%s: cannot allocate MURAM for RX FIFO", __FUNCTION__); printk(KERN_ERR "%s: cannot allocate MURAM for RX FIFO", __FUNCTION__);
uccf->ucc_fast_rx_virtual_fifo_base_offset = 0; uccf->ucc_fast_rx_virtual_fifo_base_offset = 0;
ucc_fast_free(uccf); ucc_fast_free(uccf);
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/stddef.h> #include <linux/stddef.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/err.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/immap_qe.h> #include <asm/immap_qe.h>
...@@ -175,7 +176,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc ...@@ -175,7 +176,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc
/* Get PRAM base */ /* Get PRAM base */
uccs->us_pram_offset = uccs->us_pram_offset =
qe_muram_alloc(UCC_SLOW_PRAM_SIZE, ALIGNMENT_OF_UCC_SLOW_PRAM); qe_muram_alloc(UCC_SLOW_PRAM_SIZE, ALIGNMENT_OF_UCC_SLOW_PRAM);
if (IS_MURAM_ERR(uccs->us_pram_offset)) { if (IS_ERR_VALUE(uccs->us_pram_offset)) {
printk(KERN_ERR "%s: cannot allocate MURAM for PRAM", __FUNCTION__); printk(KERN_ERR "%s: cannot allocate MURAM for PRAM", __FUNCTION__);
ucc_slow_free(uccs); ucc_slow_free(uccs);
return -ENOMEM; return -ENOMEM;
...@@ -210,7 +211,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc ...@@ -210,7 +211,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc
uccs->rx_base_offset = uccs->rx_base_offset =
qe_muram_alloc(us_info->rx_bd_ring_len * sizeof(struct qe_bd), qe_muram_alloc(us_info->rx_bd_ring_len * sizeof(struct qe_bd),
QE_ALIGNMENT_OF_BD); QE_ALIGNMENT_OF_BD);
if (IS_MURAM_ERR(uccs->rx_base_offset)) { if (IS_ERR_VALUE(uccs->rx_base_offset)) {
printk(KERN_ERR "%s: cannot allocate RX BDs", __FUNCTION__); printk(KERN_ERR "%s: cannot allocate RX BDs", __FUNCTION__);
uccs->rx_base_offset = 0; uccs->rx_base_offset = 0;
ucc_slow_free(uccs); ucc_slow_free(uccs);
...@@ -220,7 +221,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc ...@@ -220,7 +221,7 @@ int ucc_slow_init(struct ucc_slow_info * us_info, struct ucc_slow_private ** ucc
uccs->tx_base_offset = uccs->tx_base_offset =
qe_muram_alloc(us_info->tx_bd_ring_len * sizeof(struct qe_bd), qe_muram_alloc(us_info->tx_bd_ring_len * sizeof(struct qe_bd),
QE_ALIGNMENT_OF_BD); QE_ALIGNMENT_OF_BD);
if (IS_MURAM_ERR(uccs->tx_base_offset)) { if (IS_ERR_VALUE(uccs->tx_base_offset)) {
printk(KERN_ERR "%s: cannot allocate TX BDs", __FUNCTION__); printk(KERN_ERR "%s: cannot allocate TX BDs", __FUNCTION__);
uccs->tx_base_offset = 0; uccs->tx_base_offset = 0;
ucc_slow_free(uccs); ucc_slow_free(uccs);
......
...@@ -402,7 +402,7 @@ void m8xx_cpm_dpinit(void) ...@@ -402,7 +402,7 @@ void m8xx_cpm_dpinit(void)
* with the processor and the microcode patches applied / activated. * with the processor and the microcode patches applied / activated.
* But the following should be at least safe. * But the following should be at least safe.
*/ */
rh_attach_region(&cpm_dpmem_info, (void *)CPM_DATAONLY_BASE, CPM_DATAONLY_SIZE); rh_attach_region(&cpm_dpmem_info, CPM_DATAONLY_BASE, CPM_DATAONLY_SIZE);
} }
/* /*
...@@ -410,9 +410,9 @@ void m8xx_cpm_dpinit(void) ...@@ -410,9 +410,9 @@ void m8xx_cpm_dpinit(void)
* This function returns an offset into the DPRAM area. * This function returns an offset into the DPRAM area.
* Use cpm_dpram_addr() to get the virtual address of the area. * Use cpm_dpram_addr() to get the virtual address of the area.
*/ */
uint cpm_dpalloc(uint size, uint align) unsigned long cpm_dpalloc(uint size, uint align)
{ {
void *start; unsigned long start;
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&cpm_dpmem_lock, flags); spin_lock_irqsave(&cpm_dpmem_lock, flags);
...@@ -420,34 +420,34 @@ uint cpm_dpalloc(uint size, uint align) ...@@ -420,34 +420,34 @@ uint cpm_dpalloc(uint size, uint align)
start = rh_alloc(&cpm_dpmem_info, size, "commproc"); start = rh_alloc(&cpm_dpmem_info, size, "commproc");
spin_unlock_irqrestore(&cpm_dpmem_lock, flags); spin_unlock_irqrestore(&cpm_dpmem_lock, flags);
return (uint)start; return start;
} }
EXPORT_SYMBOL(cpm_dpalloc); EXPORT_SYMBOL(cpm_dpalloc);
int cpm_dpfree(uint offset) int cpm_dpfree(unsigned long offset)
{ {
int ret; int ret;
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&cpm_dpmem_lock, flags); spin_lock_irqsave(&cpm_dpmem_lock, flags);
ret = rh_free(&cpm_dpmem_info, (void *)offset); ret = rh_free(&cpm_dpmem_info, offset);
spin_unlock_irqrestore(&cpm_dpmem_lock, flags); spin_unlock_irqrestore(&cpm_dpmem_lock, flags);
return ret; return ret;
} }
EXPORT_SYMBOL(cpm_dpfree); EXPORT_SYMBOL(cpm_dpfree);
uint cpm_dpalloc_fixed(uint offset, uint size, uint align) unsigned long cpm_dpalloc_fixed(unsigned long offset, uint size, uint align)
{ {
void *start; unsigned long start;
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&cpm_dpmem_lock, flags); spin_lock_irqsave(&cpm_dpmem_lock, flags);
cpm_dpmem_info.alignment = align; cpm_dpmem_info.alignment = align;
start = rh_alloc_fixed(&cpm_dpmem_info, (void *)offset, size, "commproc"); start = rh_alloc_fixed(&cpm_dpmem_info, offset, size, "commproc");
spin_unlock_irqrestore(&cpm_dpmem_lock, flags); spin_unlock_irqrestore(&cpm_dpmem_lock, flags);
return (uint)start; return start;
} }
EXPORT_SYMBOL(cpm_dpalloc_fixed); EXPORT_SYMBOL(cpm_dpalloc_fixed);
...@@ -457,7 +457,7 @@ void cpm_dpdump(void) ...@@ -457,7 +457,7 @@ void cpm_dpdump(void)
} }
EXPORT_SYMBOL(cpm_dpdump); EXPORT_SYMBOL(cpm_dpdump);
void *cpm_dpram_addr(uint offset) void *cpm_dpram_addr(unsigned long offset)
{ {
return ((immap_t *)IMAP_ADDR)->im_cpm.cp_dpmem + offset; return ((immap_t *)IMAP_ADDR)->im_cpm.cp_dpmem + offset;
} }
......
...@@ -3,6 +3,3 @@ ...@@ -3,6 +3,3 @@
# #
obj-y := checksum.o string.o div64.o obj-y := checksum.o string.o div64.o
obj-$(CONFIG_8xx) += rheap.o
obj-$(CONFIG_CPM2) += rheap.o
This diff is collapsed.
...@@ -136,15 +136,14 @@ static void cpm2_dpinit(void) ...@@ -136,15 +136,14 @@ static void cpm2_dpinit(void)
* varies with the processor and the microcode patches activated. * varies with the processor and the microcode patches activated.
* But the following should be at least safe. * But the following should be at least safe.
*/ */
rh_attach_region(&cpm_dpmem_info, (void *)CPM_DATAONLY_BASE, rh_attach_region(&cpm_dpmem_info, CPM_DATAONLY_BASE, CPM_DATAONLY_SIZE);
CPM_DATAONLY_SIZE);
} }
/* This function returns an index into the DPRAM area. /* This function returns an index into the DPRAM area.
*/ */
uint cpm_dpalloc(uint size, uint align) unsigned long cpm_dpalloc(uint size, uint align)
{ {
void *start; unsigned long start;
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&cpm_dpmem_lock, flags); spin_lock_irqsave(&cpm_dpmem_lock, flags);
...@@ -152,17 +151,17 @@ uint cpm_dpalloc(uint size, uint align) ...@@ -152,17 +151,17 @@ uint cpm_dpalloc(uint size, uint align)
start = rh_alloc(&cpm_dpmem_info, size, "commproc"); start = rh_alloc(&cpm_dpmem_info, size, "commproc");
spin_unlock_irqrestore(&cpm_dpmem_lock, flags); spin_unlock_irqrestore(&cpm_dpmem_lock, flags);
return (uint)start; return start;
} }
EXPORT_SYMBOL(cpm_dpalloc); EXPORT_SYMBOL(cpm_dpalloc);
int cpm_dpfree(uint offset) int cpm_dpfree(unsigned long offset)
{ {
int ret; int ret;
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&cpm_dpmem_lock, flags); spin_lock_irqsave(&cpm_dpmem_lock, flags);
ret = rh_free(&cpm_dpmem_info, (void *)offset); ret = rh_free(&cpm_dpmem_info, offset);
spin_unlock_irqrestore(&cpm_dpmem_lock, flags); spin_unlock_irqrestore(&cpm_dpmem_lock, flags);
return ret; return ret;
...@@ -170,17 +169,17 @@ int cpm_dpfree(uint offset) ...@@ -170,17 +169,17 @@ int cpm_dpfree(uint offset)
EXPORT_SYMBOL(cpm_dpfree); EXPORT_SYMBOL(cpm_dpfree);
/* not sure if this is ever needed */ /* not sure if this is ever needed */
uint cpm_dpalloc_fixed(uint offset, uint size, uint align) unsigned long cpm_dpalloc_fixed(unsigned long offset, uint size, uint align)
{ {
void *start; unsigned long start;
unsigned long flags; unsigned long flags;
spin_lock_irqsave(&cpm_dpmem_lock, flags); spin_lock_irqsave(&cpm_dpmem_lock, flags);
cpm_dpmem_info.alignment = align; cpm_dpmem_info.alignment = align;
start = rh_alloc_fixed(&cpm_dpmem_info, (void *)offset, size, "commproc"); start = rh_alloc_fixed(&cpm_dpmem_info, offset, size, "commproc");
spin_unlock_irqrestore(&cpm_dpmem_lock, flags); spin_unlock_irqrestore(&cpm_dpmem_lock, flags);
return (uint)start; return start;
} }
EXPORT_SYMBOL(cpm_dpalloc_fixed); EXPORT_SYMBOL(cpm_dpalloc_fixed);
...@@ -190,7 +189,7 @@ void cpm_dpdump(void) ...@@ -190,7 +189,7 @@ void cpm_dpdump(void)
} }
EXPORT_SYMBOL(cpm_dpdump); EXPORT_SYMBOL(cpm_dpdump);
void *cpm_dpram_addr(uint offset) void *cpm_dpram_addr(unsigned long offset)
{ {
return (void *)&cpm2_immr->im_dprambase[offset]; return (void *)&cpm2_immr->im_dprambase[offset];
} }
......
...@@ -167,7 +167,7 @@ static int allocate_bd(struct net_device *dev) ...@@ -167,7 +167,7 @@ static int allocate_bd(struct net_device *dev)
fep->ring_mem_addr = cpm_dpalloc((fpi->tx_ring + fpi->rx_ring) * fep->ring_mem_addr = cpm_dpalloc((fpi->tx_ring + fpi->rx_ring) *
sizeof(cbd_t), 8); sizeof(cbd_t), 8);
if (IS_DPERR(fep->ring_mem_addr)) if (IS_ERR_VALUE(fep->ring_mem_addr))
return -ENOMEM; return -ENOMEM;
fep->ring_base = cpm_dpram_addr(fep->ring_mem_addr); fep->ring_base = cpm_dpram_addr(fep->ring_mem_addr);
......
...@@ -293,7 +293,7 @@ static int fill_init_enet_entries(struct ucc_geth_private *ugeth, ...@@ -293,7 +293,7 @@ static int fill_init_enet_entries(struct ucc_geth_private *ugeth,
else { else {
init_enet_offset = init_enet_offset =
qe_muram_alloc(thread_size, thread_alignment); qe_muram_alloc(thread_size, thread_alignment);
if (IS_MURAM_ERR(init_enet_offset)) { if (IS_ERR_VALUE(init_enet_offset)) {
ugeth_err ugeth_err
("fill_init_enet_entries: Can not allocate DPRAM memory."); ("fill_init_enet_entries: Can not allocate DPRAM memory.");
qe_put_snum((u8) snum); qe_put_snum((u8) snum);
...@@ -2594,7 +2594,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) ...@@ -2594,7 +2594,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
ugeth->tx_bd_ring_offset[j] = ugeth->tx_bd_ring_offset[j] =
qe_muram_alloc(length, qe_muram_alloc(length,
UCC_GETH_TX_BD_RING_ALIGNMENT); UCC_GETH_TX_BD_RING_ALIGNMENT);
if (!IS_MURAM_ERR(ugeth->tx_bd_ring_offset[j])) if (!IS_ERR_VALUE(ugeth->tx_bd_ring_offset[j]))
ugeth->p_tx_bd_ring[j] = ugeth->p_tx_bd_ring[j] =
(u8 *) qe_muram_addr(ugeth-> (u8 *) qe_muram_addr(ugeth->
tx_bd_ring_offset[j]); tx_bd_ring_offset[j]);
...@@ -2629,7 +2629,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) ...@@ -2629,7 +2629,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
ugeth->rx_bd_ring_offset[j] = ugeth->rx_bd_ring_offset[j] =
qe_muram_alloc(length, qe_muram_alloc(length,
UCC_GETH_RX_BD_RING_ALIGNMENT); UCC_GETH_RX_BD_RING_ALIGNMENT);
if (!IS_MURAM_ERR(ugeth->rx_bd_ring_offset[j])) if (!IS_ERR_VALUE(ugeth->rx_bd_ring_offset[j]))
ugeth->p_rx_bd_ring[j] = ugeth->p_rx_bd_ring[j] =
(u8 *) qe_muram_addr(ugeth-> (u8 *) qe_muram_addr(ugeth->
rx_bd_ring_offset[j]); rx_bd_ring_offset[j]);
...@@ -2713,7 +2713,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) ...@@ -2713,7 +2713,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
ugeth->tx_glbl_pram_offset = ugeth->tx_glbl_pram_offset =
qe_muram_alloc(sizeof(struct ucc_geth_tx_global_pram), qe_muram_alloc(sizeof(struct ucc_geth_tx_global_pram),
UCC_GETH_TX_GLOBAL_PRAM_ALIGNMENT); UCC_GETH_TX_GLOBAL_PRAM_ALIGNMENT);
if (IS_MURAM_ERR(ugeth->tx_glbl_pram_offset)) { if (IS_ERR_VALUE(ugeth->tx_glbl_pram_offset)) {
ugeth_err ugeth_err
("%s: Can not allocate DPRAM memory for p_tx_glbl_pram.", ("%s: Can not allocate DPRAM memory for p_tx_glbl_pram.",
__FUNCTION__); __FUNCTION__);
...@@ -2735,7 +2735,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) ...@@ -2735,7 +2735,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
sizeof(struct ucc_geth_thread_data_tx) + sizeof(struct ucc_geth_thread_data_tx) +
32 * (numThreadsTxNumerical == 1), 32 * (numThreadsTxNumerical == 1),
UCC_GETH_THREAD_DATA_ALIGNMENT); UCC_GETH_THREAD_DATA_ALIGNMENT);
if (IS_MURAM_ERR(ugeth->thread_dat_tx_offset)) { if (IS_ERR_VALUE(ugeth->thread_dat_tx_offset)) {
ugeth_err ugeth_err
("%s: Can not allocate DPRAM memory for p_thread_data_tx.", ("%s: Can not allocate DPRAM memory for p_thread_data_tx.",
__FUNCTION__); __FUNCTION__);
...@@ -2763,7 +2763,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) ...@@ -2763,7 +2763,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
qe_muram_alloc(ug_info->numQueuesTx * qe_muram_alloc(ug_info->numQueuesTx *
sizeof(struct ucc_geth_send_queue_qd), sizeof(struct ucc_geth_send_queue_qd),
UCC_GETH_SEND_QUEUE_QUEUE_DESCRIPTOR_ALIGNMENT); UCC_GETH_SEND_QUEUE_QUEUE_DESCRIPTOR_ALIGNMENT);
if (IS_MURAM_ERR(ugeth->send_q_mem_reg_offset)) { if (IS_ERR_VALUE(ugeth->send_q_mem_reg_offset)) {
ugeth_err ugeth_err
("%s: Can not allocate DPRAM memory for p_send_q_mem_reg.", ("%s: Can not allocate DPRAM memory for p_send_q_mem_reg.",
__FUNCTION__); __FUNCTION__);
...@@ -2806,7 +2806,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) ...@@ -2806,7 +2806,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
ugeth->scheduler_offset = ugeth->scheduler_offset =
qe_muram_alloc(sizeof(struct ucc_geth_scheduler), qe_muram_alloc(sizeof(struct ucc_geth_scheduler),
UCC_GETH_SCHEDULER_ALIGNMENT); UCC_GETH_SCHEDULER_ALIGNMENT);
if (IS_MURAM_ERR(ugeth->scheduler_offset)) { if (IS_ERR_VALUE(ugeth->scheduler_offset)) {
ugeth_err ugeth_err
("%s: Can not allocate DPRAM memory for p_scheduler.", ("%s: Can not allocate DPRAM memory for p_scheduler.",
__FUNCTION__); __FUNCTION__);
...@@ -2854,7 +2854,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) ...@@ -2854,7 +2854,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
qe_muram_alloc(sizeof qe_muram_alloc(sizeof
(struct ucc_geth_tx_firmware_statistics_pram), (struct ucc_geth_tx_firmware_statistics_pram),
UCC_GETH_TX_STATISTICS_ALIGNMENT); UCC_GETH_TX_STATISTICS_ALIGNMENT);
if (IS_MURAM_ERR(ugeth->tx_fw_statistics_pram_offset)) { if (IS_ERR_VALUE(ugeth->tx_fw_statistics_pram_offset)) {
ugeth_err ugeth_err
("%s: Can not allocate DPRAM memory for" ("%s: Can not allocate DPRAM memory for"
" p_tx_fw_statistics_pram.", __FUNCTION__); " p_tx_fw_statistics_pram.", __FUNCTION__);
...@@ -2893,7 +2893,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) ...@@ -2893,7 +2893,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
ugeth->rx_glbl_pram_offset = ugeth->rx_glbl_pram_offset =
qe_muram_alloc(sizeof(struct ucc_geth_rx_global_pram), qe_muram_alloc(sizeof(struct ucc_geth_rx_global_pram),
UCC_GETH_RX_GLOBAL_PRAM_ALIGNMENT); UCC_GETH_RX_GLOBAL_PRAM_ALIGNMENT);
if (IS_MURAM_ERR(ugeth->rx_glbl_pram_offset)) { if (IS_ERR_VALUE(ugeth->rx_glbl_pram_offset)) {
ugeth_err ugeth_err
("%s: Can not allocate DPRAM memory for p_rx_glbl_pram.", ("%s: Can not allocate DPRAM memory for p_rx_glbl_pram.",
__FUNCTION__); __FUNCTION__);
...@@ -2914,7 +2914,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) ...@@ -2914,7 +2914,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
qe_muram_alloc(numThreadsRxNumerical * qe_muram_alloc(numThreadsRxNumerical *
sizeof(struct ucc_geth_thread_data_rx), sizeof(struct ucc_geth_thread_data_rx),
UCC_GETH_THREAD_DATA_ALIGNMENT); UCC_GETH_THREAD_DATA_ALIGNMENT);
if (IS_MURAM_ERR(ugeth->thread_dat_rx_offset)) { if (IS_ERR_VALUE(ugeth->thread_dat_rx_offset)) {
ugeth_err ugeth_err
("%s: Can not allocate DPRAM memory for p_thread_data_rx.", ("%s: Can not allocate DPRAM memory for p_thread_data_rx.",
__FUNCTION__); __FUNCTION__);
...@@ -2937,7 +2937,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) ...@@ -2937,7 +2937,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
qe_muram_alloc(sizeof qe_muram_alloc(sizeof
(struct ucc_geth_rx_firmware_statistics_pram), (struct ucc_geth_rx_firmware_statistics_pram),
UCC_GETH_RX_STATISTICS_ALIGNMENT); UCC_GETH_RX_STATISTICS_ALIGNMENT);
if (IS_MURAM_ERR(ugeth->rx_fw_statistics_pram_offset)) { if (IS_ERR_VALUE(ugeth->rx_fw_statistics_pram_offset)) {
ugeth_err ugeth_err
("%s: Can not allocate DPRAM memory for" ("%s: Can not allocate DPRAM memory for"
" p_rx_fw_statistics_pram.", __FUNCTION__); " p_rx_fw_statistics_pram.", __FUNCTION__);
...@@ -2959,7 +2959,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) ...@@ -2959,7 +2959,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
qe_muram_alloc(ug_info->numQueuesRx * qe_muram_alloc(ug_info->numQueuesRx *
sizeof(struct ucc_geth_rx_interrupt_coalescing_entry) sizeof(struct ucc_geth_rx_interrupt_coalescing_entry)
+ 4, UCC_GETH_RX_INTERRUPT_COALESCING_ALIGNMENT); + 4, UCC_GETH_RX_INTERRUPT_COALESCING_ALIGNMENT);
if (IS_MURAM_ERR(ugeth->rx_irq_coalescing_tbl_offset)) { if (IS_ERR_VALUE(ugeth->rx_irq_coalescing_tbl_offset)) {
ugeth_err ugeth_err
("%s: Can not allocate DPRAM memory for" ("%s: Can not allocate DPRAM memory for"
" p_rx_irq_coalescing_tbl.", __FUNCTION__); " p_rx_irq_coalescing_tbl.", __FUNCTION__);
...@@ -3027,7 +3027,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) ...@@ -3027,7 +3027,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
(sizeof(struct ucc_geth_rx_bd_queues_entry) + (sizeof(struct ucc_geth_rx_bd_queues_entry) +
sizeof(struct ucc_geth_rx_prefetched_bds)), sizeof(struct ucc_geth_rx_prefetched_bds)),
UCC_GETH_RX_BD_QUEUES_ALIGNMENT); UCC_GETH_RX_BD_QUEUES_ALIGNMENT);
if (IS_MURAM_ERR(ugeth->rx_bd_qs_tbl_offset)) { if (IS_ERR_VALUE(ugeth->rx_bd_qs_tbl_offset)) {
ugeth_err ugeth_err
("%s: Can not allocate DPRAM memory for p_rx_bd_qs_tbl.", ("%s: Can not allocate DPRAM memory for p_rx_bd_qs_tbl.",
__FUNCTION__); __FUNCTION__);
...@@ -3116,7 +3116,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) ...@@ -3116,7 +3116,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
ugeth->exf_glbl_param_offset = ugeth->exf_glbl_param_offset =
qe_muram_alloc(sizeof(struct ucc_geth_exf_global_pram), qe_muram_alloc(sizeof(struct ucc_geth_exf_global_pram),
UCC_GETH_RX_EXTENDED_FILTERING_GLOBAL_PARAMETERS_ALIGNMENT); UCC_GETH_RX_EXTENDED_FILTERING_GLOBAL_PARAMETERS_ALIGNMENT);
if (IS_MURAM_ERR(ugeth->exf_glbl_param_offset)) { if (IS_ERR_VALUE(ugeth->exf_glbl_param_offset)) {
ugeth_err ugeth_err
("%s: Can not allocate DPRAM memory for" ("%s: Can not allocate DPRAM memory for"
" p_exf_glbl_param.", __FUNCTION__); " p_exf_glbl_param.", __FUNCTION__);
...@@ -3258,7 +3258,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth) ...@@ -3258,7 +3258,7 @@ static int ucc_geth_startup(struct ucc_geth_private *ugeth)
/* Allocate InitEnet command parameter structure */ /* Allocate InitEnet command parameter structure */
init_enet_pram_offset = qe_muram_alloc(sizeof(struct ucc_geth_init_pram), 4); init_enet_pram_offset = qe_muram_alloc(sizeof(struct ucc_geth_init_pram), 4);
if (IS_MURAM_ERR(init_enet_pram_offset)) { if (IS_ERR_VALUE(init_enet_pram_offset)) {
ugeth_err ugeth_err
("%s: Can not allocate DPRAM memory for p_init_enet_pram.", ("%s: Can not allocate DPRAM memory for p_init_enet_pram.",
__FUNCTION__); __FUNCTION__);
......
...@@ -88,7 +88,7 @@ extern struct uart_cpm_port cpm_uart_ports[UART_NR]; ...@@ -88,7 +88,7 @@ extern struct uart_cpm_port cpm_uart_ports[UART_NR];
/* these are located in their respective files */ /* these are located in their respective files */
void cpm_line_cr_cmd(int line, int cmd); void cpm_line_cr_cmd(int line, int cmd);
int __init cpm_uart_init_portdesc(void); int cpm_uart_init_portdesc(void);
int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con); int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con);
void cpm_uart_freebuf(struct uart_cpm_port *pinfo); void cpm_uart_freebuf(struct uart_cpm_port *pinfo);
......
...@@ -482,7 +482,8 @@ static void cpm_uart_shutdown(struct uart_port *port) ...@@ -482,7 +482,8 @@ static void cpm_uart_shutdown(struct uart_port *port)
} }
static void cpm_uart_set_termios(struct uart_port *port, static void cpm_uart_set_termios(struct uart_port *port,
struct termios *termios, struct termios *old) struct ktermios *termios,
struct ktermios *old)
{ {
int baud; int baud;
unsigned long flags; unsigned long flags;
......
...@@ -125,7 +125,7 @@ int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con) ...@@ -125,7 +125,7 @@ int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con)
{ {
int dpmemsz, memsz; int dpmemsz, memsz;
u8 *dp_mem; u8 *dp_mem;
uint dp_offset; unsigned long dp_offset;
u8 *mem_addr; u8 *mem_addr;
dma_addr_t dma_addr = 0; dma_addr_t dma_addr = 0;
...@@ -133,7 +133,7 @@ int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con) ...@@ -133,7 +133,7 @@ int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con)
dpmemsz = sizeof(cbd_t) * (pinfo->rx_nrfifos + pinfo->tx_nrfifos); dpmemsz = sizeof(cbd_t) * (pinfo->rx_nrfifos + pinfo->tx_nrfifos);
dp_offset = cpm_dpalloc(dpmemsz, 8); dp_offset = cpm_dpalloc(dpmemsz, 8);
if (IS_DPERR(dp_offset)) { if (IS_ERR_VALUE(dp_offset)) {
printk(KERN_ERR printk(KERN_ERR
"cpm_uart_cpm1.c: could not allocate buffer descriptors\n"); "cpm_uart_cpm1.c: could not allocate buffer descriptors\n");
return -ENOMEM; return -ENOMEM;
...@@ -185,7 +185,7 @@ void cpm_uart_freebuf(struct uart_cpm_port *pinfo) ...@@ -185,7 +185,7 @@ void cpm_uart_freebuf(struct uart_cpm_port *pinfo)
} }
/* Setup any dynamic params in the uart desc */ /* Setup any dynamic params in the uart desc */
int __init cpm_uart_init_portdesc(void) int cpm_uart_init_portdesc(void)
{ {
pr_debug("CPM uart[-]:init portdesc\n"); pr_debug("CPM uart[-]:init portdesc\n");
......
...@@ -222,7 +222,7 @@ int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con) ...@@ -222,7 +222,7 @@ int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con)
{ {
int dpmemsz, memsz; int dpmemsz, memsz;
u8 *dp_mem; u8 *dp_mem;
uint dp_offset; unsigned long dp_offset;
u8 *mem_addr; u8 *mem_addr;
dma_addr_t dma_addr = 0; dma_addr_t dma_addr = 0;
...@@ -230,7 +230,7 @@ int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con) ...@@ -230,7 +230,7 @@ int cpm_uart_allocbuf(struct uart_cpm_port *pinfo, unsigned int is_con)
dpmemsz = sizeof(cbd_t) * (pinfo->rx_nrfifos + pinfo->tx_nrfifos); dpmemsz = sizeof(cbd_t) * (pinfo->rx_nrfifos + pinfo->tx_nrfifos);
dp_offset = cpm_dpalloc(dpmemsz, 8); dp_offset = cpm_dpalloc(dpmemsz, 8);
if (IS_DPERR(dp_offset)) { if (IS_ERR_VALUE(dp_offset)) {
printk(KERN_ERR printk(KERN_ERR
"cpm_uart_cpm.c: could not allocate buffer descriptors\n"); "cpm_uart_cpm.c: could not allocate buffer descriptors\n");
return -ENOMEM; return -ENOMEM;
...@@ -282,7 +282,7 @@ void cpm_uart_freebuf(struct uart_cpm_port *pinfo) ...@@ -282,7 +282,7 @@ void cpm_uart_freebuf(struct uart_cpm_port *pinfo)
} }
/* Setup any dynamic params in the uart desc */ /* Setup any dynamic params in the uart desc */
int __init cpm_uart_init_portdesc(void) int cpm_uart_init_portdesc(void)
{ {
#if defined(CONFIG_SERIAL_CPM_SMC1) || defined(CONFIG_SERIAL_CPM_SMC2) #if defined(CONFIG_SERIAL_CPM_SMC1) || defined(CONFIG_SERIAL_CPM_SMC2)
u16 *addr; u16 *addr;
......
...@@ -73,8 +73,9 @@ extern char initial_stab[]; ...@@ -73,8 +73,9 @@ extern char initial_stab[];
#define HPTES_PER_GROUP 8 #define HPTES_PER_GROUP 8
#define HPTE_V_SSIZE_SHIFT 62
#define HPTE_V_AVPN_SHIFT 7 #define HPTE_V_AVPN_SHIFT 7
#define HPTE_V_AVPN ASM_CONST(0xffffffffffffff80) #define HPTE_V_AVPN ASM_CONST(0x3fffffffffffff80)
#define HPTE_V_AVPN_VAL(x) (((x) & HPTE_V_AVPN) >> HPTE_V_AVPN_SHIFT) #define HPTE_V_AVPN_VAL(x) (((x) & HPTE_V_AVPN) >> HPTE_V_AVPN_SHIFT)
#define HPTE_V_COMPARE(x,y) (!(((x) ^ (y)) & HPTE_V_AVPN)) #define HPTE_V_COMPARE(x,y) (!(((x) ^ (y)) & HPTE_V_AVPN))
#define HPTE_V_BOLTED ASM_CONST(0x0000000000000010) #define HPTE_V_BOLTED ASM_CONST(0x0000000000000010)
...@@ -151,6 +152,15 @@ struct mmu_psize_def ...@@ -151,6 +152,15 @@ struct mmu_psize_def
#define MMU_PAGE_16G 5 /* 16G */ #define MMU_PAGE_16G 5 /* 16G */
#define MMU_PAGE_COUNT 6 #define MMU_PAGE_COUNT 6
/*
* Segment sizes.
* These are the values used by hardware in the B field of
* SLB entries and the first dword of MMU hashtable entries.
* The B field is 2 bits; the values 2 and 3 are unused and reserved.
*/
#define MMU_SEGSIZE_256M 0
#define MMU_SEGSIZE_1T 1
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
/* /*
......
...@@ -43,9 +43,5 @@ extern unsigned long max_pfn; ...@@ -43,9 +43,5 @@ extern unsigned long max_pfn;
#endif /* CONFIG_NEED_MULTIPLE_NODES */ #endif /* CONFIG_NEED_MULTIPLE_NODES */
#ifdef CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID
extern int __init early_pfn_to_nid(unsigned long pfn);
#endif
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#endif /* _ASM_MMZONE_H_ */ #endif /* _ASM_MMZONE_H_ */
...@@ -62,11 +62,14 @@ struct pci_dev *pci_get_device_by_addr(unsigned long addr); ...@@ -62,11 +62,14 @@ struct pci_dev *pci_get_device_by_addr(unsigned long addr);
/** /**
* eeh_slot_error_detail -- record and EEH error condition to the log * eeh_slot_error_detail -- record and EEH error condition to the log
* @severity: 1 if temporary, 2 if permanent failure. * @pdn: pci device node
* @severity: EEH_LOG_TEMP_FAILURE or EEH_LOG_PERM_FAILURE
* *
* Obtains the EEH error details from the RTAS subsystem, * Obtains the EEH error details from the RTAS subsystem,
* and then logs these details with the RTAS error log system. * and then logs these details with the RTAS error log system.
*/ */
#define EEH_LOG_TEMP_FAILURE 1
#define EEH_LOG_PERM_FAILURE 2
void eeh_slot_error_detail (struct pci_dn *pdn, int severity); void eeh_slot_error_detail (struct pci_dn *pdn, int severity);
/** /**
...@@ -82,6 +85,7 @@ int rtas_pci_enable(struct pci_dn *pdn, int function); ...@@ -82,6 +85,7 @@ int rtas_pci_enable(struct pci_dn *pdn, int function);
/** /**
* rtas_set_slot_reset -- unfreeze a frozen slot * rtas_set_slot_reset -- unfreeze a frozen slot
* @pdn: pci device node
* *
* Clear the EEH-frozen condition on a slot. This routine * Clear the EEH-frozen condition on a slot. This routine
* does this by asserting the PCI #RST line for 1/8th of * does this by asserting the PCI #RST line for 1/8th of
...@@ -95,6 +99,7 @@ int eeh_wait_for_slot_status(struct pci_dn *pdn, int max_wait_msecs); ...@@ -95,6 +99,7 @@ int eeh_wait_for_slot_status(struct pci_dn *pdn, int max_wait_msecs);
/** /**
* eeh_restore_bars - Restore device configuration info. * eeh_restore_bars - Restore device configuration info.
* @pdn: pci device node
* *
* A reset of a PCI device will clear out its config space. * A reset of a PCI device will clear out its config space.
* This routines will restore the config space for this * This routines will restore the config space for this
...@@ -105,6 +110,7 @@ void eeh_restore_bars(struct pci_dn *); ...@@ -105,6 +110,7 @@ void eeh_restore_bars(struct pci_dn *);
/** /**
* rtas_configure_bridge -- firmware initialization of pci bridge * rtas_configure_bridge -- firmware initialization of pci bridge
* @pdn: pci device node
* *
* Ask the firmware to configure all PCI bridges devices * Ask the firmware to configure all PCI bridges devices
* located behind the indicated node. Required after a * located behind the indicated node. Required after a
...@@ -118,16 +124,22 @@ int rtas_write_config(struct pci_dn *, int where, int size, u32 val); ...@@ -118,16 +124,22 @@ int rtas_write_config(struct pci_dn *, int where, int size, u32 val);
int rtas_read_config(struct pci_dn *, int where, int size, u32 *val); int rtas_read_config(struct pci_dn *, int where, int size, u32 *val);
/** /**
* eeh_mark_slot -- set mode flags for pertition endpoint
* @pdn: pci device node
*
* mark and clear slots: find "partition endpoint" PE and set or * mark and clear slots: find "partition endpoint" PE and set or
* clear the flags for each subnode of the PE. * clear the flags for each subnode of the PE.
*/ */
void eeh_mark_slot (struct device_node *dn, int mode_flag); void eeh_mark_slot (struct device_node *dn, int mode_flag);
void eeh_clear_slot (struct device_node *dn, int mode_flag); void eeh_clear_slot (struct device_node *dn, int mode_flag);
/* Find the associated "Partiationable Endpoint" PE */ /**
* find_device_pe -- Find the associated "Partiationable Endpoint" PE
* @pdn: pci device node
*/
struct device_node * find_device_pe(struct device_node *dn); struct device_node * find_device_pe(struct device_node *dn);
#endif #endif /* CONFIG_EEH */
#else /* CONFIG_PCI */ #else /* CONFIG_PCI */
static inline void find_and_init_phbs(void) { } static inline void find_and_init_phbs(void) { }
......
...@@ -377,8 +377,13 @@ int ps3_vuart_port_device_register(struct ps3_vuart_port_device *dev); ...@@ -377,8 +377,13 @@ int ps3_vuart_port_device_register(struct ps3_vuart_port_device *dev);
/* system manager */ /* system manager */
#ifdef CONFIG_PS3_SYS_MANAGER
void ps3_sys_manager_restart(void); void ps3_sys_manager_restart(void);
void ps3_sys_manager_power_off(void); void ps3_sys_manager_power_off(void);
#else
static inline void ps3_sys_manager_restart(void) {}
static inline void ps3_sys_manager_power_off(void) {}
#endif
struct ps3_prealloc { struct ps3_prealloc {
const char *name; const char *name;
......
...@@ -38,11 +38,11 @@ int qe_issue_cmd(u32 cmd, u32 device, u8 mcn_protocol, u32 cmd_input); ...@@ -38,11 +38,11 @@ int qe_issue_cmd(u32 cmd, u32 device, u8 mcn_protocol, u32 cmd_input);
void qe_setbrg(u32 brg, u32 rate); void qe_setbrg(u32 brg, u32 rate);
int qe_get_snum(void); int qe_get_snum(void);
void qe_put_snum(u8 snum); void qe_put_snum(u8 snum);
u32 qe_muram_alloc(u32 size, u32 align); unsigned long qe_muram_alloc(int size, int align);
int qe_muram_free(u32 offset); int qe_muram_free(unsigned long offset);
u32 qe_muram_alloc_fixed(u32 offset, u32 size); unsigned long qe_muram_alloc_fixed(unsigned long offset, int size);
void qe_muram_dump(void); void qe_muram_dump(void);
void *qe_muram_addr(u32 offset); void *qe_muram_addr(unsigned long offset);
/* Buffer descriptors */ /* Buffer descriptors */
struct qe_bd { struct qe_bd {
...@@ -448,10 +448,5 @@ struct ucc_slow_pram { ...@@ -448,10 +448,5 @@ struct ucc_slow_pram {
#define UCC_FAST_FUNCTION_CODE_DTB_LCL 0x02 #define UCC_FAST_FUNCTION_CODE_DTB_LCL 0x02
#define UCC_FAST_FUNCTION_CODE_BDB_LCL 0x01 #define UCC_FAST_FUNCTION_CODE_BDB_LCL 0x01
static inline long IS_MURAM_ERR(const u32 offset)
{
return offset > (u32) - 1000L;
}
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#endif /* _ASM_POWERPC_QE_H */ #endif /* _ASM_POWERPC_QE_H */
This diff is collapsed.
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
typedef struct _rh_block { typedef struct _rh_block {
struct list_head list; struct list_head list;
void *start; unsigned long start;
int size; int size;
const char *owner; const char *owner;
} rh_block_t; } rh_block_t;
...@@ -37,8 +37,8 @@ typedef struct _rh_info { ...@@ -37,8 +37,8 @@ typedef struct _rh_info {
#define RHIF_STATIC_INFO 0x1 #define RHIF_STATIC_INFO 0x1
#define RHIF_STATIC_BLOCK 0x2 #define RHIF_STATIC_BLOCK 0x2
typedef struct rh_stats_t { typedef struct _rh_stats {
void *start; unsigned long start;
int size; int size;
const char *owner; const char *owner;
} rh_stats_t; } rh_stats_t;
...@@ -57,24 +57,24 @@ extern void rh_init(rh_info_t * info, unsigned int alignment, int max_blocks, ...@@ -57,24 +57,24 @@ extern void rh_init(rh_info_t * info, unsigned int alignment, int max_blocks,
rh_block_t * block); rh_block_t * block);
/* Attach a free region to manage */ /* Attach a free region to manage */
extern int rh_attach_region(rh_info_t * info, void *start, int size); extern int rh_attach_region(rh_info_t * info, unsigned long start, int size);
/* Detach a free region */ /* Detach a free region */
extern void *rh_detach_region(rh_info_t * info, void *start, int size); extern unsigned long rh_detach_region(rh_info_t * info, unsigned long start, int size);
/* Allocate the given size from the remote heap (with alignment) */ /* Allocate the given size from the remote heap (with alignment) */
extern void *rh_alloc_align(rh_info_t * info, int size, int alignment, extern unsigned long rh_alloc_align(rh_info_t * info, int size, int alignment,
const char *owner); const char *owner);
/* Allocate the given size from the remote heap */ /* Allocate the given size from the remote heap */
extern void *rh_alloc(rh_info_t * info, int size, const char *owner); extern unsigned long rh_alloc(rh_info_t * info, int size, const char *owner);
/* Allocate the given size from the given address */ /* Allocate the given size from the given address */
extern void *rh_alloc_fixed(rh_info_t * info, void *start, int size, extern unsigned long rh_alloc_fixed(rh_info_t * info, unsigned long start, int size,
const char *owner); const char *owner);
/* Free the allocated area */ /* Free the allocated area */
extern int rh_free(rh_info_t * info, void *start); extern int rh_free(rh_info_t * info, unsigned long start);
/* Get stats for debugging purposes */ /* Get stats for debugging purposes */
extern int rh_get_stats(rh_info_t * info, int what, int max_stats, extern int rh_get_stats(rh_info_t * info, int what, int max_stats,
...@@ -84,6 +84,6 @@ extern int rh_get_stats(rh_info_t * info, int what, int max_stats, ...@@ -84,6 +84,6 @@ extern int rh_get_stats(rh_info_t * info, int what, int max_stats,
extern void rh_dump(rh_info_t * info); extern void rh_dump(rh_info_t * info);
/* Set owner of taken block */ /* Set owner of taken block */
extern int rh_set_owner(rh_info_t * info, void *start, const char *owner); extern int rh_set_owner(rh_info_t * info, unsigned long start, const char *owner);
#endif /* __ASM_PPC_RHEAP_H__ */ #endif /* __ASM_PPC_RHEAP_H__ */
...@@ -307,3 +307,4 @@ COMPAT_SYS_SPU(set_robust_list) ...@@ -307,3 +307,4 @@ COMPAT_SYS_SPU(set_robust_list)
COMPAT_SYS_SPU(move_pages) COMPAT_SYS_SPU(move_pages)
SYSCALL_SPU(getcpu) SYSCALL_SPU(getcpu)
COMPAT_SYS(epoll_pwait) COMPAT_SYS(epoll_pwait)
COMPAT_SYS_SPU(utimensat)
...@@ -326,10 +326,11 @@ ...@@ -326,10 +326,11 @@
#define __NR_move_pages 301 #define __NR_move_pages 301
#define __NR_getcpu 302 #define __NR_getcpu 302
#define __NR_epoll_pwait 303 #define __NR_epoll_pwait 303
#define __NR_utimensat 304
#ifdef __KERNEL__ #ifdef __KERNEL__
#define __NR_syscalls 304 #define __NR_syscalls 305
#define __NR__exit __NR_exit #define __NR__exit __NR_exit
#define NR_syscalls __NR_syscalls #define NR_syscalls __NR_syscalls
......
...@@ -63,20 +63,15 @@ ...@@ -63,20 +63,15 @@
#define CPM_DATAONLY_SIZE ((uint)0x0700) #define CPM_DATAONLY_SIZE ((uint)0x0700)
#define CPM_DP_NOSPACE ((uint)0x7fffffff) #define CPM_DP_NOSPACE ((uint)0x7fffffff)
static inline long IS_DPERR(const uint offset)
{
return (uint)offset > (uint)-1000L;
}
/* Export the base address of the communication processor registers /* Export the base address of the communication processor registers
* and dual port ram. * and dual port ram.
*/ */
extern cpm8xx_t *cpmp; /* Pointer to comm processor */ extern cpm8xx_t *cpmp; /* Pointer to comm processor */
extern uint cpm_dpalloc(uint size, uint align); extern unsigned long cpm_dpalloc(uint size, uint align);
extern int cpm_dpfree(uint offset); extern int cpm_dpfree(unsigned long offset);
extern uint cpm_dpalloc_fixed(uint offset, uint size, uint align); extern unsigned long cpm_dpalloc_fixed(unsigned long offset, uint size, uint align);
extern void cpm_dpdump(void); extern void cpm_dpdump(void);
extern void *cpm_dpram_addr(uint offset); extern void *cpm_dpram_addr(unsigned long offset);
extern uint cpm_dpram_phys(u8* addr); extern uint cpm_dpram_phys(u8* addr);
extern void cpm_setbrg(uint brg, uint rate); extern void cpm_setbrg(uint brg, uint rate);
......
...@@ -104,21 +104,16 @@ ...@@ -104,21 +104,16 @@
*/ */
#define NUM_CPM_HOST_PAGES 2 #define NUM_CPM_HOST_PAGES 2
static inline long IS_DPERR(const uint offset)
{
return (uint)offset > (uint)-1000L;
}
/* Export the base address of the communication processor registers /* Export the base address of the communication processor registers
* and dual port ram. * and dual port ram.
*/ */
extern cpm_cpm2_t *cpmp; /* Pointer to comm processor */ extern cpm_cpm2_t *cpmp; /* Pointer to comm processor */
extern uint cpm_dpalloc(uint size, uint align); extern unsigned long cpm_dpalloc(uint size, uint align);
extern int cpm_dpfree(uint offset); extern int cpm_dpfree(unsigned long offset);
extern uint cpm_dpalloc_fixed(uint offset, uint size, uint align); extern unsigned long cpm_dpalloc_fixed(unsigned long offset, uint size, uint align);
extern void cpm_dpdump(void); extern void cpm_dpdump(void);
extern void *cpm_dpram_addr(uint offset); extern void *cpm_dpram_addr(unsigned long offset);
extern void cpm_setbrg(uint brg, uint rate); extern void cpm_setbrg(uint brg, uint rate);
extern void cpm2_fastbrg(uint brg, uint rate, int div16); extern void cpm2_fastbrg(uint brg, uint rate, int div16);
extern void cpm2_reset(void); extern void cpm2_reset(void);
......
...@@ -226,7 +226,7 @@ extern unsigned int pmu_power_flags; ...@@ -226,7 +226,7 @@ extern unsigned int pmu_power_flags;
extern void pmu_backlight_init(void); extern void pmu_backlight_init(void);
/* some code needs to know if the PMU was suspended for hibernation */ /* some code needs to know if the PMU was suspended for hibernation */
#ifdef CONFIG_PM #if defined(CONFIG_PM) && defined(CONFIG_PPC32)
extern int pmu_sys_suspended; extern int pmu_sys_suspended;
#else #else
/* if power management is not configured it can't be suspended */ /* if power management is not configured it can't be suspended */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment