[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 + arch/arm/
[linux-yocto] [PATCH 03/15] dma: lsi-dma32: Add parameter to setup burst size
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
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
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
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
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 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
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
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
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
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
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
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
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
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
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
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
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