[linux-yocto] [PULL REQUEST] Kernel: 3.10 Branch: standard/axxia/base

2014-04-28 Thread Paul, Charlie
Bruce,

I resubmitted this request, I had given you the wrong starting point, this 
should fix the merge problem

Charlie

The following changes since commit 55bf6f0b78353c34d4910bca7bfc9eed0aff5de4:

  Merge branch 'standard/base' into standard/axxia/base (2014-04-01 21:11:34 
-0400)

are available in the git repository at:


  g...@github.com:butlerpaul/lsikernel-3.10 sab-next-1

for you to fetch changes up to a72435875d8a4b4e5d61779dd823c59fd4180921:

  gpio: repairs merge comflict (2014-04-22 14:44:24 -0700)


Anders Berg (13):
  i2c-axxia: Fix broken smbus block read
  i2c-axxia: Adjust tLOW,tHIGH to match fast-mode requirements
  arm/axxia: Workaround for cross-cluster sev issue
  Revert "LSI AXM55XX: Add GENERIC_LOCKBREAK"
  Revert "LSI AXM55XX: Disable use of wfe/sev in arch spinlock"
  dma: lsi-dma32: DMA driver configuration update
  dma: lsi-dma32: Cleanup DMA driver
  mach-axxia: Split device tree into SoC/board parts
  arm/axxia: Configure changes to 'GPIO driver for SPI chip selects'
  arm/axxia: GPIO driver for SPI chip selects
  spi: Revert to mainline spi-pl022
  hwmon: Support new revision of LTC2974
  i2c-axxia: Use managed functions devm_*

Charlie Paul (3):
  i2c-axxia: code update kernel.org coding spec
  LSI powerpc/boot: added for rapidio
  i2c-axxia: Configure changes to 'Use managed functions devm_*'

David Mercado (3):
  LSI FEMAC Ethernet Driver
  kernel/irq/manage.c: Fix irq_set_affinity to allow use with buslocks
  LSI AXM55xx: Axxia GIC driver improvements (3rd gen)

Gary McGee (2):
  LSI AXXIA: fixes for VP engine quiesce and DDR shutdown
  arm/axxia: improved robustness for DDR retention

John Jacques (10):
  arch/arm/mach-axxia: Updated Device Tree for Emulation
  arch/arm/mach-axxia: Accept the new lsi,axm5516-emu Machine
  arch/arm/mach-axxia: Disable DDR Retention Resets in Sim/Emu
  arch/arm/mach-axxia: Updates to the VMFS File System
  LSI RapidIO: Updated Device Trees for rapidio
  arch/arm/mach-axxia: Name Cleanup
  arch/arm/mach-axxia: Work-Around for Event Problems in v1.0 Silicon
  arch/powerpc: Update the Axxia Device Tree Files
  arch/powerpc: Clean up of Compatible Names in Axxia Device Trees
  LSI drivers/tty: Axxia Serial Driver Update

Jonas Svennebring (2):
  ARM: 7840/1: LPAE: don't reject mapping /dev/mem above 4GB
  LSI AXXIA: Basic perf support for axxia plaform block provided by LSI.

Michael Bringmann (2):
  LSI AXM55xx: Configuration updates
  LSI AXM55xx: Disable linkdown reset configuration.

Paul Butler (2):
  i2c: comforming to changes introduced by move of_i2c to core
  gpio: repairs merge comflict

SangeethaRao (2):
  arch/powerpc: Checking in correct USB entries to ACP3421 DTS
  LSI powerpc/sysdev: Removing the power of 2 size restriction

arch/arm/Kconfig   |7 +-
arch/arm/boot/dts/Makefile |5 +
arch/arm/boot/dts/axm-sim.dts  |  403 
arch/arm/boot/dts/axm-ve-tc1.dts   |  363 ---
arch/arm/boot/dts/axm-ve-tc2.dts   |  174 --
arch/arm/boot/dts/axm5504-cpus.dtsi|   49 +
arch/arm/boot/dts/axm5504-emu.dts  |   44 +
arch/arm/boot/dts/axm5504-sim.dts  |  127 +
arch/arm/boot/dts/axm5507-cpus.dtsi|   73 +
arch/arm/boot/dts/axm5507-emu.dts  |   44 +
arch/arm/boot/dts/axm5508-cpus.dtsi|   81 +
arch/arm/boot/dts/axm5512-cpus.dtsi|  114 +
arch/arm/boot/dts/axm5516-amarillo.dts |  195 ++
arch/arm/boot/dts/axm5516-cpus.dtsi|  145 ++
arch/arm/boot/dts/axm5516-sim.dts  |  127 +
arch/arm/boot/dts/axm55xx.dts  |  464 
arch/arm/boot/dts/axm55xx.dtsi |  390 +++
.../boot/dts/{axm55xxemu.dts => axm55xxemu7.dts}   |   17 +-
arch/arm/boot/dts/axm55xxsim.dts   |  363 ---
arch/arm/boot/dts/axm55xxsim16.dts |  459 
arch/arm/boot/fmboot/Makefile  |   12 +-
arch/arm/include/asm/spinlock.h|9 +-
arch/arm/mach-axxia/Makefile   |6 +-
arch/arm/mach-axxia/axxia-gic.c| 1138 -
arch/arm/mach-axxia/axxia.c|   66 +-
arch/arm/mach-axxia/clock.c|2 +-
arch/arm/mach-axxia/ddr_retention.c|  255 +-
arch/arm/mach-axxia/ddr_shutdown.c |  332 +++
arch/arm/mach-axxia/ev.c   |   53 +
arch/arm/mach-axxia/ncr.c  |   18 +-
arch/arm/mach-axxia/perf_event_memc.c  |  130 +
arch/arm/mach-axxia/perf_event_memc.h  |   62 +
arch/arm/mach-axxia/perf_event_pcx.c   |   46 +
arch/arm/

[linux-yocto] [PATCH 03/15] dma: lsi-dma32: Add parameter to setup burst size

2014-04-28 Thread Charlie Paul
From: Anders Berg 

Added module parameter 'burst' that allows the setup of the DMA controller
preferred burst setting on reads and writes. Set this to 7 for INCR16, 5 for
INCR8, 3 for INCR4 or 0 for singles (no bursts).

Signed-off-by: Anders Berg 
---
 drivers/dma/lsi-dma32.c |   12 ++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/dma/lsi-dma32.c b/drivers/dma/lsi-dma32.c
index 0c679bf..f08a1e8 100644
--- a/drivers/dma/lsi-dma32.c
+++ b/drivers/dma/lsi-dma32.c
@@ -59,6 +59,9 @@
 #define ch_dbg(dmac, fmt, ...)   do {} while (0)
 #endif
 
+static unsigned int burst = 5;
+module_param(burst, uint, 0644);
+MODULE_PARM_DESC(burst, "Set preferred bust size during DMA transfters");
 
 static void reset_channel(struct gpdma_channel *dmac)
 {
@@ -416,6 +419,8 @@ gpdma_prep_memcpy(struct dma_chan *chan,
struct gpdma_channel *dmac = to_gpdma_chan(chan);
struct gpdma_desc *desc;
u16 rot_len, x_count, src_size, access_size;
+   u16 src_burst = burst;
+   u16 dst_burst = burst;
 
desc = get_descriptor(dmac->engine);
if (desc == NULL) {
@@ -461,8 +466,11 @@ gpdma_prep_memcpy(struct dma_chan *chan,
desc->hw.src_y_mod = 0;
desc->hw.src_addr  = cpu_to_le32(src & 0x);
desc->hw.src_data_mask = ~0;
-   desc->hw.src_access= cpu_to_le16((rot_len << 6) | access_size);
-   desc->hw.dst_access= cpu_to_le16(access_size);
+   desc->hw.src_access= cpu_to_le16((rot_len << 6) |
+access_size |
+(src_burst & 7));
+   desc->hw.dst_access= cpu_to_le16(access_size |
+(dst_burst & 7));
desc->hw.ch_config = cpu_to_le32(DMA_CONFIG_ONE_SHOT(1));
desc->hw.next_ptr  = 0;
desc->hw.dst_x_ctr = cpu_to_le16(x_count);
-- 
1.7.9.5

-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


[linux-yocto] [PATCH 02/15] arch/powerpc: Disable the ACP NAND Driver for 3500

2014-04-28 Thread Charlie Paul
From: John Jacques 

Added code to check for the existence of the NAND driver for
3500. If the driver does not exist then the error is returned
gracefully

Signed-off-by: John Jacques 
---
 drivers/mtd/nand/lsi_acp_nand.c |7 +++
 1 file changed, 7 insertions(+)

diff --git a/drivers/mtd/nand/lsi_acp_nand.c b/drivers/mtd/nand/lsi_acp_nand.c
index ddc58e3..ff2566b 100644
--- a/drivers/mtd/nand/lsi_acp_nand.c
+++ b/drivers/mtd/nand/lsi_acp_nand.c
@@ -3433,6 +3433,13 @@ lsi_nand_init(void)
static const char *part_probe_types[]
= { "cmdlinepart", "ofpart", NULL };
 
+   np = of_find_compatible_node(NULL, NULL, "lsi,acp3500");
+
+   if (NULL != np) {
+   pr_err("NAND Support is Not Yet Available on 3500\n");
+   return -1;
+   }
+
memset(&ppdata, 0, sizeof(ppdata));
 
np = of_find_node_by_type(np, "nand");
-- 
1.7.9.5

-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


[linux-yocto] [PATCH 05/15] arch/powerpc: Fix Compile Error when the Target is PowerPC

2014-04-28 Thread Charlie Paul
From: John Jacques 

Recent LSI GPDMA driver updates, tested on ARM, broke the build
on PowerPC.  Including linux/sizes.h fixes the error.

Signed-off-by: John Jacques 
---
 drivers/dma/lsi-dma32.c |1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/dma/lsi-dma32.c b/drivers/dma/lsi-dma32.c
index 837f3e1..0977ef4 100644
--- a/drivers/dma/lsi-dma32.c
+++ b/drivers/dma/lsi-dma32.c
@@ -36,6 +36,7 @@
 #include 
 #include 
 #include 
+#include 
 #include "virt-dma.h"
 #include "lsi-dma32.h"
 
-- 
1.7.9.5

-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


[linux-yocto] [PATCH 09/15] ARM: axxia: Cleanup timer init code

2014-04-28 Thread Charlie Paul
From: Anders Berg 

Remove some unneeded code from the timer init function. The clocksource and
clockevent devices are all instansiated via clocksource_of_init().

Signed-off-by: Anders Berg 
---
 arch/arm/mach-axxia/axxia.c |   20 
 1 file changed, 20 deletions(-)

diff --git a/arch/arm/mach-axxia/axxia.c b/arch/arm/mach-axxia/axxia.c
index a8b213f..9ed7ce1 100644
--- a/arch/arm/mach-axxia/axxia.c
+++ b/arch/arm/mach-axxia/axxia.c
@@ -97,34 +97,14 @@ static void __init axxia_dt_init_irq(void)
 
 void __init axxia_dt_timer_init(void)
 {
-   const char *path;
-   struct device_node *node;
-   void __iomem *base;
int is_sim;
 
is_sim = of_find_compatible_node(NULL, NULL, "lsi,axm5516-sim") != NULL;
 
axxia_init_clocks(is_sim);
 
-#ifdef CONFIG_ARM_ARCH_TIMER
of_clk_init(NULL);
clocksource_of_init();
-#endif
-
-   if (of_property_read_string(of_aliases, "timer", &path)) {
-   WARN_ON(1);
-   return;
-   }
-
-   node = of_find_node_by_path(path);
-   if (WARN_ON(node == NULL))
-   return;
-
-   base = of_iomap(node, 0);
-   if (WARN_ON(base == NULL))
-   return;
-
-   sp804_clocksource_and_sched_clock_init(base, "axxia-timer0");
 }
 
 static struct mmci_platform_data mmc_plat_data = {
-- 
1.7.9.5

-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


[linux-yocto] [PATCH 00/15] LSI AXXIA updates to standard/axxia/base 3.10

2014-04-28 Thread Charlie Paul
Second set of patches ready to go. 

Anders Berg (9):
  i2c-axxia: Avoid timeout when interrupt delayed
  dma: lsi-dma32: Add parameter to setup burst size
  dma: lsi-dma32: Handle DMA transfer sizes > 1MB
  ARM: axxia: dts: Enable sp804 timers by default
  ARM: axxia: Cleanup timer init code
  i2c: axxia: Add support for 10-bit addressing
  ARM: axxia: Alloc GIC to be initialized from non-primary core
  ARM: axxia: Fix release of CPUs with booted via kexec
  ARM: axxia: Flush L3 in kexec_reinit

David Mercado (2):
  LSI AXM55xx: Fix PMU handler issue
  LSI AXM55xx: Fix CPU hotplug

John Jacques (4):
  arch/powerpc: Disable the ACP NAND Driver for 3500
  arch/powerpc: Fix Compile Error when the Target is PowerPC
  axxia: Use the Device Tree for MDIO Clock Offset/Period if Provided
  arch/powerpc: Support Older Machine Name for LSI Axxia

 arch/arm/boot/dts/axm5504-emu.dts|2 +
 arch/arm/boot/dts/axm5507-emu.dts|2 +
 arch/arm/boot/dts/axm5516-amarillo.dts   |2 +
 arch/arm/boot/dts/axm55xx.dtsi   |1 -
 arch/arm/mach-axxia/axxia-gic.c  |   47 +--
 arch/arm/mach-axxia/axxia.c  |  102 +++---
 arch/arm/mach-axxia/axxia.h  |1 +
 arch/arm/mach-axxia/hotplug.c|2 +-
 arch/arm/mach-axxia/include/mach/axxia-gic.h |1 -
 arch/arm/mach-axxia/platsmp.c|   27 ++--
 arch/powerpc/boot/dts/acp25xx.dts|3 +
 arch/powerpc/boot/dts/acp342x.dts|3 +
 arch/powerpc/boot/dts/acp344x.dts|3 +
 arch/powerpc/boot/dts/acp35xx.dts|3 +
 arch/powerpc/platforms/44x/acpx1.c   |5 +-
 drivers/dma/lsi-dma32.c  |  185 +++---
 drivers/dma/lsi-dma32.h  |4 +-
 drivers/i2c/busses/i2c-axxia.c   |   84 +++-
 drivers/mtd/nand/lsi_acp_nand.c  |7 +
 drivers/net/ethernet/lsi/lsi_acp_mdio.c  |   33 +++--
 20 files changed, 306 insertions(+), 211 deletions(-)

-- 
1.7.9.5

-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


[linux-yocto] [PATCH 06/15] LSI AXM55xx: Fix PMU handler issue

2014-04-28 Thread Charlie Paul
From: David Mercado 

The AXM55xx has the PMU IRQ lines from each core in a cluster OR'ed
together. As a workaround for this, a PMU handler extension was created
in the BSP to dynamically call irq_set_affinity() to rotate the PMU IRQ
assignment as needed, in order to maintain perf accuracy. However, with
the introduction of the Axxia GIC driver "slow" bus implementation,
irq_set_affinity() cannot be called directly from interrupt context.

Instead, the PMU IRQ handler extension is removed from the BSP and the
rotation of IRQ affinity is performed directly within the Axxia GIC
driver.

Signed-off-by: David Mercado 
---
 arch/arm/mach-axxia/axxia-gic.c |   25 +
 arch/arm/mach-axxia/axxia.c |   36 
 2 files changed, 25 insertions(+), 36 deletions(-)

diff --git a/arch/arm/mach-axxia/axxia-gic.c b/arch/arm/mach-axxia/axxia-gic.c
index 32c7525..8cfed90 100644
--- a/arch/arm/mach-axxia/axxia-gic.c
+++ b/arch/arm/mach-axxia/axxia-gic.c
@@ -909,6 +909,10 @@ asmlinkage void __exception_irq_entry 
axxia_gic_handle_irq(struct pt_regs *regs)
u32 irqstat, irqnr;
struct gic_chip_data *gic = &gic_data;
void __iomem *cpu_base = gic_data_cpu_base(gic);
+   void __iomem *dist_base = gic_data_dist_base(gic);
+   u32 pcpu = cpu_logical_map(smp_processor_id());
+   u32 cluster = pcpu / CORES_PER_CLUSTER;
+   u32 next, mask;
 
do {
irqstat = readl_relaxed(cpu_base + GIC_CPU_INTACK);
@@ -969,6 +973,27 @@ asmlinkage void __exception_irq_entry 
axxia_gic_handle_irq(struct pt_regs *regs)
writel_relaxed(irqnr, cpu_base + GIC_CPU_EOI);
break;
 
+   case IRQ_PMU:
+   /*
+* The PMU IRQ line is OR'ed among all cores
+* within a cluster, so no way to tell which
+* core actually generated the interrupt.
+* Therefore, rotate PMU IRQ affinity to allow
+* perf to work accurately as possible. Skip
+* over offline cpus.
+*/
+   do {
+   next = (++pcpu % CORES_PER_CLUSTER) +
+   (cluster * CORES_PER_CLUSTER);
+   } while (!cpu_online(next));
+
+   mask = 0x01 << (next % CORES_PER_CLUSTER);
+   raw_spin_lock(&irq_controller_lock);
+   writeb_relaxed(mask, dist_base +
+   GIC_DIST_TARGET + IRQ_PMU);
+   raw_spin_unlock(&irq_controller_lock);
+   /* Fall through ... */
+
default:
/* External interrupt */
handle_IRQ(irqnr, regs);
diff --git a/arch/arm/mach-axxia/axxia.c b/arch/arm/mach-axxia/axxia.c
index d73e11b..a8b213f 100644
--- a/arch/arm/mach-axxia/axxia.c
+++ b/arch/arm/mach-axxia/axxia.c
@@ -166,47 +166,11 @@ static struct resource axxia_pmu_resources[] = {
},
 };
 
-/*
- * The PMU IRQ lines of four cores are wired together into a single interrupt.
- * Bounce the interrupt to other cores if it's not ours.
- */
-#define CORES_PER_CLUSTER  4
-static irqreturn_t axxia_pmu_handler(int irq, void *dev, irq_handler_t handler)
-{
-   irqreturn_t ret = handler(irq, dev);
-   int cpu = smp_processor_id();
-   int cluster = cpu / CORES_PER_CLUSTER;
-   int other;
-
-   if (ret == IRQ_NONE) {
-
-   /* Look until we find another cpu that's online. */
-   do {
-   other = (++cpu % CORES_PER_CLUSTER) +
-   (cluster * CORES_PER_CLUSTER);
-   } while (!cpu_online(other));
-
-   irq_set_affinity(irq, cpumask_of(other));
-   }
-
-   /*
-* We should be able to get away with the amount of IRQ_NONEs we give,
-* while still having the spurious IRQ detection code kick in if the
-* interrupt really starts hitting spuriously.
-*/
-   return ret;
-}
-
-static struct arm_pmu_platdata axxia_pmu_platdata = {
-   .handle_irq = axxia_pmu_handler,
-};
-
 static struct platform_device pmu_device = {
.name   = "arm-pmu",
.id = -1,
.num_resources  = ARRAY_SIZE(axxia_pmu_resources),
.resource   = axxia_pmu_resources,
-   .dev.platform_data  = &axxia_pmu_platdata,
 };
 
 static int
-- 
1.7.9.5

-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yoct

[linux-yocto] [PATCH 04/15] dma: lsi-dma32: Handle DMA transfer sizes > 1MB

2014-04-28 Thread Charlie Paul
From: Anders Berg 

One descriptor can only transfer up to 64K 128-bit words. To handle larger
transfers the driver is now able to chain multiple descriptors.

Signed-off-by: Anders Berg 
---
 drivers/dma/lsi-dma32.c |  188 ++-
 drivers/dma/lsi-dma32.h |4 +-
 2 files changed, 107 insertions(+), 85 deletions(-)

diff --git a/drivers/dma/lsi-dma32.c b/drivers/dma/lsi-dma32.c
index f08a1e8..837f3e1 100644
--- a/drivers/dma/lsi-dma32.c
+++ b/drivers/dma/lsi-dma32.c
@@ -61,7 +61,8 @@
 
 static unsigned int burst = 5;
 module_param(burst, uint, 0644);
-MODULE_PARM_DESC(burst, "Set preferred bust size during DMA transfters");
+MODULE_PARM_DESC(burst,
+"Preferred burst setting (0=SINGLE,3=INCR4,5=INCR8,7=INCR16)");
 
 static void reset_channel(struct gpdma_channel *dmac)
 {
@@ -130,9 +131,8 @@ static int alloc_desc_table(struct gpdma_engine *engine)
 * Controller can do full descriptor addresses, then we need no
 * special alignment on the descriptor block.
 */
-   order = ilog2((ALIGN(GPDMA_MAX_DESCRIPTORS *
-sizeof(struct gpdma_desc),
-PAGE_SIZE)) >> PAGE_SHIFT);
+   order = get_order(GPDMA_MAX_DESCRIPTORS *
+ sizeof(struct gpdma_desc));
}
 
engine->pool.va = (struct gpdma_desc *)
@@ -144,9 +144,11 @@ static int alloc_desc_table(struct gpdma_engine *engine)
engine_dbg(engine, "order=%d pa=%#llx va=%p\n",
   engine->pool.order, engine->pool.phys, engine->pool.va);
 
-   for (i = 0; i < GPDMA_MAX_DESCRIPTORS; i++)
-   engine->pool.free[i] = &engine->pool.va[i];
-   engine->pool.next = 0;
+   engine->pool.free = NULL;
+   for (i = 0; i < GPDMA_MAX_DESCRIPTORS-1; i++)
+   engine->pool.va[i].chain = &engine->pool.va[i+1];
+   engine->pool.va[GPDMA_MAX_DESCRIPTORS-1].chain = NULL;
+   engine->pool.free = &engine->pool.va[0];
 
return 0;
 }
@@ -160,26 +162,48 @@ static void free_desc_table(struct gpdma_engine *engine)
 static struct gpdma_desc *get_descriptor(struct gpdma_engine *engine)
 {
unsigned long flags;
-   struct gpdma_desc *desc = NULL;
+   struct gpdma_desc *desc;
 
spin_lock_irqsave(&engine->lock, flags);
-   if (engine->pool.next < GPDMA_MAX_DESCRIPTORS)
-   desc = engine->pool.free[engine->pool.next++];
+   desc = engine->pool.free;
+   if (desc) {
+   engine->pool.free = desc->chain;
+   desc->chain = NULL;
+   desc->engine = engine;
+   }
spin_unlock_irqrestore(&engine->lock, flags);
-   desc->engine = engine;
 
return desc;
 }
 
+static phys_addr_t desc_to_paddr(const struct gpdma_channel *dmac,
+const struct gpdma_desc *desc)
+{
+   phys_addr_t paddr = virt_to_phys(&desc->hw);
+   WARN_ON(paddr & 0xf);
+   if (dmac->engine->chip->flags & LSIDMA_NEXT_FULL)
+   paddr |= 0x8;
+   else
+   paddr &= 0xf;
+
+   return paddr;
+}
+
 static void free_descriptor(struct virt_dma_desc *vd)
 {
struct gpdma_desc *desc = to_gpdma_desc(vd);
struct gpdma_engine *engine = desc->engine;
unsigned long flags;
+   struct gpdma_desc *tail;
+
+   BUG_ON(desc == NULL);
+
+   for (tail = desc; tail->chain != NULL; tail = tail->chain)
+   ;
 
spin_lock_irqsave(&engine->lock, flags);
-   BUG_ON(engine->pool.next == 0);
-   engine->pool.free[--engine->pool.next] = desc;
+   tail->chain = engine->pool.free;
+   engine->pool.free = desc;
spin_unlock_irqrestore(&engine->lock, flags);
 }
 
@@ -220,14 +244,9 @@ static void gpdma_start(struct gpdma_channel *dmac)
return;
}
 
-   paddr = virt_to_phys(&desc->hw);
-   WARN_ON(paddr & 0xf);
-   if (dmac->engine->chip->flags & LSIDMA_NEXT_FULL) {
-   /* Physical address of descriptor to load */
-   writel((u32)paddr | 0x8, dmac->base + DMA_NXT_DESCR);
-   } else {
-   writel((u32)paddr & 0xf, dmac->base + DMA_NXT_DESCR);
-   }
+   /* Physical address of descriptor to load */
+   paddr = desc_to_paddr(dmac, desc);
+   writel((u32)paddr, dmac->base + DMA_NXT_DESCR);
 
if (dmac->engine->chip->flags & LSIDMA_SEG_REGS) {
/* Segment bits [39..32] of descriptor, src and dst addresses */
@@ -417,73 +436,76 @@ gpdma_prep_memcpy(struct dma_chan *chan,
  unsigned long dma_flags)
 {
struct gpdma_channel *dmac = to_gpdma_chan(chan);
-   struct gpdma_desc *desc;
-   u16 rot_len, x_count, src_size, access_size;
-   u16 src_burst = burst;
-   u16 dst_burst = burst;
+   struct gpdma_desc *first = NULL, *prev = NULL, *new;
+   u32 rot_len, x_c

[linux-yocto] [PATCH 08/15] ARM: axxia: dts: Enable sp804 timers by default

2014-04-28 Thread Charlie Paul
From: Anders Berg 

Let the timers block be enabled by default in the axm55xx.dsti device-tree
since all systems will need it anyway.

Signed-off-by: Anders Berg 
---
 arch/arm/boot/dts/axm55xx.dtsi |1 -
 1 file changed, 1 deletion(-)

diff --git a/arch/arm/boot/dts/axm55xx.dtsi b/arch/arm/boot/dts/axm55xx.dtsi
index 92347d8..6a43139 100644
--- a/arch/arm/boot/dts/axm55xx.dtsi
+++ b/arch/arm/boot/dts/axm55xx.dtsi
@@ -328,7 +328,6 @@
 <0 51 4>,
 <0 52 4>,
 <0 53 4>;
-   status = "disabled";
};
 
gpio0: gpio@2010092000 {
-- 
1.7.9.5

-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


[linux-yocto] [PATCH 07/15] LSI AXM55xx: Fix CPU hotplug

2014-04-28 Thread Charlie Paul
From: David Mercado 

The platform CPU die routine was not being called. Added hook to
axxia_platform_cpu_die().

Signed-off-by: David Mercado 
---
 arch/arm/mach-axxia/axxia.h   |1 +
 arch/arm/mach-axxia/hotplug.c |2 +-
 arch/arm/mach-axxia/platsmp.c |5 +
 3 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/arch/arm/mach-axxia/axxia.h b/arch/arm/mach-axxia/axxia.h
index 3393d37..156c6e0 100644
--- a/arch/arm/mach-axxia/axxia.h
+++ b/arch/arm/mach-axxia/axxia.h
@@ -2,6 +2,7 @@
 
 void axxia_init_clocks(int is_sim);
 void axxia_ddr_retention_init(void);
+void axxia_platform_cpu_die(unsigned int cpu);
 
 extern struct smp_operations axxia_smp_ops;
 
diff --git a/arch/arm/mach-axxia/hotplug.c b/arch/arm/mach-axxia/hotplug.c
index d919bff..fb5ec90 100644
--- a/arch/arm/mach-axxia/hotplug.c
+++ b/arch/arm/mach-axxia/hotplug.c
@@ -114,7 +114,7 @@ int platform_cpu_kill(unsigned int cpu)
  *
  * Called with IRQs disabled
  */
-void platform_cpu_die(unsigned int cpu)
+void axxia_platform_cpu_die(unsigned int cpu)
 {
int spurious = 0;
 
diff --git a/arch/arm/mach-axxia/platsmp.c b/arch/arm/mach-axxia/platsmp.c
index 8e863b0..dec7b5b 100644
--- a/arch/arm/mach-axxia/platsmp.c
+++ b/arch/arm/mach-axxia/platsmp.c
@@ -22,6 +22,7 @@
 #include 
 #include 
 
+#include "axxia.h"
 #include 
 
 extern void axxia_secondary_startup(void);
@@ -246,4 +247,8 @@ struct smp_operations axxia_smp_ops __initdata = {
.smp_prepare_cpus   = axxia_smp_prepare_cpus,
.smp_secondary_init = axxia_secondary_init,
.smp_boot_secondary = axxia_boot_secondary,
+#ifdef CONFIG_HOTPLUG_CPU
+   .cpu_die= axxia_platform_cpu_die,
+#endif
+
 };
-- 
1.7.9.5

-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


[linux-yocto] [PATCH 01/15] i2c-axxia: Avoid timeout when interrupt delayed

2014-04-28 Thread Charlie Paul
From: Anders Berg 

Changed the order in which the interrupt conditions are checked in the
interrupt handler. Need to check for transfer-complete before timeout-error,
otherwise a delayed interrupt may report a false timeout error (since the
timeout may expire after the transfer was completed).

Signed-off-by: Anders Berg 
---
 drivers/i2c/busses/i2c-axxia.c |   50 ++--
 1 file changed, 23 insertions(+), 27 deletions(-)

diff --git a/drivers/i2c/busses/i2c-axxia.c b/drivers/i2c/busses/i2c-axxia.c
index 86fc695..cd68166 100644
--- a/drivers/i2c/busses/i2c-axxia.c
+++ b/drivers/i2c/busses/i2c-axxia.c
@@ -332,33 +332,6 @@ axxia_i2c_isr(int irq, void *_dev)
/* Clear interrupt */
writel(0x01, &idev->regs->interrupt_status);
 
-   if (unlikely(status & MST_STATUS_ERR)) {
-   idev->msg_err = status & MST_STATUS_ERR;
-   i2c_int_disable(idev, ~0);
-   dev_dbg(idev->dev, "error %s, rx=%u/%u tx=%u/%u\n",
-   status_str(idev->msg_err),
-   readl(&idev->regs->mst_rx_bytes_xfrd),
-   readl(&idev->regs->mst_rx_xfer),
-   readl(&idev->regs->mst_tx_bytes_xfrd),
-   readl(&idev->regs->mst_tx_xfer));
-   complete(&idev->msg_complete);
-   return IRQ_HANDLED;
-   }
-
-   /* Stop completed? */
-   if (status & MST_STATUS_SCC) {
-   i2c_int_disable(idev, ~0);
-   complete(&idev->msg_complete);
-   }
-
-   /* Transfer done? */
-   if (status & (MST_STATUS_SNS | MST_STATUS_SS)) {
-   if (i2c_m_rd(idev->msg) && idev->msg_xfrd < idev->msg->len)
-   axxia_i2c_empty_rx_fifo(idev);
-   i2c_int_disable(idev, ~0);
-   complete(&idev->msg_complete);
-   }
-
/* RX FIFO needs service? */
if (i2c_m_rd(idev->msg) && (status & MST_STATUS_RFL))
axxia_i2c_empty_rx_fifo(idev);
@@ -371,6 +344,29 @@ axxia_i2c_isr(int irq, void *_dev)
i2c_int_disable(idev, MST_STATUS_TFL);
}
 
+   if (status & MST_STATUS_SCC) {
+   /* Stop completed? */
+   i2c_int_disable(idev, ~0);
+   complete(&idev->msg_complete);
+   } else if (status & (MST_STATUS_SNS | MST_STATUS_SS)) {
+   /* Transfer done? */
+   if (i2c_m_rd(idev->msg) && idev->msg_xfrd < idev->msg->len)
+   axxia_i2c_empty_rx_fifo(idev);
+   i2c_int_disable(idev, ~0);
+   complete(&idev->msg_complete);
+   } else if (unlikely(status & MST_STATUS_ERR)) {
+   /* Transfer error? */
+   idev->msg_err = status & MST_STATUS_ERR;
+   i2c_int_disable(idev, ~0);
+   dev_dbg(idev->dev, "error %s, rx=%u/%u tx=%u/%u\n",
+   status_str(idev->msg_err),
+   readl(&idev->regs->mst_rx_bytes_xfrd),
+   readl(&idev->regs->mst_rx_xfer),
+   readl(&idev->regs->mst_tx_bytes_xfrd),
+   readl(&idev->regs->mst_tx_xfer));
+   complete(&idev->msg_complete);
+   }
+
return IRQ_HANDLED;
 }
 
-- 
1.7.9.5

-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


[linux-yocto] [PATCH 10/15] axxia: Use the Device Tree for MDIO Clock Offset/Period if Provided

2014-04-28 Thread Charlie Paul
From: John Jacques 

Updated the device trees to suppor the MDIO Clock offset

Signed-off-by: John Jacques 
---
 arch/arm/boot/dts/axm5504-emu.dts   |2 ++
 arch/arm/boot/dts/axm5507-emu.dts   |2 ++
 arch/arm/boot/dts/axm5516-amarillo.dts  |2 ++
 arch/powerpc/boot/dts/acp25xx.dts   |3 +++
 arch/powerpc/boot/dts/acp342x.dts   |3 +++
 arch/powerpc/boot/dts/acp344x.dts   |3 +++
 arch/powerpc/boot/dts/acp35xx.dts   |3 +++
 drivers/net/ethernet/lsi/lsi_acp_mdio.c |   33 ---
 8 files changed, 40 insertions(+), 11 deletions(-)

diff --git a/arch/arm/boot/dts/axm5504-emu.dts 
b/arch/arm/boot/dts/axm5504-emu.dts
index 0d7ca8f..2b13386 100644
--- a/arch/arm/boot/dts/axm5504-emu.dts
+++ b/arch/arm/boot/dts/axm5504-emu.dts
@@ -29,6 +29,8 @@
 &femac {
status = "okay";
phy-address = <0x03>;
+   mdio-clock-offset = <0x10>;
+   mdio-clock-period = <0x2c>;
 };
 
 &serial0 {
diff --git a/arch/arm/boot/dts/axm5507-emu.dts 
b/arch/arm/boot/dts/axm5507-emu.dts
index 8de0b23..ed0bf10 100644
--- a/arch/arm/boot/dts/axm5507-emu.dts
+++ b/arch/arm/boot/dts/axm5507-emu.dts
@@ -29,6 +29,8 @@
 &femac {
status = "okay";
phy-address = <0x03>;
+   mdio-clock-offset = <0x10>;
+   mdio-clock-period = <0x2c>;
 };
 
 &serial0 {
diff --git a/arch/arm/boot/dts/axm5516-amarillo.dts 
b/arch/arm/boot/dts/axm5516-amarillo.dts
index a802b52..aabc839 100644
--- a/arch/arm/boot/dts/axm5516-amarillo.dts
+++ b/arch/arm/boot/dts/axm5516-amarillo.dts
@@ -28,6 +28,8 @@
 
 &femac {
status = "okay";
+   mdio-clock-offset = <0x1c>;
+   mdio-clock-period = <0xf0>;
 };
 
 &pcie0 {
diff --git a/arch/powerpc/boot/dts/acp25xx.dts 
b/arch/powerpc/boot/dts/acp25xx.dts
index ad9dfe8..e089692 100644
--- a/arch/powerpc/boot/dts/acp25xx.dts
+++ b/arch/powerpc/boot/dts/acp25xx.dts
@@ -178,6 +178,9 @@
// The following will get filled in by
// the boot loader.
mdio-clock = <0>;
+   // Not filled in by U-Boot
+   mdio-clock-offset = <0x10>;
+   mdio-clock-period = <0x2c>;
phy-address = <0>;
ad-value = <0>;
mac-address = [00 00 00 00 00 00];
diff --git a/arch/powerpc/boot/dts/acp342x.dts 
b/arch/powerpc/boot/dts/acp342x.dts
index f947d3b..cbc934f 100644
--- a/arch/powerpc/boot/dts/acp342x.dts
+++ b/arch/powerpc/boot/dts/acp342x.dts
@@ -175,6 +175,9 @@
// The following will get filled in by
// the boot loader.
mdio-clock = <0>;
+   // Not filled in by U-Boot
+   mdio-clock-offset = <0x10>;
+   mdio-clock-period = <0x2c>;
phy-address = <0>;
ad-value = <0>;
mac-address = [00 00 00 00 00 00];
diff --git a/arch/powerpc/boot/dts/acp344x.dts 
b/arch/powerpc/boot/dts/acp344x.dts
index 0efd820..6c07b9d 100644
--- a/arch/powerpc/boot/dts/acp344x.dts
+++ b/arch/powerpc/boot/dts/acp344x.dts
@@ -218,6 +218,9 @@
 // The following will get filled in by
 // the boot loader.
 mdio-clock = <0>;
+   // Not filled in by U-Boot
+   mdio-clock-offset = <0x10>;
+   mdio-clock-period = <0x2c>;
 phy-address = <0>;
 ad-value = <0>;
 mac-address = [00 00 00 00 00 00];
diff --git a/arch/powerpc/boot/dts/acp35xx.dts 
b/arch/powerpc/boot/dts/acp35xx.dts
index 198b41f..b03680b 100644
--- a/arch/powerpc/boot/dts/acp35xx.dts
+++ b/arch/powerpc/boot/dts/acp35xx.dts
@@ -279,6 +279,9 @@
// The following will get filled in by
// the boot loader.
mdio-clock = <0>;
+   // offset and period
+   mdio-clock-offset = <0x10>;
+   mdio-clock-period = <0x2c>;
phy-address = <0>;
ad-value = <0>;
mac-address = [00 00 00 00 00 00];
diff --git a/drivers/net/ethernet/lsi/lsi_acp_mdio.c 
b/drivers/net/ethernet/lsi/lsi_acp_mdio.c
index 6427ae0..b11011f 100644
--- a/drivers/net/ethernet/lsi/lsi_acp_mdio.c
+++ b/drivers/net/ethernet/lsi/lsi_acp_mdio.c
@@ -247,17 +247,12 @@ EXPORT_SYMBOL(acp_mdio_write);
 /* acp_mdio_initialize */
 
 static void
-acp_mdio_initialize(void)
+acp_mdio_initialize(int offset, i

[linux-yocto] [PATCH 14/15] ARM: axxia: Fix release of CPUs with booted via kexec

2014-04-28 Thread Charlie Paul
From: Anders Berg 

When booting a crash kernel via kexec, the memory specified by the
cpu-release-addr property is not valid physical memory (not part of
the crash kernel reserved memory area). In this case the memory needs an
ioremap to be written.

Signed-off-by: Anders Berg 
Signed-off-by: Fredrik Markström 
---
 arch/arm/mach-axxia/platsmp.c |   12 +---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-axxia/platsmp.c b/arch/arm/mach-axxia/platsmp.c
index 7975c44..0ee417e 100644
--- a/arch/arm/mach-axxia/platsmp.c
+++ b/arch/arm/mach-axxia/platsmp.c
@@ -205,8 +205,8 @@ static void __init axxia_smp_prepare_cpus(unsigned int 
max_cpus)
 * from reset in hyp mode.
 */
if (!is_hyp_mode_available()) {
-   u32 phys_cpu = cpu_logical_map(cpu);
-   if (phys_cpu != 0) {
+   if (cpu != 0) {
+   u32 phys_cpu = cpu_logical_map(cpu);
u32 tmp = readl(syscon + 0x1010);
writel(0xab, syscon + 0x1000);
tmp &= ~(1 << phys_cpu);
@@ -225,10 +225,16 @@ static void __init axxia_smp_prepare_cpus(unsigned int 
max_cpus)
 * "holding pen".
 */
if (release_phys != 0) {
-   release_virt = (u32 *)phys_to_virt(release_phys);
+   int is_kmapped = pfn_valid(__phys_to_pfn(release_phys));
+   if (is_kmapped)
+   release_virt = phys_to_virt(release_phys);
+   else
+   release_virt = ioremap(release_phys, PAGE_SIZE);
*release_virt = virt_to_phys(axxia_secondary_startup);
smp_wmb();
__cpuc_flush_dcache_area(release_virt, sizeof(u32));
+   if (!is_kmapped)
+   iounmap(release_virt);
}
}
 
-- 
1.7.9.5

-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


[linux-yocto] [PATCH 11/15] i2c: axxia: Add support for 10-bit addressing

2014-04-28 Thread Charlie Paul
From: Anders Berg 

Add support for I2c transfers using 10-bit address. The upper layer passes the
flag I2C_M_TEN to inform the driver that the msg->addr field is a 10-bit
address. The Axxia I2C controller will transmit a 10-bit address when the 5
most significant bits in address register 1 equals 5'b0. The least
significant part of the address is then read from address register 2.

Signed-off-by: Anders Berg 
---
 drivers/i2c/busses/i2c-axxia.c |   34 +++---
 1 file changed, 27 insertions(+), 7 deletions(-)

diff --git a/drivers/i2c/busses/i2c-axxia.c b/drivers/i2c/busses/i2c-axxia.c
index cd68166..8a303a6 100644
--- a/drivers/i2c/busses/i2c-axxia.c
+++ b/drivers/i2c/busses/i2c-axxia.c
@@ -49,8 +49,6 @@ struct i2c_regs {
__le32 mst_tx_xfer;
__le32 mst_addr_1;
__le32 mst_addr_2;
-#define CHIP_READ(_chip)  (((_chip) << 1) | 1)
-#define CHIP_WRITE(_chip) (((_chip) << 1) | 0)
__le32 mst_data;
__le32 mst_tx_fifo;
__le32 mst_rx_fifo;
@@ -247,6 +245,12 @@ i2c_m_rd(const struct i2c_msg *msg)
 }
 
 static int
+i2c_m_ten(const struct i2c_msg *msg)
+{
+   return (msg->flags & I2C_M_TEN) != 0;
+}
+
+static int
 i2c_m_recv_len(const struct i2c_msg *msg)
 {
return (msg->flags & I2C_M_RECV_LEN) != 0;
@@ -375,6 +379,7 @@ static int
 axxia_i2c_xfer_msg(struct axxia_i2c_dev *idev, struct i2c_msg *msg)
 {
u32 int_mask = MST_STATUS_ERR | MST_STATUS_SNS;
+   u32 addr_1, addr_2;
int ret;
 
if (msg->len == 0 || msg->len > 255)
@@ -393,17 +398,32 @@ axxia_i2c_xfer_msg(struct axxia_i2c_dev *idev, struct 
i2c_msg *msg)
writel(I2C_SMBUS_BLOCK_MAX, &idev->regs->mst_rx_xfer);
else
writel(msg->len, &idev->regs->mst_rx_xfer);
-   /* Chip address for write */
-   writel(CHIP_READ(msg->addr), &idev->regs->mst_addr_1);
} else {
/* TX # bytes */
writel(msg->len, &idev->regs->mst_tx_xfer);
/* RX 0 bytes */
writel(0, &idev->regs->mst_rx_xfer);
-   /* Chip address for write */
-   writel(CHIP_WRITE(msg->addr), &idev->regs->mst_addr_1);
}
-   writel(msg->addr >> 8, &idev->regs->mst_addr_2);
+
+   if (i2c_m_ten(msg)) {
+   /* 10-bit address
+*   addr_1: 5'b0 | addr[9:8] | (R/W)
+*   addr_2: addr[7:0]
+*/
+   addr_1 = 0xF0 | ((msg->addr >> 7) & 0x06);
+   addr_2 = msg->addr & 0xFF;
+   } else {
+   /* 7-bit address
+*   addr_1: addr[6:0] | (R/W)
+*   addr_2: dont care
+*/
+   addr_1 = (msg->addr << 1) & 0xFF;
+   addr_2 = 0;
+   }
+   if (i2c_m_rd(msg))
+   addr_1 |= 1;
+   writel(addr_1, &idev->regs->mst_addr_1);
+   writel(addr_2, &idev->regs->mst_addr_2);
 
if (i2c_m_rd(msg)) {
int_mask |= MST_STATUS_RFL;
-- 
1.7.9.5

-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


[linux-yocto] [PATCH 15/15] ARM: axxia: Flush L3 in kexec_reinit

2014-04-28 Thread Charlie Paul
From: Anders Berg 

Add flushing of L3 cache before turning off MMU and caches and calling the
kexec kernel using the hook kexec_reinit.

Signed-off-by: Anders Berg 
---
 arch/arm/mach-axxia/axxia.c |   46 +++
 1 file changed, 46 insertions(+)

diff --git a/arch/arm/mach-axxia/axxia.c b/arch/arm/mach-axxia/axxia.c
index 9ed7ce1..c3ef24f 100644
--- a/arch/arm/mach-axxia/axxia.c
+++ b/arch/arm/mach-axxia/axxia.c
@@ -43,6 +43,7 @@
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -61,6 +62,44 @@ static const char *axxia_dt_match[] __initconst = {
NULL
 };
 
+#ifdef CONFIG_KEXEC
+
+static void __iomem *dickens;
+
+static void set_l3_pstate(u32 newstate)
+{
+   static const u8 hnf[] = {
+   0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27
+   };
+   int i;
+   u32 status;
+
+   for (i = 0; i < ARRAY_SIZE(hnf); ++i)
+   writel(newstate, dickens + (hnf[i] << 16) + 0x10);
+
+   for (i = 0; i < ARRAY_SIZE(hnf); ++i) {
+   int retry;
+   for (retry = 1; retry > 0; --retry) {
+   status = readl(dickens + (hnf[i] << 16) + 0x18);
+   if (((status >> 2) & 3) == newstate)
+   break;
+   udelay(1);
+   }
+   BUG_ON(retry == 0);
+   }
+}
+
+static void
+flush_l3(void)
+{
+   /* Shutdown to flush */
+   set_l3_pstate(0);
+   /* ...and then back up again */
+   set_l3_pstate(3);
+}
+
+#endif
+
 static struct map_desc axxia_static_mappings[] __initdata = {
 #ifdef CONFIG_DEBUG_LL
{
@@ -179,6 +218,13 @@ static struct notifier_block axxia_amba_nb = {
 
 void __init axxia_dt_init(void)
 {
+#ifdef CONFIG_KEXEC
+   if (!of_find_compatible_node(NULL, NULL, "lsi,axm5516-sim")) {
+   dickens = ioremap(0x20, SZ_4M);
+   kexec_reinit = flush_l3;
+   }
+#endif
+
bus_register_notifier(&platform_bus_type, &axxia_platform_nb);
bus_register_notifier(&amba_bustype, &axxia_amba_nb);
 
-- 
1.7.9.5

-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


[linux-yocto] [PATCH 12/15] arch/powerpc: Support Older Machine Name for LSI Axxia

2014-04-28 Thread Charlie Paul
From: John Jacques 

Older U-Boot versions pass ibm,acpx1-4xx instead of lsi,acp.  This
commit adds support for the older name.

Signed-off-by: John Jacques 
---
 arch/powerpc/platforms/44x/acpx1.c |5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/powerpc/platforms/44x/acpx1.c 
b/arch/powerpc/platforms/44x/acpx1.c
index 934ea0a..467d852 100644
--- a/arch/powerpc/platforms/44x/acpx1.c
+++ b/arch/powerpc/platforms/44x/acpx1.c
@@ -165,7 +165,7 @@ static void smp_acpx14xx_machine_kexec(struct kimage *image)
}
 
if (!timeout)
-   printk(KERN_ERR "Unable to bring down secondary cpu(s)");
+   pr_err("Unable to bring down secondary cpu(s)");
 
for_each_online_cpu(i) {
if (i == smp_processor_id())
@@ -253,7 +253,8 @@ static int __init acpx14xx_probe(void)
 {
unsigned long root = of_get_flat_dt_root();
 
-   if (!of_flat_dt_is_compatible(root, "lsi,acp"))
+   if (!of_flat_dt_is_compatible(root, "lsi,acp") &&
+   !of_flat_dt_is_compatible(root, "ibm,acpx1-4xx"))
return 0;
 
return 1;
-- 
1.7.9.5

-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


[linux-yocto] [PATCH 13/15] ARM: axxia: Alloc GIC to be initialized from non-primary core

2014-04-28 Thread Charlie Paul
From: Anders Berg 

The condition to only initialize the distributor interface from the primary
core of each cluster could fail when the primary core is not started (e.g. in a
crash kernel started via kexec). In this case, the one and only CPU may be any
core in a cluster.

This change handles this by initializing the GIC distributor interface via the
first CPU calling the init function, by keeping a state which clusters have
been initialized.

Signed-off-by: Anders Berg 
---
 arch/arm/mach-axxia/axxia-gic.c  |   22 --
 arch/arm/mach-axxia/include/mach/axxia-gic.h |1 -
 arch/arm/mach-axxia/platsmp.c|   10 +-
 3 files changed, 9 insertions(+), 24 deletions(-)

diff --git a/arch/arm/mach-axxia/axxia-gic.c b/arch/arm/mach-axxia/axxia-gic.c
index 8cfed90..53e525a 100644
--- a/arch/arm/mach-axxia/axxia-gic.c
+++ b/arch/arm/mach-axxia/axxia-gic.c
@@ -139,6 +139,7 @@ struct gic_chip_data {
 #endif
struct irq_domain *domain;
unsigned int gic_irqs;
+   unsigned long dist_init_done;
 };
 
 enum gic_rpc_func_mask {
@@ -572,8 +573,6 @@ static int gic_set_wake(struct irq_data *d, unsigned int on)
 #define gic_set_wake   NULL
 #endif
 
-#ifdef CONFIG_CPU_PM
-
 static u32 get_cluster_id(void)
 {
u32 mpidr, cluster;
@@ -591,6 +590,8 @@ static u32 get_cluster_id(void)
return cluster;
 }
 
+#ifdef CONFIG_CPU_PM
+
 /*
  * Saves the GIC distributor registers during suspend or idle.  Must be called
  * with interrupts disabled but before powering down the GIC.  After calling
@@ -1057,6 +1058,10 @@ static void __cpuinit gic_dist_init(struct gic_chip_data 
*gic)
u32 enableoff;
u32 val;
 
+   /* Initialize the distributor interface once per CPU cluster */
+   if (test_and_set_bit(get_cluster_id(), &gic->dist_init_done))
+   return;
+
cpumask = 1 << cpu;
cpumask |= cpumask << 8;
cpumask |= cpumask << 16;
@@ -1351,21 +1356,10 @@ void __init axxia_gic_init_bases(int irq_start,
 
 void __cpuinit axxia_gic_secondary_init(void)
 {
-   gic_cpu_init(&gic_data);
-}
-
-
-void __cpuinit axxia_gic_secondary_cluster_init(void)
-{
struct gic_chip_data *gic = &gic_data;
 
-   /*
-* Initialize the GIC distributor and cpu interfaces
-* for secondary clusters in the Axxia SoC.
-*/
-
gic_dist_init(gic);
-   gic_cpu_init(gic);
+   gic_cpu_init(&gic_data);
 }
 
 #ifdef CONFIG_OF
diff --git a/arch/arm/mach-axxia/include/mach/axxia-gic.h 
b/arch/arm/mach-axxia/include/mach/axxia-gic.h
index 9ca0609..af7fbdf 100644
--- a/arch/arm/mach-axxia/include/mach/axxia-gic.h
+++ b/arch/arm/mach-axxia/include/mach/axxia-gic.h
@@ -9,7 +9,6 @@
 #define __AXXIA_GIC_H
 
 void axxia_gic_raise_softirq(const struct cpumask *mask, unsigned int irq);
-void axxia_gic_secondary_cluster_init(void);
 void axxia_gic_secondary_init(void);
 int __init axxia_gic_of_init(struct device_node *node,
 struct device_node *parent);
diff --git a/arch/arm/mach-axxia/platsmp.c b/arch/arm/mach-axxia/platsmp.c
index dec7b5b..7975c44 100644
--- a/arch/arm/mach-axxia/platsmp.c
+++ b/arch/arm/mach-axxia/platsmp.c
@@ -80,15 +80,7 @@ void __cpuinit axxia_secondary_init(unsigned int cpu)
/* Fixup for cross-cluster SEV */
do_fixup_sev();
 
-   /*
-* If this isn't the first physical core in a secondary cluster
-* then run the standard GIC secondary init routine. Otherwise,
-* run the Axxia secondary cluster init routine.
-*/
-   if (cpu_logical_map(cpu) % 4)
-   axxia_gic_secondary_init();
-   else
-   axxia_gic_secondary_cluster_init();
+   axxia_gic_secondary_init();
 
/*
 * Let the primary processor know we're out of the
-- 
1.7.9.5

-- 
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto


Re: [linux-yocto] [PULL REQUEST] Kernel: 3.10 Branch: standard/axxia/base

2014-04-28 Thread Bruce Ashfield

On 2014-04-28, 1:28 PM, Paul, Charlie wrote:

Bruce,

I resubmitted this request, I had given you the wrong starting point,
this should fix the merge problem


Indeed. This merged as a fastforward to the existing BSP branch and
has now been pushed to the repo.

Bruce



Charlie

The following changes since commit 55bf6f0b78353c34d4910bca7bfc9eed0aff5de4:

   Merge branch 'standard/base' into standard/axxia/base (2014-04-01
21:11:34 -0400)

are available in the git repository at:

   g...@github.com:butlerpaul/lsikernel-3.10 sab-next-1

for you to fetch changes up to a72435875d8a4b4e5d61779dd823c59fd4180921:

   gpio: repairs merge comflict (2014-04-22 14:44:24 -0700)



Anders Berg (13):

   i2c-axxia: Fix broken smbus block read

   i2c-axxia: Adjust tLOW,tHIGH to match fast-mode requirements

   arm/axxia: Workaround for cross-cluster sev issue

   Revert "LSI AXM55XX: Add GENERIC_LOCKBREAK"

   Revert "LSI AXM55XX: Disable use of wfe/sev in arch spinlock"

   dma: lsi-dma32: DMA driver configuration update

   dma: lsi-dma32: Cleanup DMA driver

   mach-axxia: Split device tree into SoC/board parts

   arm/axxia: Configure changes to 'GPIO driver for SPI chip selects'

   arm/axxia: GPIO driver for SPI chip selects

   spi: Revert to mainline spi-pl022

   hwmon: Support new revision of LTC2974

   i2c-axxia: Use managed functions devm_*

Charlie Paul (3):

   i2c-axxia: code update kernel.org coding spec

   LSI powerpc/boot: added for rapidio

   i2c-axxia: Configure changes to 'Use managed functions devm_*'

David Mercado (3):

   LSI FEMAC Ethernet Driver

   kernel/irq/manage.c: Fix irq_set_affinity to allow use with buslocks

   LSI AXM55xx: Axxia GIC driver improvements (3rd gen)

Gary McGee (2):

   LSI AXXIA: fixes for VP engine quiesce and DDR shutdown

   arm/axxia: improved robustness for DDR retention

John Jacques (10):

   arch/arm/mach-axxia: Updated Device Tree for Emulation

   arch/arm/mach-axxia: Accept the new lsi,axm5516-emu Machine

   arch/arm/mach-axxia: Disable DDR Retention Resets in Sim/Emu

   arch/arm/mach-axxia: Updates to the VMFS File System

   LSI RapidIO: Updated Device Trees for rapidio

   arch/arm/mach-axxia: Name Cleanup

   arch/arm/mach-axxia: Work-Around for Event Problems in v1.0 Silicon

   arch/powerpc: Update the Axxia Device Tree Files

   arch/powerpc: Clean up of Compatible Names in Axxia Device Trees

   LSI drivers/tty: Axxia Serial Driver Update

Jonas Svennebring (2):

   ARM: 7840/1: LPAE: don't reject mapping /dev/mem above 4GB

   LSI AXXIA: Basic perf support for axxia plaform block provided by
LSI.

Michael Bringmann (2):

   LSI AXM55xx: Configuration updates

   LSI AXM55xx: Disable linkdown reset configuration.

Paul Butler (2):

   i2c: comforming to changes introduced by move of_i2c to core

   gpio: repairs merge comflict

SangeethaRao (2):

   arch/powerpc: Checking in correct USB entries to ACP3421 DTS

   LSI powerpc/sysdev: Removing the power of 2 size restriction

arch/arm/Kconfig   |7 +-

arch/arm/boot/dts/Makefile |5 +

arch/arm/boot/dts/axm-sim.dts  |  403 

arch/arm/boot/dts/axm-ve-tc1.dts   |  363 ---

arch/arm/boot/dts/axm-ve-tc2.dts   |  174 --

arch/arm/boot/dts/axm5504-cpus.dtsi|   49 +

arch/arm/boot/dts/axm5504-emu.dts  |   44 +

arch/arm/boot/dts/axm5504-sim.dts  |  127 +

arch/arm/boot/dts/axm5507-cpus.dtsi|   73 +

arch/arm/boot/dts/axm5507-emu.dts  |   44 +

arch/arm/boot/dts/axm5508-cpus.dtsi|   81 +

arch/arm/boot/dts/axm5512-cpus.dtsi|  114 +

arch/arm/boot/dts/axm5516-amarillo.dts |  195 ++

arch/arm/boot/dts/axm5516-cpus.dtsi|  145 ++

arch/arm/boot/dts/axm5516-sim.dts  |  127 +

arch/arm/boot/dts/axm55xx.dts  |  464 

arch/arm/boot/dts/axm55xx.dtsi |  390 +++

.../boot/dts/{axm55xxemu.dts => axm55xxemu7.dts}   |   17 +-

arch/arm/boot/dts/axm55xxsim.dts   |  363 ---

arch/arm/boot/dts/axm55xxsim16.dts |  459 

arch/arm/boot/fmboot/Makefile  |   12 +-

arch/arm/include/asm/spinlock.h|9 +-

arch/arm/mach-axxia/Makefile   |6 +-

arch/arm/mach-axxia/axxia-gic.c| 1138 -

arch/arm/mach-axxia/axxia.c|   66 +-

arch/arm/mach-axxia/clock.c|2 +-

arch/arm/mach-axxia/ddr_retention.c|  255 +-

arch/arm/mach-axxia/ddr_shutdown.c |  332 +++

arch/arm/mach-axxia/ev.c

Re: [linux-yocto] [PATCH 00/15] LSI AXXIA updates to standard/axxia/base 3.10

2014-04-28 Thread Bruce Ashfield

On 2014-04-28, 8:13 PM, Charlie Paul wrote:

Second set of patches ready to go.


No complaints from me on this one. All the commits have good short
logs and summaries that explain the changes. Nicely done.

I can't say that I did a detailed tech review of each one, so I'll
trust that testing proves they work as intended :)

Cheers,

Bruce



Anders Berg (9):
   i2c-axxia: Avoid timeout when interrupt delayed
   dma: lsi-dma32: Add parameter to setup burst size
   dma: lsi-dma32: Handle DMA transfer sizes > 1MB
   ARM: axxia: dts: Enable sp804 timers by default
   ARM: axxia: Cleanup timer init code
   i2c: axxia: Add support for 10-bit addressing
   ARM: axxia: Alloc GIC to be initialized from non-primary core
   ARM: axxia: Fix release of CPUs with booted via kexec
   ARM: axxia: Flush L3 in kexec_reinit

David Mercado (2):
   LSI AXM55xx: Fix PMU handler issue
   LSI AXM55xx: Fix CPU hotplug

John Jacques (4):
   arch/powerpc: Disable the ACP NAND Driver for 3500
   arch/powerpc: Fix Compile Error when the Target is PowerPC
   axxia: Use the Device Tree for MDIO Clock Offset/Period if Provided
   arch/powerpc: Support Older Machine Name for LSI Axxia

  arch/arm/boot/dts/axm5504-emu.dts|2 +
  arch/arm/boot/dts/axm5507-emu.dts|2 +
  arch/arm/boot/dts/axm5516-amarillo.dts   |2 +
  arch/arm/boot/dts/axm55xx.dtsi   |1 -
  arch/arm/mach-axxia/axxia-gic.c  |   47 +--
  arch/arm/mach-axxia/axxia.c  |  102 +++---
  arch/arm/mach-axxia/axxia.h  |1 +
  arch/arm/mach-axxia/hotplug.c|2 +-
  arch/arm/mach-axxia/include/mach/axxia-gic.h |1 -
  arch/arm/mach-axxia/platsmp.c|   27 ++--
  arch/powerpc/boot/dts/acp25xx.dts|3 +
  arch/powerpc/boot/dts/acp342x.dts|3 +
  arch/powerpc/boot/dts/acp344x.dts|3 +
  arch/powerpc/boot/dts/acp35xx.dts|3 +
  arch/powerpc/platforms/44x/acpx1.c   |5 +-
  drivers/dma/lsi-dma32.c  |  185 +++---
  drivers/dma/lsi-dma32.h  |4 +-
  drivers/i2c/busses/i2c-axxia.c   |   84 +++-
  drivers/mtd/nand/lsi_acp_nand.c  |7 +
  drivers/net/ethernet/lsi/lsi_acp_mdio.c  |   33 +++--
  20 files changed, 306 insertions(+), 211 deletions(-)



--
___
linux-yocto mailing list
linux-yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/linux-yocto