[linux-yocto] [PULL REQUEST] Kernel: 3.10 Branch: standard/axxia/base
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 +
[linux-yocto] [PATCH 03/15] dma: lsi-dma32: Add parameter to setup burst size
From: Anders Berg anders.b...@lsi.com 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 anders.b...@lsi.com --- 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
From: John Jacques john.jacq...@lsi.com 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 john.jacq...@lsi.com --- 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 09/15] ARM: axxia: Cleanup timer init code
From: Anders Berg anders.b...@lsi.com 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 anders.b...@lsi.com --- 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
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
From: David Mercado david.merc...@windriver.com 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 david.merc...@windriver.com --- 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
[linux-yocto] [PATCH 04/15] dma: lsi-dma32: Handle DMA transfer sizes 1MB
From: Anders Berg anders.b...@lsi.com 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 anders.b...@lsi.com --- 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_count, src_size, access; -
[linux-yocto] [PATCH 08/15] ARM: axxia: dts: Enable sp804 timers by default
From: Anders Berg anders.b...@lsi.com 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 anders.b...@lsi.com --- 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
From: David Mercado david.merc...@windriver.com The platform CPU die routine was not being called. Added hook to axxia_platform_cpu_die(). Signed-off-by: David Mercado david.merc...@windriver.com --- 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 asm/mach/map.h #include asm/virt.h +#include axxia.h #include mach/axxia-gic.h 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
From: Anders Berg anders.b...@lsi.com 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 anders.b...@lsi.com --- 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
From: John Jacques john.jacq...@lsi.com Updated the device trees to suppor the MDIO Clock offset Signed-off-by: John Jacques john.jacq...@lsi.com --- 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, int period) { -#ifdef
[linux-yocto] [PATCH 14/15] ARM: axxia: Fix release of CPUs with booted via kexec
From: Anders Berg anders.b...@lsi.com 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 anders.b...@lsi.com Signed-off-by: Fredrik Markström fredrik.markst...@gmail.com --- 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
Re: [linux-yocto] [PULL REQUEST] Kernel: 3.10 Branch: standard/axxia/base
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
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