Re: [linux-yocto] [linux-yocto-dev][PATCH] meta: Add kernel meta to support edgerouter
On 14-03-18 01:09 AM, wei.y...@windriver.com wrote: From: Yang Wei wei.y...@windriver.com Signed-off-by: Yang Wei wei.y...@windriver.com --- Hi Bruce, Just like what you knew, this BSP would be released in yocto 1.6, so I added the kernel meta based on linux-yotco-dev. I've created the standard/edgerouter branch, and merged the meta data. We'll need to get a summary of what works on the board in a README, but there's no need to hold this merge on it. Bruce Thanks Wei .../bsp/edgerouter/edgerouter-standard.scc | 11 .../cfg/kernel-cache/bsp/edgerouter/edgerouter.cfg | 67 .../cfg/kernel-cache/bsp/edgerouter/edgerouter.scc |3 + 3 files changed, 81 insertions(+) create mode 100644 meta/cfg/kernel-cache/bsp/edgerouter/edgerouter-standard.scc create mode 100644 meta/cfg/kernel-cache/bsp/edgerouter/edgerouter.cfg create mode 100644 meta/cfg/kernel-cache/bsp/edgerouter/edgerouter.scc diff --git a/meta/cfg/kernel-cache/bsp/edgerouter/edgerouter-standard.scc b/meta/cfg/kernel-cache/bsp/edgerouter/edgerouter-standard.scc new file mode 100644 index 000..5d6c692 --- /dev/null +++ b/meta/cfg/kernel-cache/bsp/edgerouter/edgerouter-standard.scc @@ -0,0 +1,11 @@ +define KMACHINE edgerouter +define KTYPE standard +define KARCH mips +include ktypes/standard/standard.scc + +branch edgerouter + +include edgerouter.scc + +# default policy for standard kernels +include features/profiling/profiling.scc diff --git a/meta/cfg/kernel-cache/bsp/edgerouter/edgerouter.cfg b/meta/cfg/kernel-cache/bsp/edgerouter/edgerouter.cfg new file mode 100644 index 000..7362468 --- /dev/null +++ b/meta/cfg/kernel-cache/bsp/edgerouter/edgerouter.cfg @@ -0,0 +1,67 @@ +#SOC +CONFIG_CAVIUM_OCTEON_SOC=y +CONFIG_CAVIUM_CN63XXP1=y +CONFIG_CAVIUM_OCTEON_CVMSEG_SIZE=2 + +#Kernel +CONFIG_SMP=y +CONFIG_NR_CPUS=32 +#Executable file formats +CONFIG_MIPS32_COMPAT=y +CONFIG_MIPS32_O32=y +CONFIG_MIPS32_N32=y + + +#PCI +CONFIG_PCI=y +CONFIG_PCI_MSI=y + +#I2C +CONFIG_I2C=y +CONFIG_I2C_OCTEON=y + +CONFIG_HW_RANDOM_OCTEON=y + +#SPI +CONFIG_SPI=y +CONFIG_SPI_OCTEON=y +#RTC +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_DS1307=y + +#Misc +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_AT25=y +CONFIG_OCTEON_WDT=y + +CONFIG_STAGING=y + +#Ethernet +CONFIG_OCTEON_ETHERNET=y +CONFIG_OCTEON_MGMT_ETHERNET=y +CONFIG_MDIO_OCTEON=y + +#PHY +CONFIG_MARVELL_PHY=y +CONFIG_BROADCOM_PHY=y +CONFIG_BCM87XX_PHY=y + + +#USB +CONFIG_USB=y +CONFIG_OCTEON_USB=y +CONFIG_USB_OCTEON_EHCI=y +CONFIG_USB_OCTEON_OHCI=y +CONFIG_USB_OCTEON2_COMMON=y + +CONFIG_MTD=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CFI=y +CONFIG_MTD_CFI_AMDSTD=y +CONFIG_MTD_CMDLINE_PARTS=y + +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=2 +CONFIG_SERIAL_8250_RUNTIME_UARTS=2 +CONFIG_SERIAL_8250_DW=y diff --git a/meta/cfg/kernel-cache/bsp/edgerouter/edgerouter.scc b/meta/cfg/kernel-cache/bsp/edgerouter/edgerouter.scc new file mode 100644 index 000..33f26cc --- /dev/null +++ b/meta/cfg/kernel-cache/bsp/edgerouter/edgerouter.scc @@ -0,0 +1,3 @@ +kconf hardware edgerouter.cfg +include cfg/usb-mass-storage.scc +include cfg/fs/vfat.scc -- ___ linux-yocto mailing list linux-yo...@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[yocto] Losing Ethernet after reboot
I losing Ethernet after every reboot. What is the process to have it come up manually? Image: Dylan gumstix-console I have already added eth0 auto to my /etc/network/interfaces. At the moment I need to run the following after every reboot: ifconfig eth0 up udhcpc eth0 -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] Losing Ethernet after reboot
Sorry typing on the fly. Here is what is in interfaces: auto eth0 iface eth0 inet dhcp On Tue, Mar 18, 2014 at 9:17 AM, Gary Thomas g...@mlbassoc.com wrote: On 2014-03-18 10:10, Rick Bianchi wrote: I losing Ethernet after every reboot. What is the process to have it come up manually? Image: Dylan gumstix-console I have already added eth0 auto to my /etc/network/interfaces. Shouldn't this line read auto eth0 not the other way around? At the moment I need to run the following after every reboot: ifconfig eth0 up udhcpc eth0 -- Gary Thomas | Consulting for the MLB Associates |Embedded world -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] Losing Ethernet after reboot
Rick, Check the interface using the command ifconfig -a, then add the corresponding interface in /etc/network/interfaces and restart the network services. On Tue, Mar 18, 2014 at 10:42 AM, Rick Bianchi bianchirickku...@gmail.comwrote: Sorry typing on the fly. Here is what is in interfaces: auto eth0 iface eth0 inet dhcp On Tue, Mar 18, 2014 at 9:17 AM, Gary Thomas g...@mlbassoc.com wrote: On 2014-03-18 10:10, Rick Bianchi wrote: I losing Ethernet after every reboot. What is the process to have it come up manually? Image: Dylan gumstix-console I have already added eth0 auto to my /etc/network/interfaces. Shouldn't this line read auto eth0 not the other way around? At the moment I need to run the following after every reboot: ifconfig eth0 up udhcpc eth0 -- Gary Thomas | Consulting for the MLB Associates |Embedded world -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto -- *Thanks Regards,* *Sandeep G R* -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
[linux-yocto] [PATCH 00/57] LSI AXXIA updates to standard/axxia/base 3.10
These patches are updates to the LSI standard/axxia/base for 3.10. They are broken out into functional and code syntax changes. 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 (16): i2c-axxia: code update kernel.org coding spec LSI powerpc/boot: added for rapidio LSI RAPIDIO: Updated as per checkpatch LSIAXM55xx: Checkpatch updates to patch 'Various performance fixes for rapidio' LSI AXM55xx: Code syntax - checkpatch updates to Update RIO interfaces LSI AXM55xx: Code syntax: Checkconfig updates to Rapidio bug fixes LSI AXM55xx: Checkpatch update 'Move datastream apis' arm/axxia: Checkpatch updates to 'Work around for cluster' LSI FEMAC: Chechpatch updates to 'Ethernet Driver' arm/mach-axxia: Checkpatch update to 'improved robustness for DDR' kernel/irq/manage.c: Checkpatch update to 'Fix irq_set_affinity' patch spi: Checkpatch changes to 'Revert to mainline spi-pl022' i2c-axxia: Configure changes to 'Use managed functions devm_*' arm/mm: Checkpatch to 'Backport of 3159f372354e8e1f5dee714663d70' arch/arm/mach-axxia: Checkpatch to 'Work-Around for Event Problems' LSI drivers/tty/serial: Checkpatch 'Axxia Serial Driver Update' 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): 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 axxia: Updated Device Trees Signed-off-by: John Jacques john.jacq...@lsi.com 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/mm: Backport of 3159f372354e8e1f5dee714663d70 Basic perf support for axxia plaform block provided by LSI. Michael Bringmann (8): LSI AXM55XX/rapidio: Add SRIO controller support for LSI. LSI RAPIDIO - changes to support LSI AXM55xx: Various performance and fixes for rapidio endpoint code. LSI AXM55xx/rionet: Update RIO interfaces with latest changes. LSI AXM55xx: Configuration updates LSI AXM55xx: Bug fixes for rapidio. LSI AXM55xx: Disable linkdown reset configuration. LSI AXM55xx: Move datastream APIs and symbols to public header file. Paul Butler (2): i2c: comforming to changes introduced by move of_i2c to core gpio: repairs merge comflict SangeethaRao (1): LSI powerpc/sysdev: Removing the power of 2 size restriction arch/arm/Kconfig| 25 +- 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 arch/arm/boot/dts/axm55xxemu.dts| 219 -- arch/arm/boot/dts/axm55xxemu7.dts | 226 ++ arch/arm/boot/dts/axm55xxsim.dts| 363 --- arch/arm/boot/dts/axm55xxsim16.dts | 459 arch/arm/boot/fmboot/Makefile | 12 +- arch/arm/include/asm/axxia-rio.h| 141 ++ arch/arm/include/asm/rio.h | 37 + arch/arm/include/asm/spinlock.h |9 +-
[linux-yocto] [PATCH 03/57] LSI powerpc/boot: added for rapidio
--- arch/arm/boot/dts/axm55xx.dts | 33 +++ arch/powerpc/boot/dts/lsi_acp342x.dts | 317 + arch/powerpc/boot/dts/lsi_acp344x.dts | 355 + 3 files changed, 705 insertions(+) create mode 100644 arch/powerpc/boot/dts/lsi_acp342x.dts create mode 100644 arch/powerpc/boot/dts/lsi_acp344x.dts diff --git a/arch/arm/boot/dts/axm55xx.dts b/arch/arm/boot/dts/axm55xx.dts index 1aabe31..230a305 100644 --- a/arch/arm/boot/dts/axm55xx.dts +++ b/arch/arm/boot/dts/axm55xx.dts @@ -35,6 +35,8 @@ serial0 = axxia_serial0; timer = axxia_timers; ethernet0 = axxia_femac0; + rapidio0 = rio0; + rapidio1 = rio1; }; cpus { @@ -455,6 +457,37 @@ reg = 0x20 0x10098000 0 0x3000; interrupts = 0 45 4; }; + +rio0: rapidio@0x31 { +index = 0; +status = okay; +#address-cells = 2; +#size-cells = 2; +compatible = axxia,rapidio-delta; +device_type = rapidio; +reg = 0x0020 0x20142000 0x0 0x1000; /* SRIO Conf 0 region */ +ranges = 0x0 0x0 0x0031 0x 0x0 0x4000; +linkdown-reset = 0x0200 0x100 0x0020 0x1000 0x0 0x1; +interrupts = 0 89 4; +outb-dmes = 2 0x0003 1 0x; + enable_ds = 1; +}; + +rio1: rapidio@0x314000 { +index = 1; +status = okay; +#address-cells = 2; +#size-cells = 2; +compatible = axxia,rapidio-delta; +device_type = rapidio; +reg = 0x0020 0x20143000 0x0 0x1000; /* SRIO Conf 1 region */ +ranges = 0x0 0x0 0x0031 0x4000 0x0 0x4000; +linkdown-reset = 0x0200 0x200 0x0020 0x1000 0x0 0x1; +interrupts = 0 90 4; +outb-dmes = 2 0x0003 1 0x; + enable_ds = 1; +}; + }; /* diff --git a/arch/powerpc/boot/dts/lsi_acp342x.dts b/arch/powerpc/boot/dts/lsi_acp342x.dts new file mode 100644 index 000..da6066e --- /dev/null +++ b/arch/powerpc/boot/dts/lsi_acp342x.dts @@ -0,0 +1,317 @@ +/* + * Device Tree Source for IBM Embedded PPC 476 Platform + * + * Copyright 2009 Torez Smith, IBM Corporation. + * + * Based on earlier code: + * Copyright (c) 2006, 2007 IBM Corp. + * Josh Boyer jwbo...@linux.vnet.ibm.com, David Gibson d...@au1.ibm.com + * + * This file is licensed under the terms of the GNU General Public + * License version 2. This program is licensed as is without + * any warranty of any kind, whether express or implied. + */ + +/dts-v1/; + +/memreserve/ 0x 0x0040; + +/ { + #address-cells = 2; + #size-cells = 1; + model = ibm,acpx1-4xx; + compatible = ibm,acpx1-4xx,ibm,47x-AMP; + dcr-parent = {/cpus/cpu@0}; + + aliases { + serial0 = UART0; + serial1 = UART1; + rapidio0 = rio0; + ethernet0 = FEMAC; + }; + + cpus { + #address-cells = 1; + #size-cells = 0; + + cpu@0 { + device_type = cpu; + model = PowerPC,4xx; // real CPU changed in sim + reg = 0; +clock-frequency = 0x5f5e1000; +timebase-frequency = 0x5f5e1000; + i-cache-line-size = 32; + d-cache-line-size = 32; + i-cache-size = 32768; + d-cache-size = 32768; + dcr-controller; + dcr-access-method = native; + status = ok; + reset-type = 3; // 1=core, 2=chip, 3=system (default) + }; + cpu@1 { + device_type = cpu; + model = PowerPC,4xx; // real CPU changed in sim + reg = 1; +clock-frequency = 0x5f5e1000; +timebase-frequency = 0x5f5e1000; + i-cache-line-size = 32; + d-cache-line-size = 32; + i-cache-size = 32768; + d-cache-size = 32768; + dcr-controller; + dcr-access-method = native; + status = disabled; + enable-method = spin-table; + cpu-release-addr = 0 0x2040; + reset-type = 3; // 1=core, 2=chip, 3=system (default) + }; + }; + +memory@0 { +device_type = memory; +reg = 0x 0x 0x1000; +}; + +memory@8000
[linux-yocto] [PATCH 07/57] arch/arm/mach-axxia: Updated Device Tree for Emulation
From: John Jacques john.jacq...@lsi.com Added device tree support for the latest GIC driver. In some cases, it is necessary to distinguish between simulation, emulation, and hardware systems. Simulation already had a different name (lsi,axm5516-sim). This patch gives emulation a different name as well (lsi,axm5516-emu). Signed-off-by: John Jacques john.jacq...@lsi.com --- arch/arm/boot/dts/axm55xxemu.dts | 33 ++ arch/arm/boot/dts/axm55xxemu7.dts | 226 arch/arm/boot/dts/axm55xxsim16.dts |2 +- 3 files changed, 235 insertions(+), 26 deletions(-) create mode 100644 arch/arm/boot/dts/axm55xxemu7.dts diff --git a/arch/arm/boot/dts/axm55xxemu.dts b/arch/arm/boot/dts/axm55xxemu.dts index d95af00..7c0802a 100644 --- a/arch/arm/boot/dts/axm55xxemu.dts +++ b/arch/arm/boot/dts/axm55xxemu.dts @@ -1,5 +1,5 @@ /* - * arch/arm/boot/dts/axm5500-sim.dts + * arch/arm/boot/dts/axm55xxemu.dts * * Copyright (C) 2012 LSI * @@ -24,7 +24,7 @@ / { model = AXM5516; - compatible = arm, lsi,axm5516; + compatible = arm, lsi,axm5516-emu; interrupt-parent = gic; #address-cells = 2; #size-cells = 2; @@ -46,6 +46,7 @@ compatible = arm,cortex-a15; reg = 0; cpu-release-addr = 0; // Fixed by the boot loader + clock-frequency= 0; // Placeholder }; cpu@1 { @@ -53,6 +54,7 @@ compatible = arm,cortex-a15; reg = 1; cpu-release-addr = 0; // Fixed by the boot loader + clock-frequency= 0; // Placeholder }; cpu@2 { @@ -60,6 +62,7 @@ compatible = arm,cortex-a15; reg = 2; cpu-release-addr = 0; // Fixed by the boot loader + clock-frequency= 0; // Placeholder }; cpu@3 { @@ -67,30 +70,8 @@ compatible = arm,cortex-a15; reg = 3; cpu-release-addr = 0; // Fixed by the boot loader + clock-frequency= 0; // Placeholder }; - - /* - cpu@4 { - device_type = cpu; - compatible = arm,cortex-a15; - reg = 4; -cpu-release-addr = 0; // Fixed by the boot loader - }; - - cpu@5 { - device_type = cpu; - compatible = arm,cortex-a15; - reg = 5; -cpu-release-addr = 0; // Fixed by the boot loader - }; - - cpu@6 { - device_type = cpu; - compatible = arm,cortex-a15; - reg = 6; -cpu-release-addr = 0; // Fixed by the boot loader - }; - */ }; clocks { @@ -122,6 +103,8 @@ interrupt-controller; reg = 0x20 0x01001000 0 0x1000, /* gic dist base */ 0x20 0x01002000 0 0x100, /* gic cpu base */ + 0x20 0x01004000 0 0x2000, /* vgic control */ + 0x20 0x01006000 0 0x2000, /* vgic cpu base */ 0x20 0x1003 0 0x100, /* axm IPI mask reg base */ 0x20 0x1004 0 0x2; /* axm IPI send reg base */ }; diff --git a/arch/arm/boot/dts/axm55xxemu7.dts b/arch/arm/boot/dts/axm55xxemu7.dts new file mode 100644 index 000..56375c1 --- /dev/null +++ b/arch/arm/boot/dts/axm55xxemu7.dts @@ -0,0 +1,226 @@ +/* + * arch/arm/boot/dts/axm55xxemu7.dts + * + * Copyright (C) 2012 LSI + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/dts-v1/; + +/memreserve/ 0x 0x0040; + +/ { + model = AXM5516; + compatible = arm, lsi,axm5516-emu; + interrupt-parent = gic; + #address-cells = 2; + #size-cells = 2; + + chosen { }; + + aliases { + serial0 = axxia_serial0; + timer = axxia_timers; +
[linux-yocto] [PATCH 09/57] arch/arm/mach-axxia: Disable DDR Retention Resets in Sim/Emu
From: John Jacques john.jacq...@lsi.com DDR retention reset only works on hardware systems, this patch disables it in simulation and emulation. Signed-off-by: John Jacques john.jacq...@lsi.com --- arch/arm/mach-axxia/ddr_retention.c | 56 +-- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/arch/arm/mach-axxia/ddr_retention.c b/arch/arm/mach-axxia/ddr_retention.c index e409774..933ff6d 100644 --- a/arch/arm/mach-axxia/ddr_retention.c +++ b/arch/arm/mach-axxia/ddr_retention.c @@ -25,6 +25,7 @@ #include linux/reboot.h #include linux/syscore_ops.h #include linux/proc_fs.h +#include linux/prefetch.h #include linux/delay.h #include linux/of.h @@ -35,8 +36,10 @@ static void __iomem *nca; static void __iomem *apb; static void __iomem *dickens; +static int ddr_retention_enabled; -unsigned long ncp_caal_regions_acp55xx[] = { +static unsigned long +ncp_caal_regions_acp55xx[] = { NCP_REGION_ID(0x0b, 0x05), /* SPPV2 */ NCP_REGION_ID(0x0c, 0x05), /* SED */ NCP_REGION_ID(0x0e, 0x05), /* DPI_HFA */ @@ -120,7 +123,6 @@ flush_l3(void) } asm volatile (dsb : : : memory); - asm volatile (dmb : : : memory); return; } @@ -253,23 +255,22 @@ initiate_retention_reset(void) { unsigned long ctl_244 = 0; unsigned long value; - unsigned long delay; + + if (0 == ddr_retention_enabled) { + pr_info(DDR Retention Reset is Not Enabled\n); + return; + } if (NULL == nca || NULL == apb || NULL == dickens) BUG(); - system_state = SYSTEM_RESTART; + /* send stop message to other CPUs */ + local_irq_disable(); asm volatile (dsb : : : memory); asm volatile (dmb : : : memory); - usermodehelper_disable(); - device_shutdown(); - cpu_hotplug_disable(); - syscore_shutdown(); + system_state = SYSTEM_RESTART; smp_send_stop(); - for (delay = 0; delay 1; ++delay) - udelay(1000); - flush_cache_all(); flush_l3(); @@ -290,6 +291,7 @@ initiate_retention_reset(void) ncr_read(NCP_REGION_ID(34, 0), 0x3d0, 4, ctl_244); ctl_244 |= 0x000a; + /* * set up for CRBW operation */ @@ -309,7 +311,7 @@ initiate_retention_reset(void) * into cache */ asm volatile (dsb : : : memory); - prefetch(ncp_ddr_shutdown); + prefetch_range(ncp_ddr_shutdown, 0x1000); ncp_ddr_shutdown(); @@ -325,25 +327,33 @@ axxia_ddr_retention_trigger(struct file *file, const char __user *buf, return 0; } -static const struct file_operations proc_ops = { +static const struct file_operations axxia_ddr_retention_proc_ops = { .write = axxia_ddr_retention_trigger, .llseek = noop_llseek, }; -#define PROC_PATH driver/axxia_ddr_retention_reset - void axxia_ddr_retention_init(void) { - if (!of_find_compatible_node(NULL, NULL, lsi,axm5516)) - return; + /* + * Only available on ASIC systems. + */ - if (!proc_create(PROC_PATH, S_IWUSR, NULL, proc_ops)) { - pr_err(Failed to register DDR retention proc interface\n); - return; + if (of_find_compatible_node(NULL, NULL, lsi,axm5516)) { + /* Create /proc entry. */ + if (!proc_create(driver/axxia_ddr_retention_reset, + S_IWUSR, NULL, axxia_ddr_retention_proc_ops)) { + pr_info(Failed to register DDR retention proc entry\n); + } else { + apb = ioremap(0x201000, 0x4); + nca = ioremap(0x00202010ULL, 0x2); + dickens = ioremap(0x20, 0x100); + ddr_retention_enabled = 1; + pr_info(DDR Retention Reset Initialized\n); + } + } else { + pr_info(DDR Retention Reset is Not Available\n); } - apb = ioremap(0x201000, 0x4); - nca = ioremap(0x00202010ULL, 0x2); - dickens = ioremap(0x20, 0x100); + return; } -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yo...@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 08/57] arch/arm/mach-axxia: Accept the new lsi, axm5516-emu Machine
From: John Jacques john.jacq...@lsi.com Add lsi,axm5516-emu to the list of matching machines. Signed-off-by: John Jacques john.jacq...@lsi.com --- arch/arm/mach-axxia/axxia.c |4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/mach-axxia/axxia.c b/arch/arm/mach-axxia/axxia.c index b227ca9..dcb6305 100644 --- a/arch/arm/mach-axxia/axxia.c +++ b/arch/arm/mach-axxia/axxia.c @@ -58,6 +58,7 @@ static const char *axxia_dt_match[] __initconst = { lsi,axm5516, lsi,axm5516-sim, + lsi,axm5516-emu, NULL }; @@ -296,6 +297,7 @@ void __init axxia_dt_init(void) pm_power_off = NULL; /* TBD */ ncr_init(); + axxia_ddr_retention_init(); spi_register_board_info(spi_devs, ARRAY_SIZE(spi_devs)); @@ -307,8 +309,6 @@ void __init axxia_dt_init(void) axxia_pcie_init(); - axxia_ddr_retention_init(); - platform_device_register(pmu_device); } -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yo...@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 01/57] i2c-axxia: Fix broken smbus block read
From: Anders Berg anders.b...@lsi.com Changed the initial transfer size on block reads from 1 to I2C_SMBUS_BLOCK_MAX. The size is adjusted when the first byte (block length) is received. Having the initial size set to 1 could cause the controller to stop the transfter after the block length byte, if the transfter length register wasn't updated in time. Signed-off-by: Anders Berg anders.b...@lsi.com --- drivers/i2c/busses/i2c-axxia.c | 20 +--- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/drivers/i2c/busses/i2c-axxia.c b/drivers/i2c/busses/i2c-axxia.c index e0a4b24..a46d2d3 100644 --- a/drivers/i2c/busses/i2c-axxia.c +++ b/drivers/i2c/busses/i2c-axxia.c @@ -260,15 +260,18 @@ axxia_i2c_empty_rx_fifo(struct axxia_i2c_dev *idev) while (0 bytes_to_transfer--) { int c = readl(idev-regs-mst_data); if (idev-msg_xfrd == 0 i2c_m_recv_len(msg)) { - if (c == 0 || c I2C_SMBUS_BLOCK_MAX) { + /* +* Check length byte for SMBus block read +*/ + if (c = 0) { idev-msg_err = -EPROTO; i2c_int_disable(idev, ~0); - dev_err(idev-dev, - invalid SMBus block size (%d)\n, c); complete(idev-msg_complete); break; + } else if (c I2C_SMBUS_BLOCK_MAX) { + c = I2C_SMBUS_BLOCK_MAX; } - msg-len += c; + msg-len = 1 + c; writel(msg-len, idev-regs-mst_rx_xfer); } msg-buf[idev-msg_xfrd++] = c; @@ -330,7 +333,7 @@ axxia_i2c_isr(int irq, void *_dev) if (unlikely(status MST_STATUS_ERR)) { idev-msg_err = status MST_STATUS_ERR; i2c_int_disable(idev, ~0); - dev_err(idev-dev, error %s, rx=%u/%u tx=%u/%u\n, + 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), @@ -389,7 +392,10 @@ axxia_i2c_xfer_msg(struct axxia_i2c_dev *idev, struct i2c_msg *msg) /* TX 0 bytes */ writel(0, idev-regs-mst_tx_xfer); /* RX # bytes */ - writel(msg-len, idev-regs-mst_rx_xfer); + if (i2c_m_recv_len(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 { @@ -421,7 +427,7 @@ axxia_i2c_xfer_msg(struct axxia_i2c_dev *idev, struct i2c_msg *msg) WARN_ON(readl(idev-regs-mst_command) 0x8); - if (WARN_ON(ret == 0)) { + if (ret == 0) { dev_warn(idev-dev, xfer timeout (%#x)\n, msg-addr); axxia_i2c_init(idev); return -ETIMEDOUT; -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yo...@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 15/57] LSI AXM55xx/rionet: Update RIO interfaces with latest changes.
From: Michael Bringmann michael.bringm...@lsi.com Signed-off-by: Michael Bringmann michael.bringm...@lsi.com --- drivers/net/rionet.c | 112 -- 1 file changed, 71 insertions(+), 41 deletions(-) diff --git a/drivers/net/rionet.c b/drivers/net/rionet.c index f433b59..bf79034 100644 --- a/drivers/net/rionet.c +++ b/drivers/net/rionet.c @@ -44,6 +44,7 @@ MODULE_LICENSE(GPL); #define RIONET_DOORBELL_LEAVE 0x1001 #define RIONET_MAILBOX 0 +#define RIONET_LETTER 0 #define RIONET_TX_RING_SIZECONFIG_RIONET_TX_SIZE #define RIONET_RX_RING_SIZECONFIG_RIONET_RX_SIZE @@ -98,10 +99,15 @@ static int rionet_rx_clean(struct net_device *ndev) i = rnet-rx_slot; do { + int sz, slot; + u16 destid; + if (!rnet-rx_skb[i]) continue; - if (!(data = rio_get_inb_message(rnet-mport, RIONET_MAILBOX))) + if (!(data = rio_get_inb_message(rnet-mport, RIONET_MAILBOX, +RIONET_LETTER, sz, slot, +destid))) break; rnet-rx_skb[i]-data = data; @@ -145,8 +151,13 @@ static int rionet_queue_tx_msg(struct sk_buff *skb, struct net_device *ndev, struct rio_dev *rdev) { struct rionet_private *rnet = netdev_priv(ndev); + intmbox_dest = 0; + intletter = 0; + intflags = 0; + void *cookie = NULL; - rio_add_outb_message(rnet-mport, rdev, 0, skb-data, skb-len); + rio_add_outb_message(rnet-mport, rdev, mbox_dest, letter, flags, +skb-data, skb-len, cookie); rnet-tx_skb[rnet-tx_slot] = skb; ndev-stats.tx_packets++; @@ -174,11 +185,7 @@ static int rionet_start_xmit(struct sk_buff *skb, struct net_device *ndev) unsigned long flags; int add_num = 1; - local_irq_save(flags); - if (!spin_trylock(rnet-tx_lock)) { - local_irq_restore(flags); - return NETDEV_TX_LOCKED; - } + spin_lock_irqsave(rnet-tx_lock, flags); if (is_multicast_ether_addr(eth-h_dest)) add_num = nets[rnet-mport-id].nact; @@ -219,9 +226,14 @@ static void rionet_dbell_event(struct rio_mport *mport, void *dev_id, u16 sid, u u16 info) { struct net_device *ndev = dev_id; - struct rionet_private *rnet = netdev_priv(ndev); + struct rionet_private *rnet; struct rionet_peer *peer; + if (ndev == NULL) + return; + + rnet = netdev_priv(ndev); + if (netif_msg_intr(rnet)) printk(KERN_INFO %s: doorbell sid %4.4x tid %4.4x info %4.4x, DRV_NAME, sid, tid, info); @@ -252,22 +264,33 @@ static void rionet_inb_msg_event(struct rio_mport *mport, void *dev_id, int mbox { int n; struct net_device *ndev = dev_id; - struct rionet_private *rnet = netdev_priv(ndev); + struct rionet_private *rnet; + + if (ndev == NULL) + return; + + rnet = netdev_priv(ndev); if (netif_msg_intr(rnet)) printk(KERN_INFO %s: inbound message event, mbox %d slot %d\n, DRV_NAME, mbox, slot); spin_lock(rnet-lock); - if ((n = rionet_rx_clean(ndev)) != rnet-rx_slot) + n = rionet_rx_clean(ndev); + if (n != rnet-rx_slot) rionet_rx_fill(ndev, n); spin_unlock(rnet-lock); } -static void rionet_outb_msg_event(struct rio_mport *mport, void *dev_id, int mbox, int slot) +static void rionet_outb_msg_event(struct rio_mport *mport, void *dev_id, int mbox, int slot, void *cookie) { struct net_device *ndev = dev_id; - struct rionet_private *rnet = netdev_priv(ndev); + struct rionet_private *rnet; + + if (ndev == NULL) + return; + + rnet = netdev_priv(ndev); spin_lock(rnet-lock); @@ -300,25 +323,29 @@ static int rionet_open(struct net_device *ndev) if (netif_msg_ifup(rnet)) printk(KERN_INFO %s: open\n, DRV_NAME); - if ((rc = rio_request_inb_dbell(rnet-mport, - (void *)ndev, - RIONET_DOORBELL_JOIN, - RIONET_DOORBELL_LEAVE, - rionet_dbell_event)) 0) + rc = rio_request_inb_dbell(rnet-mport, + (void *)ndev, + RIONET_DOORBELL_JOIN, + RIONET_DOORBELL_LEAVE, + rionet_dbell_event); + if (rc 0) goto out; - if ((rc =
[linux-yocto] [PATCH 02/57] i2c-axxia: code update kernel.org coding spec
This file was updated with the checkpatch and the appropriate changes were made to support kernel.org syntax --- drivers/i2c/busses/i2c-axxia.c | 26 -- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/drivers/i2c/busses/i2c-axxia.c b/drivers/i2c/busses/i2c-axxia.c index a46d2d3..f536dc4 100644 --- a/drivers/i2c/busses/i2c-axxia.c +++ b/drivers/i2c/busses/i2c-axxia.c @@ -207,14 +207,13 @@ axxia_i2c_init(struct axxia_i2c_dev *idev) /* Find the prescaler value that makes tmo_clk fit in 15-bits counter. */ - for (prescale=0; prescale 15; ++prescale) { + for (prescale = 0; prescale 15; ++prescale) { if (tmo_clk = 0x7fff) break; tmo_clk = 1; } - if (tmo_clk 0x7fff) { + if (tmo_clk 0x7fff) tmo_clk = 0x7fff; - } /* Prescale divider (log2) */ writel(prescale, idev-regs-timer_clock_div); @@ -358,9 +357,8 @@ axxia_i2c_isr(int irq, void *_dev) } /* RX FIFO needs service? */ - if (i2c_m_rd(idev-msg) (status MST_STATUS_RFL)) { + if (i2c_m_rd(idev-msg) (status MST_STATUS_RFL)) axxia_i2c_empty_rx_fifo(idev); - } /* TX FIFO needs service? */ if (!i2c_m_rd(idev-msg) (status MST_STATUS_TFL)) { @@ -421,7 +419,8 @@ axxia_i2c_xfer_msg(struct axxia_i2c_dev *idev, struct i2c_msg *msg) i2c_int_enable(idev, int_mask); - ret = wait_for_completion_timeout(idev-msg_complete, I2C_XFER_TIMEOUT); + ret = wait_for_completion_timeout(idev-msg_complete, + I2C_XFER_TIMEOUT); i2c_int_disable(idev, int_mask); @@ -452,11 +451,11 @@ axxia_i2c_stop(struct axxia_i2c_dev *idev) /* Issue stop */ writel(0xb, idev-regs-mst_command); i2c_int_enable(idev, int_mask); - ret = wait_for_completion_timeout(idev-msg_complete, I2C_STOP_TIMEOUT); + ret = wait_for_completion_timeout(idev-msg_complete, + I2C_STOP_TIMEOUT); i2c_int_disable(idev, int_mask); - if (ret == 0) { + if (ret == 0) return -ETIMEDOUT; - } WARN_ON(readl(idev-regs-mst_command) 0x8); @@ -470,9 +469,8 @@ axxia_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) int i; int ret = 0; - for (i = 0; ret == 0 i num; i++) { + for (i = 0; ret == 0 i num; i++) ret = axxia_i2c_xfer_msg(idev, msgs[i]); - } axxia_i2c_stop(idev); @@ -482,10 +480,10 @@ axxia_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) static u32 axxia_i2c_func(struct i2c_adapter *adap) { - return (I2C_FUNC_I2C | + return I2C_FUNC_I2C | I2C_FUNC_10BIT_ADDR | I2C_FUNC_SMBUS_EMUL | - I2C_FUNC_SMBUS_BLOCK_DATA); + I2C_FUNC_SMBUS_BLOCK_DATA; } @@ -533,7 +531,7 @@ axxia_i2c_probe(struct platform_device *pdev) } idev-base = base; - idev-regs = (struct __iomem i2c_regs *) base; + idev-regs = (struct __iomem i2c_regs*) base; idev-i2c_clk = i2c_clk; idev-dev = pdev-dev; init_completion(idev-msg_complete); -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yo...@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
Re: [yocto] Losing Ethernet after reboot
ls -l /etc/rc*/S*networking only gives me the following: lrwxrwxrwx 1 root root 20 Mar 14 2014 /etc/rcS.d/S40networking - ../init.d/networking On Tue, Mar 18, 2014 at 9:56 AM, Gary Thomas g...@mlbassoc.com wrote: On 2014-03-18 10:42, Rick Bianchi wrote: Sorry typing on the fly. Here is what is in interfaces: auto eth0 iface eth0 inet dhcp Are you using systemd or sysvinit? I use sysvinit and have these init script settings that start the network: root@everest-p36:~# ls -l /etc/rc*/S*networking lrwxrwxrwx 1 root root 20 Mar 18 15:58 /etc/rc2.d/S01networking - ../init.d/networking lrwxrwxrwx 1 root root 20 Mar 18 15:58 /etc/rc3.d/S01networking - ../init.d/networking lrwxrwxrwx 1 root root 20 Mar 18 15:58 /etc/rc4.d/S01networking - ../init.d/networking lrwxrwxrwx 1 root root 20 Mar 18 15:58 /etc/rc5.d/S01networking - ../init.d/networking On Tue, Mar 18, 2014 at 9:17 AM, Gary Thomas g...@mlbassoc.com mailto: g...@mlbassoc.com wrote: On 2014-03-18 10:10, Rick Bianchi wrote: I losing Ethernet after every reboot. What is the process to have it come up manually? Image: Dylan gumstix-console I have already added eth0 auto to my /etc/network/interfaces. Shouldn't this line read auto eth0 not the other way around? At the moment I need to run the following after every reboot: ifconfig eth0 up udhcpc eth0 -- Gary Thomas | Consulting for the MLB Associates |Embedded world -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] Losing Ethernet after reboot
1. Yes, I do have init-ifupdown on the target. 2. No, I have not made any changes to the INITSCRIPT_PARAMS. On Tue, Mar 18, 2014 at 10:11 AM, Gary Thomas g...@mlbassoc.com wrote: On 2014-03-18 10:58, Rick Bianchi wrote: ls -l /etc/rc*/S*networking only gives me the following: lrwxrwxrwx 1 root root 20 Mar 14 2014 /etc/rcS.d/S40networking - ../init.d/networking Looks like something changed the init scripts settings. These are in the file .../meta/recipes-core/init-ifupdown/init-ifupdown_1.0.bb: INITSCRIPT_NAME = networking INITSCRIPT_PARAMS = start 01 2 3 4 5 . stop 80 0 6 1 . I presume that you have a init-ifupdown_1.0.bbappend file for your target? Are you changing the INITSCRIPT_PARAMS perhaps? On Tue, Mar 18, 2014 at 9:56 AM, Gary Thomas g...@mlbassoc.com mailto: g...@mlbassoc.com wrote: On 2014-03-18 10:42, Rick Bianchi wrote: Sorry typing on the fly. Here is what is in interfaces: auto eth0 iface eth0 inet dhcp Are you using systemd or sysvinit? I use sysvinit and have these init script settings that start the network: root@everest-p36:~# ls -l /etc/rc*/S*networking lrwxrwxrwx 1 root root 20 Mar 18 15:58 /etc/rc2.d/S01networking - ../init.d/networking lrwxrwxrwx 1 root root 20 Mar 18 15:58 /etc/rc3.d/S01networking - ../init.d/networking lrwxrwxrwx 1 root root 20 Mar 18 15:58 /etc/rc4.d/S01networking - ../init.d/networking lrwxrwxrwx 1 root root 20 Mar 18 15:58 /etc/rc5.d/S01networking - ../init.d/networking On Tue, Mar 18, 2014 at 9:17 AM, Gary Thomas g...@mlbassoc.commailto: g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-18 10:10, Rick Bianchi wrote: I losing Ethernet after every reboot. What is the process to have it come up manually? Image: Dylan gumstix-console I have already added eth0 auto to my /etc/network/interfaces. Shouldn't this line read auto eth0 not the other way around? At the moment I need to run the following after every reboot: ifconfig eth0 up udhcpc eth0 -- Gary Thomas | Consulting for the MLB Associates |Embedded world -- ___ yocto mailing list yocto@yoctoproject.org mailto:yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto -- Gary Thomas | Consulting for the MLB Associates |Embedded world -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] Building on target
Should have noted, that the date and time reset on every reboot? On Tue, Mar 18, 2014 at 10:48 AM, Rick Bianchi bianchirickku...@gmail.comwrote: Gary, I noticed during the make the it was complaining about the date being in the future; I checked and sure thing the date and time were bit off, about 14 years. I set it to the correct time with date --set=18 MARCH 2014 10:32:00 and the build completed in under 10 mins. On Fri, Mar 14, 2014 at 3:16 PM, Gary Thomas g...@mlbassoc.com wrote: On 2014-03-14 08:49, Rick Bianchi wrote: If I have time today I will try to reproduce your results. If not, I will get to it first thing next week and post my result. One thing I forgot to point out is I used the identical kernel+modules for both setups. I would be interested to see if that makes any difference for you. I can't fully test it as my board doesn't have a Linaro kernel. So there are four combinations - I only tried the first two: Yocto kernel + Yocto rootfs Yocto kernel + Linaro rootfs Linaro kernel + Yocto rootfs Linaro kernel + Linaro rootfs On Fri, Mar 14, 2014 at 7:38 AM, Gary Thomas g...@mlbassoc.commailto: g...@mlbassoc.com wrote: On 2014-03-12 13:11, Rick Bianchi wrote: usbip from /usr/src/kernel/drivers/staging/usbip I finally managed to make this comparison. I did this by taking my Poky/Yocto built system for a i.MX6 system (ARM Cortex-A9) and replaced the rootfs with one for the Gumstix Overo (linaro). The results were nothing like yours, so it's a bit confusing. I actually built an entire Linux kernel - not just the one directory you mentioned. Poky/Yocto - 37 minutes Linaro - 48 minutes There is some flex in these numbers as they were on different [brand] SD cards, etc, but I sure did not see the 5 minutes for Linaro vs 24 hours on Yocto that you reported. Perhaps the only thing I did differently was I added the SDK tools to my Yocto system using these meta-packages instead of the list you used. packagegroup-core-sdk packagegroup-core-standalone-sdk-target You might try that to see if it makes any difference. n.b. part of what took me so long to get these results is I was trying to run this test on something closer to your Overo board. I have an older OMAP DM3730 board here that I tried to do these same steps, but it was unstable and I could not get the Linaro based file system to work at all. Very strange. In any case, I think the comparison I did get with the i.MX6 is valid. On Wed, Mar 12, 2014 at 11:44 AM, Gary Thomas g...@mlbassoc.commailto: g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-12 10:09, Rick Bianchi wrote: I completely agree with regards to the comparison, but I have compiled the same exact source on the same target (arm) and it only took 5 minutes when running the Linaro image. To clarify, the only difference is the build, one is Linaro (took 5 minutes to compile source on the target) and the other Yocto (took almost 24 hours to compile source on the target). Sorry, I missed that this was on the same hardware. What are you building? I'm going to try and duplicate this here on hardware I have that's quite similar to your Gumstix board. Is there something that I am missing? On Wed, Mar 12, 2014 at 8:28 AM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.commailto: g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-12 09:15, Rick Bianchi wrote: I have the gumstix-console-image with the added packages below. When I compile on the target is take a very long time for it to complete, over 24 hours. I have compiled the same code on the same target, but running Linaro image, and it only takes a few minutes. Is there another recipe that I need to add to the build to speed up compiling? Doubtful. The reason your build on the target takes so long is merely one of horsepower - that little ARM processor just doesn't have it, especially if you are comparing it to a typical desktop environment. EXTRA_IMAGE_FEATURES += dev-pkgs IMAGE_INSTALL_append = autoconf IMAGE_INSTALL_append = autofs IMAGE_INSTALL_append = automake IMAGE_INSTALL_append = ccache IMAGE_INSTALL_append = chkconfig IMAGE_INSTALL_append = dbus-glib IMAGE_INSTALL_append = gcc
Re: [yocto] Losing Ethernet after reboot
On 2014-03-18 11:14, Rick Bianchi wrote: 1. Yes, I do have init-ifupdown on the target. 2. No, I have not made any changes to the INITSCRIPT_PARAMS. OK, you must be using an older release/branch as this was recently changed. You can try tracing the bootup to see if/when the networking is started: Make this change reboot. root@everest-p36:~# sed -i s/VERBOSE=no/VERBOSE=very/ /etc/default/rcS This will print a line indicating which init scripts are run, etc. Also, what happens if you try to bring up your network using 'ifup eth0' instead of 'ifconfig eth0 up;udhcpc eth0'? On Tue, Mar 18, 2014 at 10:11 AM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-18 10:58, Rick Bianchi wrote: ls -l /etc/rc*/S*networking only gives me the following: lrwxrwxrwx 1 root root 20 Mar 14 2014 /etc/rcS.d/S40networking - ../init.d/networking Looks like something changed the init scripts settings. These are in the file .../meta/recipes-core/init-ifupdown/init-ifupdown_1.0.bb http://init-ifupdown_1.0.bb: INITSCRIPT_NAME = networking INITSCRIPT_PARAMS = start 01 2 3 4 5 . stop 80 0 6 1 . I presume that you have a init-ifupdown_1.0.bbappend file for your target? Are you changing the INITSCRIPT_PARAMS perhaps? On Tue, Mar 18, 2014 at 9:56 AM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-18 10:42, Rick Bianchi wrote: Sorry typing on the fly. Here is what is in interfaces: auto eth0 iface eth0 inet dhcp Are you using systemd or sysvinit? I use sysvinit and have these init script settings that start the network: root@everest-p36:~# ls -l /etc/rc*/S*networking lrwxrwxrwx 1 root root 20 Mar 18 15:58 /etc/rc2.d/S01networking - ../init.d/networking lrwxrwxrwx 1 root root 20 Mar 18 15:58 /etc/rc3.d/S01networking - ../init.d/networking lrwxrwxrwx 1 root root 20 Mar 18 15:58 /etc/rc4.d/S01networking - ../init.d/networking lrwxrwxrwx 1 root root 20 Mar 18 15:58 /etc/rc5.d/S01networking - ../init.d/networking On Tue, Mar 18, 2014 at 9:17 AM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-18 10:10, Rick Bianchi wrote: I losing Ethernet after every reboot. What is the process to have it come up manually? Image: Dylan gumstix-console I have already added eth0 auto to my /etc/network/interfaces. Shouldn't this line read auto eth0 not the other way around? At the moment I need to run the following after every reboot: ifconfig eth0 up udhcpc eth0 -- Gary Thomas | Consulting for the MLB Associates |Embedded world -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] Building on target
On 2014-03-18 11:48, Rick Bianchi wrote: Gary, I noticed during the make the it was complaining about the date being in the future; I checked and sure thing the date and time were bit off, about 14 years. I set it to the correct time with date --set=18 MARCH 2014 10:32:00 and the build completed in under 10 mins. So to clarify, your compile results on Yocto were not that different from those on Linaro? Certainly not minutes vs days, correct? On Fri, Mar 14, 2014 at 3:16 PM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-14 08:49, Rick Bianchi wrote: If I have time today I will try to reproduce your results. If not, I will get to it first thing next week and post my result. One thing I forgot to point out is I used the identical kernel+modules for both setups. I would be interested to see if that makes any difference for you. I can't fully test it as my board doesn't have a Linaro kernel. So there are four combinations - I only tried the first two: Yocto kernel + Yocto rootfs Yocto kernel + Linaro rootfs Linaro kernel + Yocto rootfs Linaro kernel + Linaro rootfs On Fri, Mar 14, 2014 at 7:38 AM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-12 13:11, Rick Bianchi wrote: usbip from /usr/src/kernel/drivers/staging/usbip I finally managed to make this comparison. I did this by taking my Poky/Yocto built system for a i.MX6 system (ARM Cortex-A9) and replaced the rootfs with one for the Gumstix Overo (linaro). The results were nothing like yours, so it's a bit confusing. I actually built an entire Linux kernel - not just the one directory you mentioned. Poky/Yocto - 37 minutes Linaro - 48 minutes There is some flex in these numbers as they were on different [brand] SD cards, etc, but I sure did not see the 5 minutes for Linaro vs 24 hours on Yocto that you reported. Perhaps the only thing I did differently was I added the SDK tools to my Yocto system using these meta-packages instead of the list you used. packagegroup-core-sdk packagegroup-core-standalone-sdk-target You might try that to see if it makes any difference. n.b. part of what took me so long to get these results is I was trying to run this test on something closer to your Overo board. I have an older OMAP DM3730 board here that I tried to do these same steps, but it was unstable and I could not get the Linaro based file system to work at all. Very strange. In any case, I think the comparison I did get with the i.MX6 is valid. On Wed, Mar 12, 2014 at 11:44 AM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-12 10:09, Rick Bianchi wrote: I completely agree with regards to the comparison, but I have compiled the same exact source on the same target (arm) and it only took 5 minutes when running the Linaro image. To clarify, the only difference is the build, one is Linaro (took 5 minutes to compile source on the target) and the other Yocto (took almost 24 hours to compile source on the target). Sorry, I missed that this was on the same hardware. What are you building? I'm going to try and duplicate this here on hardware I have that's quite similar to your Gumstix board. Is there something that I am missing? On Wed, Mar 12, 2014 at 8:28 AM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-12 09:15, Rick Bianchi wrote: I have the gumstix-console-image with the added packages below. When I compile on the target is take a very long time for it to complete, over 24 hours. I have compiled the same code on the same target, but running Linaro image, and it only takes a few minutes. Is there another recipe that I need to add to the build to speed up
Re: [yocto] Building on target
On 2014-03-18 11:49, Rick Bianchi wrote: Should have noted, that the date and time reset on every reboot? Unless you have a battery backed up clock device, e.g. Dallas RTC, this will happen. If you shut your Yocto system down properly, e.g. using '# reboot', it will keep track of when you shut down and then set the clock to that time when you reboot. Without a true RTC, there's little else that it can do unless you run NTP and get the time from some external server. On Tue, Mar 18, 2014 at 10:48 AM, Rick Bianchi bianchirickku...@gmail.com mailto:bianchirickku...@gmail.com wrote: Gary, I noticed during the make the it was complaining about the date being in the future; I checked and sure thing the date and time were bit off, about 14 years. I set it to the correct time with date --set=18 MARCH 2014 10:32:00 and the build completed in under 10 mins. On Fri, Mar 14, 2014 at 3:16 PM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-14 08:49, Rick Bianchi wrote: If I have time today I will try to reproduce your results. If not, I will get to it first thing next week and post my result. One thing I forgot to point out is I used the identical kernel+modules for both setups. I would be interested to see if that makes any difference for you. I can't fully test it as my board doesn't have a Linaro kernel. So there are four combinations - I only tried the first two: Yocto kernel + Yocto rootfs Yocto kernel + Linaro rootfs Linaro kernel + Yocto rootfs Linaro kernel + Linaro rootfs On Fri, Mar 14, 2014 at 7:38 AM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-12 13:11, Rick Bianchi wrote: usbip from /usr/src/kernel/drivers/staging/usbip I finally managed to make this comparison. I did this by taking my Poky/Yocto built system for a i.MX6 system (ARM Cortex-A9) and replaced the rootfs with one for the Gumstix Overo (linaro). The results were nothing like yours, so it's a bit confusing. I actually built an entire Linux kernel - not just the one directory you mentioned. Poky/Yocto - 37 minutes Linaro - 48 minutes There is some flex in these numbers as they were on different [brand] SD cards, etc, but I sure did not see the 5 minutes for Linaro vs 24 hours on Yocto that you reported. Perhaps the only thing I did differently was I added the SDK tools to my Yocto system using these meta-packages instead of the list you used. packagegroup-core-sdk packagegroup-core-standalone-sdk-target You might try that to see if it makes any difference. n.b. part of what took me so long to get these results is I was trying to run this test on something closer to your Overo board. I have an older OMAP DM3730 board here that I tried to do these same steps, but it was unstable and I could not get the Linaro based file system to work at all. Very strange. In any case, I think the comparison I did get with the i.MX6 is valid. On Wed, Mar 12, 2014 at 11:44 AM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-12 10:09, Rick Bianchi wrote: I completely agree with regards to the comparison, but I have compiled the same exact source on the same target (arm) and it only took 5 minutes when running the Linaro image. To clarify, the only difference is the build, one is Linaro (took 5 minutes to compile source on the target) and the other Yocto (took almost 24 hours to compile source on the target). Sorry, I missed that this was on the same hardware. What are you building? I'm going to try and duplicate this here on hardware I have that's quite similar to your Gumstix board. Is there something that I am missing? On Wed, Mar 12, 2014 at 8:28 AM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com
Re: [yocto] Building on target
On Tuesday 18 March 2014 10:49:02 Rick Bianchi wrote: Should have noted, that the date and time reset on every reboot? Hmm, could it be then that make was seeing more had changed and needed to be rebuilt simply because the date changed? Cheers, Paul -- Paul Eggleton Intel Open Source Technology Centre -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] Building on target
Got it. On Tue, Mar 18, 2014 at 10:55 AM, Gary Thomas g...@mlbassoc.com wrote: On 2014-03-18 11:49, Rick Bianchi wrote: Should have noted, that the date and time reset on every reboot? Unless you have a battery backed up clock device, e.g. Dallas RTC, this will happen. If you shut your Yocto system down properly, e.g. using '# reboot', it will keep track of when you shut down and then set the clock to that time when you reboot. Without a true RTC, there's little else that it can do unless you run NTP and get the time from some external server. On Tue, Mar 18, 2014 at 10:48 AM, Rick Bianchi bianchirickku...@gmail.com mailto:bianchirickku...@gmail.com wrote: Gary, I noticed during the make the it was complaining about the date being in the future; I checked and sure thing the date and time were bit off, about 14 years. I set it to the correct time with date --set=18 MARCH 2014 10:32:00 and the build completed in under 10 mins. On Fri, Mar 14, 2014 at 3:16 PM, Gary Thomas g...@mlbassoc.commailto: g...@mlbassoc.com wrote: On 2014-03-14 08:49, Rick Bianchi wrote: If I have time today I will try to reproduce your results. If not, I will get to it first thing next week and post my result. One thing I forgot to point out is I used the identical kernel+modules for both setups. I would be interested to see if that makes any difference for you. I can't fully test it as my board doesn't have a Linaro kernel. So there are four combinations - I only tried the first two: Yocto kernel + Yocto rootfs Yocto kernel + Linaro rootfs Linaro kernel + Yocto rootfs Linaro kernel + Linaro rootfs On Fri, Mar 14, 2014 at 7:38 AM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.commailto: g...@mlbassoc.com wrote: On 2014-03-12 13:11, Rick Bianchi wrote: usbip from /usr/src/kernel/drivers/staging/usbip I finally managed to make this comparison. I did this by taking my Poky/Yocto built system for a i.MX6 system (ARM Cortex-A9) and replaced the rootfs with one for the Gumstix Overo (linaro). The results were nothing like yours, so it's a bit confusing. I actually built an entire Linux kernel - not just the one directory you mentioned. Poky/Yocto - 37 minutes Linaro - 48 minutes There is some flex in these numbers as they were on different [brand] SD cards, etc, but I sure did not see the 5 minutes for Linaro vs 24 hours on Yocto that you reported. Perhaps the only thing I did differently was I added the SDK tools to my Yocto system using these meta-packages instead of the list you used. packagegroup-core-sdk packagegroup-core-standalone-sdk-target You might try that to see if it makes any difference. n.b. part of what took me so long to get these results is I was trying to run this test on something closer to your Overo board. I have an older OMAP DM3730 board here that I tried to do these same steps, but it was unstable and I could not get the Linaro based file system to work at all. Very strange. In any case, I think the comparison I did get with the i.MX6 is valid. On Wed, Mar 12, 2014 at 11:44 AM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.commailto: g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-12 10:09, Rick Bianchi wrote: I completely agree with regards to the comparison, but I have compiled the same exact source on the same target (arm) and it only took 5 minutes when running the Linaro image. To clarify, the only difference is the build, one is Linaro (took 5 minutes to compile source on the target) and the other Yocto (took almost 24 hours to compile source on the target). Sorry, I missed that this was on the same hardware. What are you building? I'm going to try and duplicate this here on hardware I have that's quite similar to your Gumstix board. Is there something that I am missing? On Wed, Mar 12, 2014 at 8:28 AM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.commailto: g...@mlbassoc.com
Re: [yocto] Building on target
I rebooted the system with the reboot command and then checked the date and time with date, it did not hold the system time and date correctly Sat Jan 1 02:28:44 UTC 2000. On Tue, Mar 18, 2014 at 10:55 AM, Gary Thomas g...@mlbassoc.com wrote: On 2014-03-18 11:49, Rick Bianchi wrote: Should have noted, that the date and time reset on every reboot? Unless you have a battery backed up clock device, e.g. Dallas RTC, this will happen. If you shut your Yocto system down properly, e.g. using '# reboot', it will keep track of when you shut down and then set the clock to that time when you reboot. Without a true RTC, there's little else that it can do unless you run NTP and get the time from some external server. On Tue, Mar 18, 2014 at 10:48 AM, Rick Bianchi bianchirickku...@gmail.com mailto:bianchirickku...@gmail.com wrote: Gary, I noticed during the make the it was complaining about the date being in the future; I checked and sure thing the date and time were bit off, about 14 years. I set it to the correct time with date --set=18 MARCH 2014 10:32:00 and the build completed in under 10 mins. On Fri, Mar 14, 2014 at 3:16 PM, Gary Thomas g...@mlbassoc.commailto: g...@mlbassoc.com wrote: On 2014-03-14 08:49, Rick Bianchi wrote: If I have time today I will try to reproduce your results. If not, I will get to it first thing next week and post my result. One thing I forgot to point out is I used the identical kernel+modules for both setups. I would be interested to see if that makes any difference for you. I can't fully test it as my board doesn't have a Linaro kernel. So there are four combinations - I only tried the first two: Yocto kernel + Yocto rootfs Yocto kernel + Linaro rootfs Linaro kernel + Yocto rootfs Linaro kernel + Linaro rootfs On Fri, Mar 14, 2014 at 7:38 AM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.commailto: g...@mlbassoc.com wrote: On 2014-03-12 13:11, Rick Bianchi wrote: usbip from /usr/src/kernel/drivers/staging/usbip I finally managed to make this comparison. I did this by taking my Poky/Yocto built system for a i.MX6 system (ARM Cortex-A9) and replaced the rootfs with one for the Gumstix Overo (linaro). The results were nothing like yours, so it's a bit confusing. I actually built an entire Linux kernel - not just the one directory you mentioned. Poky/Yocto - 37 minutes Linaro - 48 minutes There is some flex in these numbers as they were on different [brand] SD cards, etc, but I sure did not see the 5 minutes for Linaro vs 24 hours on Yocto that you reported. Perhaps the only thing I did differently was I added the SDK tools to my Yocto system using these meta-packages instead of the list you used. packagegroup-core-sdk packagegroup-core-standalone-sdk-target You might try that to see if it makes any difference. n.b. part of what took me so long to get these results is I was trying to run this test on something closer to your Overo board. I have an older OMAP DM3730 board here that I tried to do these same steps, but it was unstable and I could not get the Linaro based file system to work at all. Very strange. In any case, I think the comparison I did get with the i.MX6 is valid. On Wed, Mar 12, 2014 at 11:44 AM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.commailto: g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-12 10:09, Rick Bianchi wrote: I completely agree with regards to the comparison, but I have compiled the same exact source on the same target (arm) and it only took 5 minutes when running the Linaro image. To clarify, the only difference is the build, one is Linaro (took 5 minutes to compile source on the target) and the other Yocto (took almost 24 hours to compile source on the target). Sorry, I missed that this was on the same hardware. What are you building? I'm going to try and duplicate this here on hardware I have that's quite similar to your Gumstix board. Is there something that I am missing?
Re: [yocto] Losing Ethernet after reboot
If I run, ifup eth0 it bring eth0 with dhcp, and I can the skip the udhcpc eth0. On Tue, Mar 18, 2014 at 10:51 AM, Gary Thomas g...@mlbassoc.com wrote: On 2014-03-18 11:14, Rick Bianchi wrote: 1. Yes, I do have init-ifupdown on the target. 2. No, I have not made any changes to the INITSCRIPT_PARAMS. OK, you must be using an older release/branch as this was recently changed. You can try tracing the bootup to see if/when the networking is started: Make this change reboot. root@everest-p36:~# sed -i s/VERBOSE=no/VERBOSE=very/ /etc/default/rcS This will print a line indicating which init scripts are run, etc. Also, what happens if you try to bring up your network using 'ifup eth0' instead of 'ifconfig eth0 up;udhcpc eth0'? On Tue, Mar 18, 2014 at 10:11 AM, Gary Thomas g...@mlbassoc.commailto: g...@mlbassoc.com wrote: On 2014-03-18 10:58, Rick Bianchi wrote: ls -l /etc/rc*/S*networking only gives me the following: lrwxrwxrwx 1 root root 20 Mar 14 2014 /etc/rcS.d/S40networking - ../init.d/networking Looks like something changed the init scripts settings. These are in the file .../meta/recipes-core/init-ifupdown/init-ifupdown_1.0.bb http://init-ifupdown_1.0.bb: INITSCRIPT_NAME = networking INITSCRIPT_PARAMS = start 01 2 3 4 5 . stop 80 0 6 1 . I presume that you have a init-ifupdown_1.0.bbappend file for your target? Are you changing the INITSCRIPT_PARAMS perhaps? On Tue, Mar 18, 2014 at 9:56 AM, Gary Thomas g...@mlbassoc.commailto: g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-18 10:42, Rick Bianchi wrote: Sorry typing on the fly. Here is what is in interfaces: auto eth0 iface eth0 inet dhcp Are you using systemd or sysvinit? I use sysvinit and have these init script settings that start the network: root@everest-p36:~# ls -l /etc/rc*/S*networking lrwxrwxrwx 1 root root 20 Mar 18 15:58 /etc/rc2.d/S01networking - ../init.d/networking lrwxrwxrwx 1 root root 20 Mar 18 15:58 /etc/rc3.d/S01networking - ../init.d/networking lrwxrwxrwx 1 root root 20 Mar 18 15:58 /etc/rc4.d/S01networking - ../init.d/networking lrwxrwxrwx 1 root root 20 Mar 18 15:58 /etc/rc5.d/S01networking - ../init.d/networking On Tue, Mar 18, 2014 at 9:17 AM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.commailto: g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-18 10:10, Rick Bianchi wrote: I losing Ethernet after every reboot. What is the process to have it come up manually? Image: Dylan gumstix-console I have already added eth0 auto to my /etc/network/interfaces. Shouldn't this line read auto eth0 not the other way around? At the moment I need to run the following after every reboot: ifconfig eth0 up udhcpc eth0 -- Gary Thomas | Consulting for the MLB Associates |Embedded world -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
Re: [yocto] Building on target
On 2014-03-18 12:30, Rick Bianchi wrote: I rebooted the system with the reboot command and then checked the date and time with date, it did not hold the system time and date correctly Sat Jan 1 02:28:44 UTC 2000. There seems to be something very wrong with your startup/shutdown scripts as both this problem and the networking issue are handled by those scripts. Did you try turning on the verbose mode? If so, you should see a line like this during shutdown: INIT: [2014-03-18 17:33:20.978789236] Running /etc/rc6.d/S25save-rtc.sh stop... and another like these on reboot: INIT: [1970-01-01 00:00:05.079166199] Running /etc/rcS.d/S40networking start... INIT: [1970-01-01 00:00:05.103022145] Running /etc/rcS.d/S55bootmisc.sh start... On Tue, Mar 18, 2014 at 10:55 AM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-18 11:49, Rick Bianchi wrote: Should have noted, that the date and time reset on every reboot? Unless you have a battery backed up clock device, e.g. Dallas RTC, this will happen. If you shut your Yocto system down properly, e.g. using '# reboot', it will keep track of when you shut down and then set the clock to that time when you reboot. Without a true RTC, there's little else that it can do unless you run NTP and get the time from some external server. On Tue, Mar 18, 2014 at 10:48 AM, Rick Bianchi bianchirickku...@gmail.com mailto:bianchirickku...@gmail.com mailto:bianchirickku...@gmail.com mailto:bianchirickku...@gmail.com wrote: Gary, I noticed during the make the it was complaining about the date being in the future; I checked and sure thing the date and time were bit off, about 14 years. I set it to the correct time with date --set=18 MARCH 2014 10:32:00 and the build completed in under 10 mins. On Fri, Mar 14, 2014 at 3:16 PM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-14 08:49, Rick Bianchi wrote: If I have time today I will try to reproduce your results. If not, I will get to it first thing next week and post my result. One thing I forgot to point out is I used the identical kernel+modules for both setups. I would be interested to see if that makes any difference for you. I can't fully test it as my board doesn't have a Linaro kernel. So there are four combinations - I only tried the first two: Yocto kernel + Yocto rootfs Yocto kernel + Linaro rootfs Linaro kernel + Yocto rootfs Linaro kernel + Linaro rootfs On Fri, Mar 14, 2014 at 7:38 AM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-12 13:11, Rick Bianchi wrote: usbip from /usr/src/kernel/drivers/staging/usbip I finally managed to make this comparison. I did this by taking my Poky/Yocto built system for a i.MX6 system (ARM Cortex-A9) and replaced the rootfs with one for the Gumstix Overo (linaro). The results were nothing like yours, so it's a bit confusing. I actually built an entire Linux kernel - not just the one directory you mentioned. Poky/Yocto - 37 minutes Linaro - 48 minutes There is some flex in these numbers as they were on different [brand] SD cards, etc, but I sure did not see the 5 minutes for Linaro vs 24 hours on Yocto that you reported. Perhaps the only thing I did differently was I added the SDK tools to my Yocto system using these meta-packages instead of the list you used. packagegroup-core-sdk packagegroup-core-standalone-sdk-target You might try that to see if it makes any difference. n.b. part of what took me so long to get these results is I was trying to run this test on something closer to your Overo board. I have an older OMAP DM3730 board here that I tried to do these same steps, but it was unstable and I could not get the Linaro based file system to work at all. Very strange. In any case, I think the comparison I did get with the i.MX6 is valid. On Wed, Mar 12, 2014 at 11:44 AM, Gary Thomas g...@mlbassoc.com
Re: [yocto] Building on target
I am re-baking the gumstix-console-image; once I have it up and running I will enable verbose mode and check scripts at shutdown. On Tue, Mar 18, 2014 at 11:43 AM, Gary Thomas g...@mlbassoc.com wrote: On 2014-03-18 12:30, Rick Bianchi wrote: I rebooted the system with the reboot command and then checked the date and time with date, it did not hold the system time and date correctly Sat Jan 1 02:28:44 UTC 2000. There seems to be something very wrong with your startup/shutdown scripts as both this problem and the networking issue are handled by those scripts. Did you try turning on the verbose mode? If so, you should see a line like this during shutdown: INIT: [2014-03-18 17:33:20.978789236] Running /etc/rc6.d/S25save-rtc.sh stop... and another like these on reboot: INIT: [1970-01-01 00:00:05.079166199] Running /etc/rcS.d/S40networking start... INIT: [1970-01-01 00:00:05.103022145] Running /etc/rcS.d/S55bootmisc.sh start... On Tue, Mar 18, 2014 at 10:55 AM, Gary Thomas g...@mlbassoc.commailto: g...@mlbassoc.com wrote: On 2014-03-18 11:49, Rick Bianchi wrote: Should have noted, that the date and time reset on every reboot? Unless you have a battery backed up clock device, e.g. Dallas RTC, this will happen. If you shut your Yocto system down properly, e.g. using '# reboot', it will keep track of when you shut down and then set the clock to that time when you reboot. Without a true RTC, there's little else that it can do unless you run NTP and get the time from some external server. On Tue, Mar 18, 2014 at 10:48 AM, Rick Bianchi bianchirickku...@gmail.com mailto:bianchirickku...@gmail.com mailto: bianchirickku...@gmail.com mailto:bianchirickku...@gmail.com wrote: Gary, I noticed during the make the it was complaining about the date being in the future; I checked and sure thing the date and time were bit off, about 14 years. I set it to the correct time with date --set=18 MARCH 2014 10:32:00 and the build completed in under 10 mins. On Fri, Mar 14, 2014 at 3:16 PM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.commailto: g...@mlbassoc.com wrote: On 2014-03-14 08:49, Rick Bianchi wrote: If I have time today I will try to reproduce your results. If not, I will get to it first thing next week and post my result. One thing I forgot to point out is I used the identical kernel+modules for both setups. I would be interested to see if that makes any difference for you. I can't fully test it as my board doesn't have a Linaro kernel. So there are four combinations - I only tried the first two: Yocto kernel + Yocto rootfs Yocto kernel + Linaro rootfs Linaro kernel + Yocto rootfs Linaro kernel + Linaro rootfs On Fri, Mar 14, 2014 at 7:38 AM, Gary Thomas g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.commailto: g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com mailto:g...@mlbassoc.com wrote: On 2014-03-12 13:11, Rick Bianchi wrote: usbip from /usr/src/kernel/drivers/staging/usbip I finally managed to make this comparison. I did this by taking my Poky/Yocto built system for a i.MX6 system (ARM Cortex-A9) and replaced the rootfs with one for the Gumstix Overo (linaro). The results were nothing like yours, so it's a bit confusing. I actually built an entire Linux kernel - not just the one directory you mentioned. Poky/Yocto - 37 minutes Linaro - 48 minutes There is some flex in these numbers as they were on different [brand] SD cards, etc, but I sure did not see the 5 minutes for Linaro vs 24 hours on Yocto that you reported. Perhaps the only thing I did differently was I added the SDK tools to my Yocto system using these meta-packages instead of the list you used. packagegroup-core-sdk packagegroup-core-standalone-sdk-target You might try that to see if it makes any difference. n.b. part of what took me so long to get these results is I was trying to run this test on something closer to your Overo board. I have an older OMAP DM3730 board here that I tried to do these same steps, but it was unstable and I could not get the Linaro based
[yocto] Issues after pulling master - Failed to fetch test data from the network
I started a new build after pulling in the sources from poky/master. Things ended quickly with: ERROR: OE-core's config sanity checker detected a potential misconfiguration. Either fix the cause of this error or at your own risk disable the checker (see sanity.conf). Following is the list of potential problems / advisories: Failed to fetch test data from the network. Please ensure your network is configured correctly. ERROR: Execution of event handler 'check_sanity_eventhandler' faile By default (poky distro conf): CONNECTIVITY_CHECK_URIS= https://eula-downloads.yoctoproject.org/index.php http://bugzilla.yoctoproject.org/report.cgi; It seams like the last guy above responds with 505: # wget http://bugzilla.yoctoproject.org/report.cgi --2014-03-18 21:13:11-- http://bugzilla.yoctoproject.org/report.cgi Resolving bugzilla.yoctoproject.org (bugzilla.yoctoproject.org)... 140.211.169.56 Connecting to bugzilla.yoctoproject.org (bugzilla.yoctoproject.org)|140.211.169.56|:80... connected. HTTP request sent, awaiting response... 302 Moved Temporarily Location: https://bugzilla.yoctoproject.org/report.cgi [following] --2014-03-18 21:13:11-- https://bugzilla.yoctoproject.org/report.cgi Connecting to bugzilla.yoctoproject.org (bugzilla.yoctoproject.org)|140.211.169.56|:443... connected. HTTP request sent, awaiting response... 502 Bad Gateway 2014-03-18 21:13:12 ERROR 502: Bad Gateway. Is this a known issue? -- *Andrei Gherzan* m: +40.744.478.414 | f: +40.31.816.28.12 -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
[yocto] [AUTOBUILDER 1/4] nightly.conf: added package image triggers
Added triggers for nightly-rpm, nightly-deb, nightly-ipk into nightly.conf reference #3140 Signed-off-by: Lynn Cyrin firemagel...@gmail.com --- buildset-config.master/nightly.conf |3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/buildset-config.master/nightly.conf b/buildset-config.master/nightly.conf index 085c25f..0bd68e3 100644 --- a/buildset-config.master/nightly.conf +++ b/buildset-config.master/nightly.conf @@ -78,7 +78,8 @@ steps: [{'SetDest':{}}, 'nightly-multilib': {}, 'nightly-x32': {}, 'nightly-ppc': {}, 'nightly-ppc-lsb': {}, 'nightly-x86-64': {}, 'nightly-x86-64-lsb': {}, - 'nightly-x86': {}, 'nightly-x86-lsb': {}}, + 'nightly-x86': {}, 'nightly-x86-lsb': {}, + 'nightly-rpm': {}, 'nightly-deb': {}, 'nightly-ipk': {}}, 'schedulerNames_nowait' : {'build-appliance': {}, 'eclipse-plugin-kepler': {}, 'eclipse-plugin-juno': {}, 'nightly-non-gpl3': {}, 'nightly-oecore': {}, -- 1.7.9.5 -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
[yocto] [AUTOBUILDER 4/4] nightly-ipk.conf: created conf file
Created configuration file for a ipk package build image Signed-off-by: Lynn Cyrin firemagel...@gmail.com --- buildset-config.master/nightly-ipk.conf | 19 +++ 1 file changed, 19 insertions(+) create mode 100644 buildset-config.master/nightly-ipk.conf diff --git a/buildset-config.master/nightly-ipk.conf b/buildset-config.master/nightly-ipk.conf new file mode 100644 index 000..bf7c613 --- /dev/null +++ b/buildset-config.master/nightly-ipk.conf @@ -0,0 +1,19 @@ +[nightly-ipk] +builders: 'builder1' +repos: [{'poky': +{'repourl':'git://git.yoctoproject.org/poky', + 'layerversion':{'core':'meta', 'yoctobsp':'meta-yocto-bsp'}, + 'branch':'master'}}, +{'meta-qt3': +{'repourl':'git://git.yoctoproject.org/meta-qt3', + 'branch':'master'}}] +steps: [{'SetDest':{}}, +{'CheckOutLayers': {}}, +{'RunPreamble': {}}, +{'GetDistroVersion' : {'distro': 'poky'}}, +{'CreateAutoConf': {'machine': 'qemux86', 'SDKMACHINE' : 'i686', 'distro': 'poky', 'buildhistory' : True, 'packages': 'ipk'}}, +{'CreateBBLayersConf': {'buildprovider' : 'yocto'}}, +{'SyncPersistDB' : {'distro' : 'poky'}}, +{'BuildImages': {'images': 'core-image-sato core-image-sato-dev core-image-sato-sdk core-image-minimal core-image-minimal-dev'}}, +{'RunSanityTests': {'images': 'core-image-minimal core-image-sato core-image-sato-sdk'}}, +{'SyncPersistDB' : {'commit' : True, 'distro':'poky'}}] -- 1.7.9.5 -- ___ yocto mailing list yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/yocto
[linux-yocto] [PATCH 23/57] arm/axxia: Workaround for cross-cluster sev issue
From: Anders Berg anders.b...@lsi.com In revision 1.0 of the AXM55xx device, the events signals across cluster can get lost if multiple CPUs signals an event roughly at the same point in time. This may lead to spin-lock deadlock as other clusters may be sitting in a wfe instruction waiting for a lock to become free. The workaround is to disable the wfe instruction (effectively turning it into a NOP) by setting ACTLR[7]=1. Signed-off-by: Anders Berg anders.b...@lsi.com --- arch/arm/mach-axxia/platsmp.c | 54 ++--- 1 file changed, 45 insertions(+), 9 deletions(-) diff --git a/arch/arm/mach-axxia/platsmp.c b/arch/arm/mach-axxia/platsmp.c index 1922122..75ce9b05 100644 --- a/arch/arm/mach-axxia/platsmp.c +++ b/arch/arm/mach-axxia/platsmp.c @@ -26,8 +26,38 @@ extern void axxia_secondary_startup(void); -#define APB2_SER3_PHY_ADDR0x00201003ULL -#define APB2_SER3_ADDR_SIZE 0x1 +#define SYSCON_PHYS_ADDR 0x00201003ULL + +static int __cpuinitdata wfe_fixup = 0; + +/* + * Check if we need to enable cross-cluster SEV workaround for a bug in + * revision 1.0 silicon (which could cause event signals (from SEV instruction) + * to get lost between clusters). As a workaround, we set the bit 7 in CP15 + * ACTLR (enable WFE as a no-operation) for each core. + */ +static void __init check_fixup_sev(void __iomem *syscon) +{ + u32 pfuse = readl(syscon + 0x34); + u32 chip_type = pfuse 0x1f; + u32 chip_ver = (pfuse 5) 0x3f; + + /* Set flag for secondary cores */ + wfe_fixup = (chip_type == 0 || chip_type == 9) (chip_ver == 0); + pr_info(axxia: Cross-cluster SEV fixup: %s\n, wfe_fixup ? yes:no); +} + +static void __init do_fixup_sev(void) +{ + u32 tmp; + + if (wfe_fixup) { + asm volatile(mrc\tp15, 0, %0, c1, c0, 1 : =r(tmp)); + tmp |= (17); + asm volatile(mcr\tp15, 0, %0, c1, c0, 1 :: r(tmp)); + isb(); + } +} /* * Write pen_release in a way that is guaranteed to be visible to all @@ -46,6 +76,9 @@ static DEFINE_RAW_SPINLOCK(boot_lock); 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, @@ -144,14 +177,17 @@ static __init struct device_node *get_cpu_node(int cpu) static void __init axxia_smp_prepare_cpus(unsigned int max_cpus) { - void __iomem *apb2_ser3_base; + void __iomem *syscon; int cpu_count = 0; int cpu; - apb2_ser3_base = ioremap(APB2_SER3_PHY_ADDR, APB2_SER3_ADDR_SIZE); - if (WARN_ON(!apb2_ser3_base)) + syscon = ioremap(SYSCON_PHYS_ADDR, SZ_64K); + if (WARN_ON(!syscon)) return; + check_fixup_sev(syscon); + do_fixup_sev(); + /* * Initialise the present map, which describes the set of CPUs actually * populated at the present time. @@ -178,10 +214,10 @@ static void __init axxia_smp_prepare_cpus(unsigned int max_cpus) if (!is_hyp_mode_available()) { u32 phys_cpu = cpu_logical_map(cpu); if (phys_cpu != 0) { - u32 tmp = readl(apb2_ser3_base + 0x1010); - writel(0xab, apb2_ser3_base+0x1000); + u32 tmp = readl(syscon + 0x1010); + writel(0xab, syscon + 0x1000); tmp = ~(1 phys_cpu); - writel(tmp, apb2_ser3_base+0x1010); + writel(tmp, syscon + 0x1010); } } @@ -203,7 +239,7 @@ static void __init axxia_smp_prepare_cpus(unsigned int max_cpus) } } - iounmap(apb2_ser3_base); + iounmap(syscon); } struct smp_operations axxia_smp_ops __initdata = { -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 13/57] LSI AXM55xx: Various performance and fixes for rapidio endpoint code.
From: Michael Bringmann michael.bringm...@lsi.com Fix lockup issue processing inbound message descriptor chains. Revise processing code for inbound/outbound message descriptor chains to reduce overhead / improve performance. Signed-off-by: Michael Bringmann michael.bringm...@lsi.com --- drivers/rapidio/devices/lsi/axxia-rio-irq.c | 132 ++- drivers/rapidio/devices/lsi/axxia-rio-irq.h |3 +- drivers/rapidio/devices/lsi/axxia-rio.c |2 +- drivers/rapidio/devices/lsi/axxia-rio.h |1 + drivers/rapidio/rio.c | 10 +- 5 files changed, 100 insertions(+), 48 deletions(-) diff --git a/drivers/rapidio/devices/lsi/axxia-rio-irq.c b/drivers/rapidio/devices/lsi/axxia-rio-irq.c index d32c1c2..b26ed60 100644 --- a/drivers/rapidio/devices/lsi/axxia-rio-irq.c +++ b/drivers/rapidio/devices/lsi/axxia-rio-irq.c @@ -1010,7 +1010,7 @@ static inline int choose_ob_dme( if (len sz) continue; - if (dme-entries = (dme-entries_in_use+1)) { + if (dme-entries (dme-entries_in_use+1)) { (*ob_dme) = dme; (*buf_sz) = sz; return ret + i; @@ -1114,7 +1114,8 @@ static struct rio_msg_dme *alloc_message_engine(struct rio_mport *mport, me-entries_in_use = 0; me-write_idx = 0; me-read_idx = 0; - atomic_set(me-pending, 0); + me-last_invalid_desc = 0; + me-last_compl_idx = 0; me-tx_dme_tmo = 0; me-dme_no = dme_no; @@ -1221,6 +1222,9 @@ static void ob_dme_irq_handler(struct rio_irq_handler *h, u32 state) for (i = 0; i mbox-entries; i++) { struct rio_msg_desc *desc = mbox-desc[i]; + if (mbox-last_compl_idx != desc-desc_no) + continue; + if (!priv-internalDesc) { dw0 = *((u32 *)DESC_TABLE_W0_MEM(mbox, desc-desc_no)); } else { @@ -1240,7 +1244,7 @@ static void ob_dme_irq_handler(struct rio_irq_handler *h, u32 state) } __ob_dme_dw_dbg(priv, dw0); - mbox-entries_in_use--; + mbox-last_compl_idx = (mbox-last_compl_idx + 1) % mbox-entries; /** * UP-call to net device handler @@ -1472,7 +1476,6 @@ static void ib_dme_irq_handler(struct rio_irq_handler *h, u32 state) u32 dw0; int dme_no = 31 - CNTLZW(dme_mask); int num_new; - int nPending; dme_mask ^= (1 dme_no); while (mb-me[letter]-dme_no != dme_no) @@ -1512,7 +1515,7 @@ static void ib_dme_irq_handler(struct rio_irq_handler *h, u32 state) #endif /** * Set Valid flag to 0 on each desc with a new message. -* Flag is reset when the message beloning to the desc +* Flag is reset when the message belonging to the desc * is fetched in get_inb_message(). * HW descriptor update and fetch is in order. */ @@ -1531,6 +1534,7 @@ static void ib_dme_irq_handler(struct rio_irq_handler *h, u32 state) if ((dw0 DME_DESC_DW0_READY_MASK) (dw0 DME_DESC_DW0_VALID)) { +#ifdef OBSOLETE_BZ47185 /* Some chips clear this bit, some don't. ** Make sure in any event. */ if (!priv-internalDesc) { @@ -1542,6 +1546,13 @@ static void ib_dme_irq_handler(struct rio_irq_handler *h, u32 state) DESC_TABLE_W0(desc-desc_no), dw0 ~DME_DESC_DW0_VALID); } +#endif /* OBSOLETE_BZ47185 */ + + if (mport-inb_msg[mbox_no].mcback) + mport-inb_msg[mbox_no].mcback(mport, + me-dev_id, + mbox_no, + desc-desc_no); __ib_dme_dw_dbg(priv, dw0); __ib_dme_event_dbg(priv, dme_no, @@ -1549,7 +1560,6 @@ static void ib_dme_irq_handler(struct rio_irq_handler *h, u32 state) me-write_idx = (me-write_idx + 1) % me-entries; num_new++; - atomic_inc(me-pending); if (num_new == me-entries) break; } @@ -1563,16 +1573,7 @@ static void
[linux-yocto] [PATCH 27/57] dma: lsi-dma32: DMA driver configuration update
From: Anders Berg anders.b...@lsi.com Updating DMA with extra memory Signed-off-by: Anders Berg anders.b...@lsi.com --- arch/arm/boot/dts/axm55xx.dts |6 -- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/arm/boot/dts/axm55xx.dts b/arch/arm/boot/dts/axm55xx.dts index 230a305..fa5b4b5 100644 --- a/arch/arm/boot/dts/axm55xx.dts +++ b/arch/arm/boot/dts/axm55xx.dts @@ -229,7 +229,8 @@ gpdma@202014 { compatible = lsi,dma32; - reg = 0x20 0x2014 0x00 0x1000; + reg = 0x20 0x2014 0x00 0x1000, + 0x20 0x10094000 0x00 0x1000; interrupts = 0 60 4, /* busy */ 0 61 4; /* error */ @@ -244,7 +245,8 @@ gpdma@2020141000 { compatible = lsi,dma32; - reg = 0x20 0x20141000 0x00 0x1000; + reg = 0x20 0x20141000 0x00 0x1000, + 0x20 0x10094000 0x00 0x1000; interrupts = 0 64 4, /* busy */ 0 65 4; /* error */ -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 19/57] LSI AXM55xx: Code syntax: Checkconfig updates to Rapidio bug fixes
--- drivers/rapidio/devices/lsi/axxia-rio-sysfs.c | 16 +++- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/drivers/rapidio/devices/lsi/axxia-rio-sysfs.c b/drivers/rapidio/devices/lsi/axxia-rio-sysfs.c index db47761..88c66b6 100644 --- a/drivers/rapidio/devices/lsi/axxia-rio-sysfs.c +++ b/drivers/rapidio/devices/lsi/axxia-rio-sysfs.c @@ -29,7 +29,7 @@ #ifdef CONFIG_AXXIA_RIO_STAT -static const char *event_str[] = { +static const char const *event_str[] = { TX Port Packet dropped , TX Port Error threshold exceeded , Tx Port Degraded threshold exceeded, @@ -41,7 +41,7 @@ static const char *event_str[] = { RIO_EVENT_NUM }; -static const char *state_str[] = { +static const char const *state_str[] = { TX Port stopped due to retry condition, TX Port stopped due to transmission err, RX Port stopped due to retry condition, @@ -51,7 +51,7 @@ static const char *state_str[] = { RIO_STATE_NUM }; -static const char *irq_str[] = { +static const char const *irq_str[] = { /* Axxia Error Events - really bad! */ Axxia Master Write timouts , Axxia Master Read timouts, @@ -131,7 +131,7 @@ static const char *irq_str[] = { RIO_IRQ_NUM }; -static const char *ib_dme_str[] = { +static const char const *ib_dme_str[] = { Inbound Message descriptors push to net stack, Inbound Message descriptors ok pop by net stack , Inbound Message descriptors err pop by net stack , @@ -143,7 +143,7 @@ static const char *ib_dme_str[] = { RIO_IB_DME_NUM }; -static const char *ob_dme_str[] = { +static const char const *ob_dme_str[] = { Outbound Message descriptors push by net stack , Outbound Message descriptors net push when ring full , Outbound Message descriptors ack to net stack, @@ -711,8 +711,7 @@ retry: stat-desc_done++; for (i = 0; i sz; i++) { if (buf[i] != (i 0xff)) { - pr_err(--- %s --- unexpected data %hhx - returned in byte %d\n, + pr_err(--- %s --- unexpected data %hhx returned in byte %d\n, __func__, buf[i], i); break; } @@ -784,8 +783,7 @@ static ssize_t open_ib_dme(struct device *dev, mbox, bufs[i*bsz]); if (rc) { - pr_err(--- %s --- add inbound buffer -rc %d\n, __func__, rc); + pr_err(--- %s --- add inbound buffer rc %d\n, __func__, rc); rio_release_inb_mbox(mport, mbox); goto err; } -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 22/57] LSI AXM55xx: Checkpatch update 'Move datastream apis'
The changes are code syntax updates pointed out by checkpatch. Signed-off-by: Charlie Paul charlie.p...@windriver.com --- drivers/rapidio/devices/lsi/axxia-rio-ds.c | 92 ++-- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/drivers/rapidio/devices/lsi/axxia-rio-ds.c b/drivers/rapidio/devices/lsi/axxia-rio-ds.c index becca47..57ae565 100755 --- a/drivers/rapidio/devices/lsi/axxia-rio-ds.c +++ b/drivers/rapidio/devices/lsi/axxia-rio-ds.c @@ -233,7 +233,7 @@ EXPORT_SYMBOL(axxia_data_stream_global_cfg); * Returns %0 on success / int axxia_open_ob_data_stream( - struct rio_mport*mport, + struct rio_mport*mport, void*dev_id, int dse_id, int num_header_entries, @@ -271,8 +271,8 @@ EXPORT_SYMBOL(axxia_open_ob_data_stream); * Returns %0 on success / int open_ob_data_stream( - struct rio_mport*mport, - void*dev_id, + struct rio_mport*mport, + void*dev_id, int dse_id, int num_header_entries, int num_data_entries) @@ -429,24 +429,24 @@ int open_ob_data_stream( * @mport: Pointer to the master port * @dest_id: Destination ID of the data stream * @stream_id: Data stream ID - * @cos: Class of service of the stream + * @cos: Class of service of the stream * @priority: Priority of the data stream * @is_hdr_desc: Indicate if the descriptor a header descriptor * or data descriptor * @buffer:Pointer to where the data is stored - * @data_len: Data buffer length associated with the descriptor + * @data_len: Data buffer length associated with the descriptor * * Returns %0 on success / int axxia_add_ob_data_stream( struct rio_mport*mport, - int dest_id, - int stream_id, - int cos, + int dest_id, + int stream_id, + int cos, int priority, int is_hdr_desc, - void*buffer, - int data_len) + void*buffer, + int data_len) { struct rio_priv *priv = mport-priv; struct axxia_rio_ds_priv *ptr_ds_priv; @@ -753,7 +753,7 @@ void ob_dse_irq_handler(struct rio_irq_handler *h, u32 state) * Returns %0 on success / int axxia_close_ob_data_stream( - struct rio_mport*mport, + struct rio_mport*mport, int dse_id) { struct rio_priv *priv = mport-priv; @@ -831,7 +831,7 @@ EXPORT_SYMBOL(axxia_close_ob_data_stream); * larger than or equal to the expected PDU. * * @mport: Pointer to the master port - * @source_id: Source ID of the data stream + * @source_id: Source ID of the data stream * @cos: Class of service of the stream * @desc_dbuf_size: Data buffer size the descriptor can handle * @num_entries: Number of descriptors in this descriptor chain @@ -839,10 +839,10 @@ EXPORT_SYMBOL(axxia_close_ob_data_stream); * Returns %0 on success / int axxia_open_ib_data_stream( - struct rio_mport*mport, + struct rio_mport*mport, void*dev_id, int source_id, - int cos, + int cos, int desc_dbuf_size, int num_entries) { @@ -870,7 +870,7 @@ EXPORT_SYMBOL(axxia_open_ib_data_stream); * It is called by axxia_open_ib_data_stream( ). * * @mport: Pointer to the master port - * @source_id: Source ID of the data stream + * @source_id: Source ID of the data stream * @cos: Class of service of the stream * @desc_dbuf_size: Data buffer size the descriptor can handle * @num_entries: Number of descriptors in this descriptor chain @@ -878,10 +878,10 @@ EXPORT_SYMBOL(axxia_open_ib_data_stream); * Returns %0 on success / int open_ib_data_stream( - struct rio_mport*mport, + struct rio_mport*mport, void
[linux-yocto] [PATCH 21/57] LSI AXM55xx: Move datastream APIs and symbols to public header file.
From: Michael Bringmann michael.bringm...@lsi.com Signed-off-by: Michael Bringmann michael.bringm...@lsi.com --- drivers/rapidio/devices/lsi/axxia-rio-ds.c | 548 +++- drivers/rapidio/devices/lsi/axxia-rio-ds.h | 327 + drivers/rapidio/devices/lsi/axxia-rio.c|8 +- drivers/rapidio/devices/lsi/axxia-rio.h|3 +- include/linux/rio-axxia.h | 322 5 files changed, 637 insertions(+), 571 deletions(-) create mode 100644 include/linux/rio-axxia.h diff --git a/drivers/rapidio/devices/lsi/axxia-rio-ds.c b/drivers/rapidio/devices/lsi/axxia-rio-ds.c index e9825da..becca47 100755 --- a/drivers/rapidio/devices/lsi/axxia-rio-ds.c +++ b/drivers/rapidio/devices/lsi/axxia-rio-ds.c @@ -44,24 +44,23 @@ /* #define ALLOC_BUF_BY_KERNEL 1 */ static inline void __ib_virt_m_dbg( - struct rio_ds_ibds_vsid_m_stats *ptr_ib_stats, + struct axxia_rio_ds_ibds_vsid_m_stats *ptr_ib_stats, u32 virt_m_stat); static inline void __ob_dse_dbg( - struct rio_ds_obds_dse_stats *ptr_ob_stats, + struct axxia_rio_ds_obds_dse_stats *ptr_ob_stats, u32 dse_stat); static inline void __ob_dse_dw_dbg( - struct rio_ds_obds_dse_stats *ptr_ob_stats, + struct axxia_rio_ds_obds_dse_stats *ptr_ob_stats, u32 dw0); static inline void __ib_dse_dw_dbg( - struct rio_ds_ibds_vsid_m_stats *ptr_ib_stats, + struct axxia_rio_ds_ibds_vsid_m_stats *ptr_ib_stats, u32 dw0); - static inline void __ib_virt_m_dbg( - struct rio_ds_ibds_vsid_m_stats *ptr_ib_stats, + struct axxia_rio_ds_ibds_vsid_m_stats *ptr_ib_stats, u32 virt_m_stat) { if (virt_m_stat IB_VIRT_M_STAT_ERROR_MASK) { @@ -92,7 +91,7 @@ static inline void __ib_virt_m_dbg( } static inline void __ob_dse_dbg( - struct rio_ds_obds_dse_stats *ptr_ob_stats, + struct axxia_rio_ds_obds_dse_stats *ptr_ob_stats, u32 dse_stat) { if (dse_stat OB_DSE_STAT_ERROR_MASK) { @@ -111,7 +110,7 @@ static inline void __ob_dse_dbg( } static inline void __ob_dse_dw_dbg( - struct rio_ds_obds_dse_stats *ptr_ob_stats, + struct axxia_rio_ds_obds_dse_stats *ptr_ob_stats, u32 dw0) { if (dw0 OB_DSE_DESC_ERROR_MASK) { @@ -123,7 +122,7 @@ static inline void __ob_dse_dw_dbg( } static inline void __ib_dse_dw_dbg( - struct rio_ds_ibds_vsid_m_stats *ptr_ib_stats, + struct axxia_rio_ds_ibds_vsid_m_stats *ptr_ib_stats, u32 dw0) { if (dw0 IB_DSE_DESC_ERROR_MASK) { @@ -154,16 +153,16 @@ static inline void __ib_dse_dw_dbg( * Returns %0 on success / int axxia_data_stream_global_cfg( - struct rio_mport*mport, + struct rio_mport *mport, int mtu, int ibds_avsid_mapping) { - struct rio_priv *priv = mport-priv; - struct rio_ds_priv *ptr_ds_priv = (priv-ds_priv_data); - struct ibds_virt_m_cfg *ptr_virt_m_cfg; - struct rio_obds_dse_cfg *ptr_dse_cfg; - int reg_val; - u32 mtu_value = 0; + struct rio_priv*priv = mport-priv; + struct axxia_rio_ds_cfg *ptr_ds_cfg = (priv-ds_cfg_data); + struct axxia_ibds_virt_m_cfg *ptr_virt_m_cfg; + struct axxia_rio_obds_dse_cfg *ptr_dse_cfg; + int reg_val; + u32 mtu_value = 0; int i; /* sanity check */ @@ -176,13 +175,13 @@ int axxia_data_stream_global_cfg( ** IBDS ALIAS M is used. */ for (i = 0; i RIO_MAX_NUM_IBDS_VSID_M; i++) { - ptr_virt_m_cfg = (ptr_ds_priv-ibds_vsid_m_cfg[i]); + ptr_virt_m_cfg = (ptr_ds_cfg-ibds_vsid_m_cfg[i]); if (ptr_virt_m_cfg-in_use == RIO_DS_TRUE) return -EINVAL; } for (i = 0; i RIO_MAX_NUM_OBDS_DSE; i++) { - ptr_dse_cfg = (ptr_ds_priv-obds_dse_cfg[i]); + ptr_dse_cfg = (ptr_ds_cfg-obds_dse_cfg[i]); if (ptr_dse_cfg-in_use == RIO_DS_TRUE) return -EINVAL; } @@ -203,8 +202,8 @@ int axxia_data_stream_global_cfg( __rio_local_write_config_32(mport, RAB_IBDS_VSID_ALIAS, reg_val); /* save information in the system */ - ptr_ds_priv-mtu = mtu; - ptr_ds_priv-ibds_avsid_mapping = ibds_avsid_mapping; + ptr_ds_cfg-mtu = mtu; + ptr_ds_cfg-ibds_avsid_mapping = ibds_avsid_mapping; return 0; } @@ -279,19 +278,20 @@ int open_ob_data_stream( int num_data_entries) { struct rio_priv *priv = mport-priv; - struct rio_ds_priv *ptr_ds_priv = (priv-ds_priv_data); - struct rio_obds_dse_cfg *ptr_dse_cfg; - u32 temp; - void*ptr; + struct axxia_rio_ds_priv *ptr_ds_priv = (priv-ds_priv_data); +
[linux-yocto] [PATCH 30/57] LSI FEMAC: Chechpatch updates to 'Ethernet Driver'
These changes were made to satisfy checkpatch output. Signed-off-by: Charlie Paul charlie.p...@windriver.com --- drivers/net/ethernet/lsi/lsi_acp_net.c |5 ++--- drivers/net/ethernet/lsi/lsi_acp_net.h |2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/lsi/lsi_acp_net.c b/drivers/net/ethernet/lsi/lsi_acp_net.c index 80154ef..78b7e79 100644 --- a/drivers/net/ethernet/lsi/lsi_acp_net.c +++ b/drivers/net/ethernet/lsi/lsi_acp_net.c @@ -1757,9 +1757,8 @@ static int appnic_probe_config_dt(struct net_device *dev, pdata-phy_link_speed = 0; pdata-phy_link_duplex = 0; } else { - pr_err(Invalid phy-link value \%s\ - in DTS. Defaulting to \auto\.\n, - macspeed); + pr_err(Invalid phy-link value \%s\ in DTS. Defaulting to \auto\.\n, + macspeed); pdata-phy_link_auto = 1; } } else { diff --git a/drivers/net/ethernet/lsi/lsi_acp_net.h b/drivers/net/ethernet/lsi/lsi_acp_net.h index 867a4f1..c1f4311 100644 --- a/drivers/net/ethernet/lsi/lsi_acp_net.h +++ b/drivers/net/ethernet/lsi/lsi_acp_net.h @@ -357,7 +357,7 @@ struct appnic_device { do {\ (tx_configuration) = ~APPNIC_TX_CONF_IFG; \ (tx_configuration) |= ((ifg 0x1f) 4); \ - } while (0); + } while (0) /* Transmit Time Value Configuration */ -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 26/57] Revert LSI AXM55XX: Disable use of wfe/sev in arch spinlock
From: Anders Berg anders.b...@lsi.com This reverts commit ae0c53fc61475c63150beb6cddf8ef343b3903e1. Signed-off-by: Anders Berg anders.b...@lsi.com --- arch/arm/include/asm/spinlock.h |6 -- 1 file changed, 6 deletions(-) diff --git a/arch/arm/include/asm/spinlock.h b/arch/arm/include/asm/spinlock.h index 0c01e62..dd64cc6 100644 --- a/arch/arm/include/asm/spinlock.h +++ b/arch/arm/include/asm/spinlock.h @@ -37,10 +37,6 @@ \ nop.w \ ) -#elif defined(CONFIG_ARCH_AXXIA) -/* Disable use of wfe/sev in Axxia. */ -#define SEV -#define WFE(cond) #else #define SEVALT_SMP(sev, nop) #define WFE(cond) ALT_SMP(wfe cond, nop) @@ -92,9 +88,7 @@ static inline void arch_spin_lock(arch_spinlock_t *lock) : cc); while (lockval.tickets.next != lockval.tickets.owner) { -#if !defined(CONFIG_ARCH_AXXIA) wfe(); -#endif lockval.tickets.owner = ACCESS_ONCE(lock-tickets.owner); } -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 31/57] arm/axxia: improved robustness for DDR retention
From: Gary McGee gary.mc...@lsi.com Signed-off-by: Gary McGee gary.mc...@lsi.com --- arch/arm/mach-axxia/Makefile|2 +- arch/arm/mach-axxia/ddr_retention.c | 96 -- arch/arm/mach-axxia/ddr_shutdown.c | 331 +++ 3 files changed, 365 insertions(+), 64 deletions(-) create mode 100644 arch/arm/mach-axxia/ddr_shutdown.c diff --git a/arch/arm/mach-axxia/Makefile b/arch/arm/mach-axxia/Makefile index 4d41b15..b4b8dd2 100644 --- a/arch/arm/mach-axxia/Makefile +++ b/arch/arm/mach-axxia/Makefile @@ -7,7 +7,7 @@ obj-y += io.o obj-y += ncr.o obj-y += timers.o obj-y += pci.o -obj-y += ddr_retention.o +obj-y += ddr_retention.o ddr_shutdown.o obj-$(CONFIG_I2C) += i2c.o obj-$(CONFIG_SMP) += platsmp.o headsmp.o obj-$(CONFIG_ARCH_AXXIA_GIC) += axxia-gic.o diff --git a/arch/arm/mach-axxia/ddr_retention.c b/arch/arm/mach-axxia/ddr_retention.c index bcedf33..35dbfcb 100644 --- a/arch/arm/mach-axxia/ddr_retention.c +++ b/arch/arm/mach-axxia/ddr_retention.c @@ -36,7 +36,6 @@ static void __iomem *nca; static void __iomem *apb; static void __iomem *dickens; -static void __iomem *femac; static int ddr_retention_enabled; enum { @@ -229,60 +228,33 @@ static inline void cpu_disable_l2_prefetch(void) } static inline void -ncp_ddr_shutdown(unsigned long ctl_244) +reset_elm_trace(void) { - unsigned long value; - - cpu_disable_l2_prefetch(); - - /* -* put SDRAM in self-refresh mode -*/ - ncr_write(NCP_REGION_ID(34, 0), 0x3d0, 4, ctl_244); - ncr_write(NCP_REGION_ID(15, 0), 0x3d0, 4, ctl_244); - - /* check interrupt status for completion */ - /* CDR1 - word offset 0x104 (byte offset 0x410) */ - do { - ncr_read(NCP_REGION_ID(34, 0), 0x410, 4, value); - } while ((value 0x0200) == 0); + /* reset and disable ELM trace */ + ncr_register_write(htonl(0x000fff04), (unsigned *) (apb + 0x68000)); + ncr_register_write(htonl(0x000fff04), (unsigned *) (apb + 0x78000)); - do { - ncr_read(NCP_REGION_ID(15, 0), 0x410, 4, value); - } while ((value 0x0200) == 0); - - /* -Indicate DDR Retention Reset -*/ - - /* set bit 0 of persist_scratch */ - writel_relaxed(0x0001, apb + 0x300dc); + /* reset ELM statistics */ + ncr_register_write(htonl(0x1), (unsigned *) (apb + 0x60230)); + ncr_register_write(htonl(0x1), (unsigned *) (apb + 0x70230)); - /* -* Issue Chip Reset -*/ + /* enable ELM trace */ + ncr_register_write(htonl(0x000fff01), (unsigned *) (apb + 0x68000)); + ncr_register_write(htonl(0x000fff01), (unsigned *) (apb + 0x78000)); +} - /* Intrnl Boot, 0x Target */ - writel_relaxed(0x0040, apb + 0x31004); - /* Set ResetReadDone */ - writel_relaxed(0x8000, apb + 0x3180c); - /* Chip Reset */ - writel_relaxed(0x00080802, apb + 0x31008); - wfi(); - while (1) - ; - __asm__ __volatile__(nop\n\t); +extern void ncp_ddr_shutdown(void *, void *, unsigned long ); - return; -} void initiate_retention_reset(void) { unsigned long ctl_244 = 0; unsigned long value; - unsigned cpu_id; + unsigned cpu_id ; + volatile long tmp; + volatile long *ptmp; if (0 == ddr_retention_enabled) { pr_info(DDR Retention Reset is Not Enabled\n); @@ -292,19 +264,17 @@ initiate_retention_reset(void) if (NULL == nca || NULL == apb || NULL == dickens) BUG(); - /* kill the femac */ - writel(0x8000, (femac+0x2000)); - value = readl(femac + 0x2000); - preempt_disable(); cpu_id = smp_processor_id(); - udelay(1000); + /* send stop message to other CPUs */ local_irq_disable(); + local_fiq_disable(); asm volatile (dsb : : : memory); asm volatile (dmb : : : memory); system_state = SYSTEM_RESTART; smp_send_stop(); + udelay(1000); flush_cache_all(); flush_l3(); @@ -314,11 +284,6 @@ initiate_retention_reset(void) quiesce_vp_engine(AXXIA_ENGINE_CNAL); - /* disable sysmem interrupts */ - value = 0; - ncr_write(NCP_REGION_ID(34, 0), 0x414, 4, value); - ncr_write(NCP_REGION_ID(15, 0), 0x414, 4, value); - /* unlock reset register for later */ writel(0x00ab, apb + 0x31000); /* Access Key */ @@ -327,21 +292,27 @@ initiate_retention_reset(void) ncr_read(NCP_REGION_ID(34, 0), 0x3d0, 4, ctl_244); ctl_244 |= 0x000a; - - /* put secondary CPUs into reset */ + /* belts
[linux-yocto] [PATCH 28/57] dma: lsi-dma32: Cleanup DMA driver
From: Anders Berg anders.b...@lsi.com Use the devm_* helpers to avoid messy error recovery and make use of the virt-dma interface to avoid duplicated code. Signed-off-by: Anders Berg anders.b...@lsi.com --- drivers/dma/Kconfig |1 + drivers/dma/lsi-dma32.c | 527 --- drivers/dma/lsi-dma32.h | 41 ++-- 3 files changed, 200 insertions(+), 369 deletions(-) diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig index 2ad1215..03eb991 100644 --- a/drivers/dma/Kconfig +++ b/drivers/dma/Kconfig @@ -91,6 +91,7 @@ config AT_HDMAC config LSI_DMA tristate LSI General Purpose DMA support select DMA_ENGINE + select DMA_VIRTUAL_CHANNELS select ASYNC_TX_ENABLE_CHANNEL_SWITCH help Enable support for the LSI General Purpose DMA controller found diff --git a/drivers/dma/lsi-dma32.c b/drivers/dma/lsi-dma32.c index b16df68..0c679bf 100644 --- a/drivers/dma/lsi-dma32.c +++ b/drivers/dma/lsi-dma32.c @@ -23,10 +23,10 @@ #include linux/stat.h #include linux/module.h #include linux/init.h -#include linux/kref.h #include linux/mm.h #include linux/interrupt.h #include linux/slab.h +#include linux/io.h #include linux/platform_device.h #include linux/of_platform.h #include linux/of_address.h @@ -36,11 +36,9 @@ #include asm/page.h #include linux/bitops.h #include linux/atomic.h +#include virt-dma.h #include lsi-dma32.h -#define rd32(_addr) readl((_addr)) -#define wr32(_value, _addr) writel((_value), (_addr)) - #ifdef DEBUG #define engine_dbg(engine, fmt, ...) \ do { \ @@ -54,7 +52,7 @@ struct gpdma_channel *_c = dmac; \ (void)_c; \ pr_debug(dma0ch%d: [%s] fmt, \ - dmac-channel, __func__, ##__VA_ARGS__); \ + dmac-id, __func__, ##__VA_ARGS__); \ } while (0) #else #define engine_dbg(engine, fmt, ...) do {} while (0) @@ -62,29 +60,26 @@ #endif -static dma_cookie_t gpdma_tx_submit(struct dma_async_tx_descriptor *txd); - - static void reset_channel(struct gpdma_channel *dmac) { const int WAIT = 1024; int i; /* Pause channel */ - wr32(DMA_STATUS_CH_PAUS_WR_EN | DMA_STATUS_CH_PAUSE, + writel(DMA_STATUS_CH_PAUS_WR_EN | DMA_STATUS_CH_PAUSE, dmac-base+DMA_STATUS); wmb(); /* Disable channel */ - wr32(0, dmac-base+DMA_CHANNEL_CONFIG); - for (i = 0; rd32(dmac-base+DMA_CHANNEL_CONFIG) i WAIT; i++) + writel(0, dmac-base+DMA_CHANNEL_CONFIG); + for (i = 0; readl(dmac-base+DMA_CHANNEL_CONFIG) i WAIT; i++) cpu_relax(); if (i == WAIT) ch_dbg(dmac, Failed to DISABLE channel\n); /* Clear FIFO */ - wr32(DMA_CONFIG_CLEAR_FIFO, dmac-base+DMA_CHANNEL_CONFIG); - for (i = 0; rd32(dmac-base+DMA_CHANNEL_CONFIG) i WAIT; i++) + writel(DMA_CONFIG_CLEAR_FIFO, dmac-base+DMA_CHANNEL_CONFIG); + for (i = 0; readl(dmac-base+DMA_CHANNEL_CONFIG) i WAIT; i++) cpu_relax(); if (i == WAIT) ch_dbg(dmac, Failed to clear FIFO\n); @@ -100,7 +95,7 @@ static void soft_reset(struct gpdma_engine *engine) reset_channel(engine-channel[i]); /* Reset GPDMA by writing Magic Number to reset reg */ - wr32(GPDMA_MAGIC, engine-gbase + SOFT_RESET); + writel(GPDMA_MAGIC, engine-gbase + SOFT_RESET); wmb(); cfg = (engine-pool.phys 0xfff0) | GEN_CONFIG_EXT_MEM; @@ -110,7 +105,7 @@ static void soft_reset(struct gpdma_engine *engine) cfg |= GEN_CONFIG_INT_EDGE(i); engine_dbg(engine, Using edge-triggered interrupts\n); } - wr32(cfg, engine-gbase + GEN_CONFIG); + writel(cfg, engine-gbase + GEN_CONFIG); engine_dbg(engine, engine-desc.phys 0xfff0 == %llx\n, (engine-pool.phys 0xfff0)); @@ -164,28 +159,30 @@ static struct gpdma_desc *get_descriptor(struct gpdma_engine *engine) unsigned long flags; struct gpdma_desc *desc = NULL; - raw_spin_lock_irqsave(engine-lock, flags); + spin_lock_irqsave(engine-lock, flags); if (engine-pool.next GPDMA_MAX_DESCRIPTORS) desc = engine-pool.free[engine-pool.next++]; - raw_spin_unlock_irqrestore(engine-lock, flags); + spin_unlock_irqrestore(engine-lock, flags); + desc-engine = engine; return desc; } -static void -free_descriptor(struct gpdma_engine *engine, struct gpdma_desc *desc) +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; - raw_spin_lock_irqsave(engine-lock, flags); + spin_lock_irqsave(engine-lock, flags); BUG_ON(engine-pool.next == 0); engine-pool.free[--engine-pool.next] = desc; -
[linux-yocto] [PATCH 32/57] arm/mach-axxia: Checkpatch update to 'improved robustness for DDR'
--- arch/arm/mach-axxia/ddr_retention.c |6 +- arch/arm/mach-axxia/ddr_shutdown.c | 271 ++- 2 files changed, 139 insertions(+), 138 deletions(-) diff --git a/arch/arm/mach-axxia/ddr_retention.c b/arch/arm/mach-axxia/ddr_retention.c index 35dbfcb..7dab78f 100644 --- a/arch/arm/mach-axxia/ddr_retention.c +++ b/arch/arm/mach-axxia/ddr_retention.c @@ -244,7 +244,7 @@ reset_elm_trace(void) } -extern void ncp_ddr_shutdown(void *, void *, unsigned long ); +extern void ncp_ddr_shutdown(void *, void *, unsigned long); void @@ -252,7 +252,7 @@ initiate_retention_reset(void) { unsigned long ctl_244 = 0; unsigned long value; - unsigned cpu_id ; + unsigned cpu_id; volatile long tmp; volatile long *ptmp; @@ -301,7 +301,7 @@ initiate_retention_reset(void) ptmp = (long *) ncp_ddr_shutdown; do { tmp += *ptmp++; - } while (ptmp (long*) (ncp_ddr_shutdown + 0x1000)); + } while (ptmp (long *) (ncp_ddr_shutdown + 0x1000)); asm volatile (isb : : : memory); diff --git a/arch/arm/mach-axxia/ddr_shutdown.c b/arch/arm/mach-axxia/ddr_shutdown.c index 6c6c3bb..33b889a 100644 --- a/arch/arm/mach-axxia/ddr_shutdown.c +++ b/arch/arm/mach-axxia/ddr_shutdown.c @@ -8,14 +8,14 @@ * of the normal barrier. */ #define pvt_ioread32be(p) ({ unsigned int __v = be32_to_cpu((__force __be32)__raw_readl(p)); dsb(); __v; }) -#define pvt_iowrite32be(v,p) ({ dsb(); __raw_writel((__force __u32)cpu_to_be32(v), p); }) +#define pvt_iowrite32be(v, p) ({ dsb(); __raw_writel((__force __u32)cpu_to_be32(v), p); }) #define pvt_ioread32(p) ({ unsigned int __v = (__raw_readl(p)); dsb(); __v; }) -#define pvt_iowrite32(v,p) ({ dsb(); __raw_writel((__force __u32)(v), p); }) +#define pvt_iowrite32(v, p) ({ dsb(); __raw_writel((__force __u32)(v), p); }) /* #define DDR_SHUTDOWN_DEBUG */ #ifdef DDR_SHUTDOWN_DEBUG -#define dbg_write(v, p) pvt_iowrite32be(v,p) +#define dbg_write(v, p) pvt_iowrite32be(v, p) #else #define dbg_write(v, p) #endif @@ -179,7 +179,7 @@ void ncp_ddr_shutdown(void *nca, void *apb, unsigned long ctl_244) pvt_iowrite32(0x0001, apb + 0x300dc); dbg_write(0x0006, (unsigned *)(nca + 0x1200)); - do_reset: +do_reset: /* * Issue Chip reset */ @@ -190,72 +190,73 @@ void ncp_ddr_shutdown(void *nca, void *apb, unsigned long ctl_244) /* Chip Reset */ pvt_iowrite32(0x00080802, apb + 0x31008); - while(1); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__ __volatile__( nop \n\t); - __asm__
[linux-yocto] [PATCH 38/57] arm/axxia: GPIO driver for SPI chip selects
From: Anders Berg anders.b...@lsi.com Add gpiochip driver for the 5 chip select signals provided by the SSP block. This makes it possible to use the device tree for all SPI configuration, instead of having it in the platform specific code. Signed-off-by: Anders Berg anders.b...@lsi.com --- arch/arm/mach-axxia/Makefile |1 + arch/arm/mach-axxia/axxia.c| 62 --- arch/arm/mach-axxia/clock.c|2 +- arch/arm/mach-axxia/ssp-gpio.c | 132 4 files changed, 134 insertions(+), 63 deletions(-) create mode 100644 arch/arm/mach-axxia/ssp-gpio.c diff --git a/arch/arm/mach-axxia/Makefile b/arch/arm/mach-axxia/Makefile index b4b8dd2..ae75ac7 100644 --- a/arch/arm/mach-axxia/Makefile +++ b/arch/arm/mach-axxia/Makefile @@ -4,6 +4,7 @@ obj-y += axxia.o obj-y += clock.o obj-y += io.o +obj-y += ssp-gpio.o obj-y += ncr.o obj-y += timers.o obj-y += pci.o diff --git a/arch/arm/mach-axxia/axxia.c b/arch/arm/mach-axxia/axxia.c index dcb6305..d73e11b 100644 --- a/arch/arm/mach-axxia/axxia.c +++ b/arch/arm/mach-axxia/axxia.c @@ -34,7 +34,6 @@ #include linux/init.h #include linux/delay.h #include linux/smsc911x.h -#include linux/spi/spi.h #include linux/clk-provider.h #include linux/clkdev.h #ifdef CONFIG_ARM_ARCH_TIMER @@ -62,8 +61,6 @@ static const char *axxia_dt_match[] __initconst = { NULL }; -static void __iomem *ssp_base; - static struct map_desc axxia_static_mappings[] __initdata = { #ifdef CONFIG_DEBUG_LL { @@ -151,17 +148,9 @@ struct pl061_platform_data gpio1_plat_data = { .values = 0 /* startup values */ }; -static struct pl022_ssp_controller ssp_plat_data = { - .bus_id = 0, - .num_chipselect = 5, - .enable_dma = 0 -}; - static struct of_dev_auxdata axxia_auxdata_lookup[] __initdata = { OF_DEV_AUXDATA(arm,primecell, 0x20101EULL, mmci, mmc_plat_data), - OF_DEV_AUXDATA(arm,primecell, 0x2010088000ULL, - ssp, ssp_plat_data), OF_DEV_AUXDATA(arm,primecell, 0x2010092000ULL, gpio0, gpio0_plat_data), OF_DEV_AUXDATA(arm,primecell, 0x2010093000ULL, @@ -220,49 +209,6 @@ static struct platform_device pmu_device = { .dev.platform_data = axxia_pmu_platdata, }; -static inline void -spidev_chip_select(u32 control, unsigned n) -{ - if (control == SSP_CHIP_SELECT) - writel(~(1n) 0x1F, ssp_base + 0x30); - else - writel(0x1F, ssp_base + 0x30); -} - -static void spi_cs_eeprom0(u32 control) { spidev_chip_select(control, 0); } -static void spi_cs_eeprom1(u32 control) { spidev_chip_select(control, 1); } - -struct pl022_config_chip spi_eeprom0 = { - .iface = SSP_INTERFACE_MOTOROLA_SPI, - .com_mode = POLLING_TRANSFER, - .cs_control = spi_cs_eeprom0 -}; - -struct pl022_config_chip spi_eeprom1 = { - .iface = SSP_INTERFACE_MOTOROLA_SPI, - .com_mode = POLLING_TRANSFER, - .cs_control = spi_cs_eeprom1 -}; - -static struct spi_board_info spi_devs[] __initdata = { - { - .modalias = s25fl129p1, - .controller_data= spi_eeprom0, - .bus_num= 0, - .chip_select= 0, - .max_speed_hz = 2500, - .mode = SPI_MODE_0, - }, - { - .modalias = s25fl129p1, - .controller_data= spi_eeprom1, - .bus_num= 0, - .chip_select= 1, - .max_speed_hz = 2500, - .mode = SPI_MODE_0, - } -}; - static int axxia_bus_notifier(struct notifier_block *nb, unsigned long event, void *obj) { @@ -299,14 +245,6 @@ void __init axxia_dt_init(void) ncr_init(); axxia_ddr_retention_init(); - spi_register_board_info(spi_devs, ARRAY_SIZE(spi_devs)); - - /* -* Setup PL022 to handle chip-select signal automatically -*/ - ssp_base = of_iomap(of_find_compatible_node(NULL, NULL, arm,pl022), - 0); - axxia_pcie_init(); platform_device_register(pmu_device); diff --git a/arch/arm/mach-axxia/clock.c b/arch/arm/mach-axxia/clock.c index c8c28cf..6295795 100644 --- a/arch/arm/mach-axxia/clock.c +++ b/arch/arm/mach-axxia/clock.c @@ -88,7 +88,7 @@ axxia_init_clocks(int is_sim) clk_register_clkdev(clk[clk_per], NULL, 2010083000.uart); /* PL022 SSP */ - clk_register_clkdev(clk[clk_per], NULL, ssp); + clk_register_clkdev(clk[clk_per], NULL,
[linux-yocto] [PATCH 42/57] i2c-axxia: Use managed functions devm_*
From: Anders Berg anders.b...@lsi.com Use the devm_ functions for resource allocation to simplify error handling. Signed-off-by: Anders Berg anders.b...@lsi.com --- drivers/i2c/busses/i2c-axxia.c | 98 +++- 1 file changed, 36 insertions(+), 62 deletions(-) diff --git a/drivers/i2c/busses/i2c-axxia.c b/drivers/i2c/busses/i2c-axxia.c index 8cc972d..c2b84a4 100644 --- a/drivers/i2c/busses/i2c-axxia.c +++ b/drivers/i2c/busses/i2c-axxia.c @@ -116,12 +116,8 @@ struct axxia_i2c_dev { struct i2c_adapter adapter; /* clock reference for i2c input clock */ struct clk *i2c_clk; - /* ioremapped registers cookie */ - void __iomem *base; /* pointer to register struct */ struct i2c_regs __iomem *regs; - /* irq number */ - int irq; /* xfer completion object */ struct completion msg_complete; /* pointer to current message */ @@ -488,11 +484,11 @@ axxia_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[], int num) static u32 axxia_i2c_func(struct i2c_adapter *adap) { - return I2C_FUNC_I2C | + u32 caps = (I2C_FUNC_I2C | I2C_FUNC_10BIT_ADDR | I2C_FUNC_SMBUS_EMUL | - I2C_FUNC_SMBUS_BLOCK_DATA; - + I2C_FUNC_SMBUS_BLOCK_DATA); + return caps; } static const struct i2c_algorithm axxia_i2c_algo = { @@ -505,49 +501,42 @@ axxia_i2c_probe(struct platform_device *pdev) { struct device_node *np = pdev-dev.of_node; struct axxia_i2c_dev *idev = NULL; - struct clk *i2c_clk = NULL; - void __iomem *base = NULL; - u32 bus = pdev-id; - int irq = 0; + struct resource *res; + void __iomem *base; + int irq; int ret = 0; - base = of_iomap(np, 0); - if (!base) { - dev_err(pdev-dev, failed to iomap registers\n); - ret = -ENOMEM; - goto err_cleanup; - } + idev = devm_kzalloc(pdev-dev, sizeof(*idev), GFP_KERNEL); + if (!idev) + return -ENOMEM; - irq = irq_of_parse_and_map(np, 0); - if (irq == 0) { - dev_err(pdev-dev, no irq property\n); - ret = -EINVAL; - goto err_cleanup; + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); + if (!res) { + dev_err(pdev-dev, can't get device io-resource\n); + return -ENOENT; } - i2c_clk = clk_get(pdev-dev, i2c); - if (IS_ERR(i2c_clk)) { - dev_err(pdev-dev, missing bus clock); - ret = PTR_ERR(i2c_clk); - goto err_cleanup; + irq = platform_get_irq(pdev, 0); + if (irq 0) { + dev_err(pdev-dev, can't get irq number\n); + return -ENOENT; } - idev = kzalloc(sizeof(struct axxia_i2c_dev), GFP_KERNEL); - if (!idev) { - ret = -ENOMEM; - goto err_cleanup; + base = devm_ioremap_resource(pdev-dev, res); + if (IS_ERR(base)) + return PTR_ERR(base); + + idev-i2c_clk = devm_clk_get(pdev-dev, i2c); + if (IS_ERR(idev-i2c_clk)) { + dev_err(pdev-dev, missing I2C bus clock); + return PTR_ERR(idev-i2c_clk); } - idev-base = base; - idev-regs = (struct __iomem i2c_regs*) base; - idev-i2c_clk = i2c_clk; + idev-regs = (struct i2c_regs __iomem *) base; idev-dev = pdev-dev; init_completion(idev-msg_complete); - of_property_read_u32(np, bus, bus); - of_property_read_u32(np, clock-frequency, idev-bus_clk_rate); - if (idev-bus_clk_rate == 0) idev-bus_clk_rate = 10; /* default clock rate */ @@ -556,48 +545,37 @@ axxia_i2c_probe(struct platform_device *pdev) ret = axxia_i2c_init(idev); if (ret) { dev_err(pdev-dev, Failed to initialize i2c controller); - goto err_cleanup; + return ret; } - ret = request_irq(irq, axxia_i2c_isr, 0, pdev-name, idev); + ret = devm_request_irq(pdev-dev, irq, axxia_i2c_isr, 0, + pdev-name, idev); if (ret) { - dev_err(pdev-dev, Failed to request irq %i\n, idev-irq); - goto err_cleanup; + dev_err(pdev-dev, can't claim irq %d\n, irq); + return ret; } - idev-irq = irq; clk_enable(idev-i2c_clk); i2c_set_adapdata(idev-adapter, idev); + strlcpy(idev-adapter.name, pdev-name, sizeof(idev-adapter.name)); idev-adapter.owner = THIS_MODULE; idev-adapter.class = I2C_CLASS_HWMON; - snprintf(idev-adapter.name, sizeof(idev-adapter.name), -Axxia I2C%u, bus); idev-adapter.algo = axxia_i2c_algo; idev-adapter.dev.parent = pdev-dev; - idev-adapter.nr = bus;
[linux-yocto] [PATCH 35/57] LSI AXM55xx: Axxia GIC driver improvements (3rd gen)
From: David Mercado david.merc...@windriver.com Introduce the use of slow bus locking to allow use of Linux RPC mechanism, remove unnecessary memory barriers, etc. Signed-off-by: David Mercado david.merc...@windriver.com --- arch/arm/mach-axxia/axxia-gic.c | 1138 --- 1 file changed, 577 insertions(+), 561 deletions(-) diff --git a/arch/arm/mach-axxia/axxia-gic.c b/arch/arm/mach-axxia/axxia-gic.c index 5aefa42..32c7525 100644 --- a/arch/arm/mach-axxia/axxia-gic.c +++ b/arch/arm/mach-axxia/axxia-gic.c @@ -3,7 +3,7 @@ * * Cloned from linux/arch/arm/common/gic.c * - * Copyright (C) 2002 ARM Limited, All Rights Reserved. + * Copyright (C) 2013 LSI Corporation * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as @@ -33,28 +33,16 @@ * registers are banked per-cpu for these sources. */ -#include linux/init.h -#include linux/kernel.h -#include linux/err.h #include linux/module.h -#include linux/list.h -#include linux/smp.h -#include linux/cpu_pm.h -#include linux/cpumask.h #include linux/io.h -#include linux/of.h #include linux/of_address.h -#include linux/of_irq.h +#include linux/cpu_pm.h #include linux/irqdomain.h -#include linux/interrupt.h -#include linux/percpu.h -#include linux/slab.h +#include linux/irqchip/arm-gic.h -#include asm/irq.h #include asm/exception.h #include asm/smp_plat.h #include asm/mach/irq.h -#include linux/irqchip/arm-gic.h #include mach/axxia-gic.h @@ -87,13 +75,7 @@ enum axxia_ext_ipi_num { MAX_AXM_IPI_NUM }; -/* - * Some big arbritary number that won't ever conflict with - * the IPI numbers defined in arch/arm/kernel/smp.c - */ -#define AXXIA_RPC 0xff - -/* RPC Message types. */ +/* MUX Message types. */ enum axxia_mux_msg_type { MUX_MSG_CALL_FUNC = 0, MUX_MSG_CALL_FUNC_SINGLE, @@ -113,11 +95,6 @@ static void muxed_ipi_message_pass(const struct cpumask *mask, struct axxia_mux_msg *info; int cpu; - /* -* Order previous accesses before accesses in the IPI handler. -*/ - dmb(); - for_each_cpu(cpu, mask) { info = per_cpu(ipi_mux_msg, cpu_logical_map(cpu)); info-msg |= 1 ipi_num; @@ -129,8 +106,6 @@ static void axxia_ipi_demux(struct pt_regs *regs) struct axxia_mux_msg *info = __get_cpu_var(ipi_mux_msg); u32 all; - mb(); - do { all = xchg(info-msg, 0); if (all (1 MUX_MSG_CALL_FUNC)) @@ -153,19 +128,54 @@ struct gic_chip_data { union gic_base dist_base; union gic_base cpu_base; #ifdef CONFIG_CPU_PM - u32 saved_spi_enable[DIV_ROUND_UP(MAX_GIC_INTERRUPTS, 32)]; - u32 saved_spi_conf[DIV_ROUND_UP(MAX_GIC_INTERRUPTS, 16)]; - u32 saved_spi_target[DIV_ROUND_UP(MAX_GIC_INTERRUPTS, 4)]; - u32 __percpu *saved_ppi_enable; - u32 __percpu *saved_ppi_conf; + u32 saved_spi_enable[DIV_ROUND_UP(MAX_GIC_INTERRUPTS, 32)] + [MAX_NUM_CLUSTERS]; + u32 saved_spi_conf[DIV_ROUND_UP(MAX_GIC_INTERRUPTS, 16)] + [MAX_NUM_CLUSTERS]; + u32 saved_spi_target[DIV_ROUND_UP(MAX_GIC_INTERRUPTS, 4)] + [MAX_NUM_CLUSTERS]; + u32 __percpu *saved_ppi_enable[MAX_NUM_CLUSTERS]; + u32 __percpu *saved_ppi_conf[MAX_NUM_CLUSTERS]; #endif struct irq_domain *domain; unsigned int gic_irqs; }; +enum gic_rpc_func_mask { + IRQ_MASK = 0x01, + IRQ_UNMASK = 0x02, + SET_TYPE = 0x04, + SET_AFFINITY = 0x08, + CLR_AFFINITY = 0x10, + GIC_NOTIFIER = 0x20, + MAX_GIC_FUNC_MASK +}; + + +#ifdef CONFIG_CPU_PM +struct gic_notifier_data { + struct notifier_block *self; + unsigned long cmd; + void *v; +}; +#endif + +struct gic_rpc_data { + struct irq_data *d; + u32 func_mask; + u32 cpu, oldcpu; + u32 type; + const struct cpumask *mask_val; +#ifdef CONFIG_CPU_PM + struct gic_notifier_data gn_data; +#endif +}; + static DEFINE_RAW_SPINLOCK(irq_controller_lock); +static DEFINE_MUTEX(irq_bus_lock); -static struct gic_chip_data gic_data[MAX_NUM_CLUSTERS] __read_mostly; +static struct gic_chip_data gic_data __read_mostly; +static struct gic_rpc_data gic_rpc_data = {NULL, 0, 0, 0, 0, NULL}; #define gic_data_dist_base(d) ((d)-dist_base.common_base) #define gic_data_cpu_base(d) ((d)-cpu_base.common_base) @@ -188,88 +198,88 @@ static inline unsigned int gic_irq(struct irq_data *d) return d-hwirq; } -typedef void axxia_call_func_t(void *info); - -struct axxia_gic_rpc { - int cpu; - axxia_call_func_t *func; - void *info; -}; - -static DEFINE_PER_CPU_SHARED_ALIGNED(struct axxia_gic_rpc, axxia_gic_rpc); - -void axxia_gic_handle_gic_rpc(void) -{ - u32 this_cpu = cpu_logical_map(smp_processor_id()); - int cpu; - -
[linux-yocto] [PATCH 53/57] arch/powerpc: Clean up of Compatible Names in Axxia Device Trees
From: John Jacques john.jacq...@lsi.com The base compatible type for Axxia (PowerPC) is not lsi,acp. Signed-off-by: John Jacques john.jacq...@lsi.com --- arch/powerpc/platforms/44x/acpx1.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/powerpc/platforms/44x/acpx1.c b/arch/powerpc/platforms/44x/acpx1.c index b903787..934ea0a 100644 --- a/arch/powerpc/platforms/44x/acpx1.c +++ b/arch/powerpc/platforms/44x/acpx1.c @@ -253,7 +253,7 @@ static int __init acpx14xx_probe(void) { unsigned long root = of_get_flat_dt_root(); - if (!of_flat_dt_is_compatible(root, ibm,acpx1-4xx)) + if (!of_flat_dt_is_compatible(root, lsi,acp)) 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 37/57] arm/axxia: Configure changes to 'GPIO driver for SPI chip selects'
From: Anders Berg anders.b...@lsi.com This patch was split off as configuration changes to support the GPIO driver changes. Signed-off-by: Anders Berg anders.b...@lsi.com --- arch/arm/boot/dts/axm5504-sim.dts |4 arch/arm/boot/dts/axm5516-amarillo.dts |4 arch/arm/boot/dts/axm55xx.dtsi |6 ++ 3 files changed, 14 insertions(+) diff --git a/arch/arm/boot/dts/axm5504-sim.dts b/arch/arm/boot/dts/axm5504-sim.dts index 2dd964b..7580ae5 100644 --- a/arch/arm/boot/dts/axm5504-sim.dts +++ b/arch/arm/boot/dts/axm5504-sim.dts @@ -106,6 +106,10 @@ status = okay; }; +spics { + status = okay; +}; + spi0 { status = okay; }; diff --git a/arch/arm/boot/dts/axm5516-amarillo.dts b/arch/arm/boot/dts/axm5516-amarillo.dts index 85c4ede..a802b52 100644 --- a/arch/arm/boot/dts/axm5516-amarillo.dts +++ b/arch/arm/boot/dts/axm5516-amarillo.dts @@ -78,6 +78,10 @@ status = okay; }; +spics { + status = okay; +}; + spi0 { status = okay; diff --git a/arch/arm/boot/dts/axm55xx.dtsi b/arch/arm/boot/dts/axm55xx.dtsi index fc81a75..f774531 100644 --- a/arch/arm/boot/dts/axm55xx.dtsi +++ b/arch/arm/boot/dts/axm55xx.dtsi @@ -370,6 +370,12 @@ #size-cells = 0; reg = 0x20 0x10088000 0x00 0x1000; interrupts = 0 42 4; + num-cs = 5; + cs-gpios = spics 0 1, + spics 1 1, + spics 2 1, + spics 3 1, + spics 4 1; status = disabled; }; }; -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 51/57] LSI powerpc/sysdev: Removing the power of 2 size restriction
From: SangeethaRao sangeetha@lsi.com Removed the power of 2 size restriction for PCIe inbound mapping in LSI PCIe driver Signed-off-by: SangeethaRao sangeetha@lsi.com --- arch/powerpc/sysdev/lsi_pci.c |5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/arch/powerpc/sysdev/lsi_pci.c b/arch/powerpc/sysdev/lsi_pci.c index ca1506d..e9beadc 100644 --- a/arch/powerpc/sysdev/lsi_pci.c +++ b/arch/powerpc/sysdev/lsi_pci.c @@ -152,9 +152,8 @@ static int __init acp_parse_dma_ranges(struct pci_controller *hose, return -ENXIO; } - /* Check we are a power of 2 size and that base is a multiple of size*/ - if ((size (size - 1)) != 0 || - (res-start (size - 1)) != 0) { + /* Check that base is a multiple of size*/ + if ((res-start (size - 1)) != 0) { pr_err(%s: dma-ranges unaligned\n, hose-dn-full_name); return -ENXIO; -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 52/57] arch/powerpc: Update the Axxia Device Tree Files
From: John Jacques john.jacq...@lsi.com A new system, 3500, was added which required some changes to the device trees. Signed-off-by: John Jacques john.jacq...@lsi.com --- arch/powerpc/boot/dts/acp25xx.dts | 391 ++--- arch/powerpc/boot/dts/acp342x.dts | 349 + arch/powerpc/boot/dts/acp344x.dts | 164 +++- arch/powerpc/boot/dts/acp35xx.dts | 99 ++ 4 files changed, 540 insertions(+), 463 deletions(-) diff --git a/arch/powerpc/boot/dts/acp25xx.dts b/arch/powerpc/boot/dts/acp25xx.dts index 9893cf9..ad9dfe8 100644 --- a/arch/powerpc/boot/dts/acp25xx.dts +++ b/arch/powerpc/boot/dts/acp25xx.dts @@ -1,10 +1,10 @@ /* - * Device Tree Source for IBM Embedded PPC 476 Platform + * Device Tree Source for LSI ACP25xx. * - * Copyright 2009 Torez Smith, IBM Corporation. + * Copyright 2013, LSI Corporation * * Based on earlier code: - * Copyright (c) 2006, 2007 IBM Corp. + * Copyright (c) 2009, 2006, 2007 IBM Corp. * Josh Boyer jwbo...@linux.vnet.ibm.com, David Gibson d...@au1.ibm.com * * This file is licensed under the terms of the GNU General Public @@ -17,164 +17,198 @@ /memreserve/ 0x 0x0040; / { -#address-cells = 2; -#size-cells = 1; -model = ibm,acpx1-4xx; -compatible = ibm,acpx1-4xx,ibm,47x-AMP; -dcr-parent = {/cpus/cpu@0}; + #address-cells = 2; + #size-cells = 1; + model = ibm,acpx1-4xx; + compatible = ibm,acpx1-4xx,ibm,47x-AMP; + dcr-parent = {/cpus/cpu@0}; -aliases { -serial0 = UART0; -serial1 = UART1; -rapidio0 = rio0; + aliases { + serial0 = UART0; + serial1 = UART1; ethernet0 = FEMAC; -}; + rapidio0 = SRIO0; + }; -cpus { -#address-cells = 1; -#size-cells = 0; + cpus { + #address-cells = 1; + #size-cells = 0; -cpu@0 { -device_type = cpu; -model = PowerPC,4xx; // real CPU changed in sim -reg = 0; -clock-frequency = 0x5f5e1000; -timebase-frequency = 0x5f5e1000; -i-cache-line-size = 32; -d-cache-line-size = 32; -i-cache-size = 32768; -d-cache-size = 32768; -dcr-controller; -dcr-access-method = native; -status = ok; -reset-type = 3; // 1=core, 2=chip, 3=system (default) -}; -}; + cpu@0 { + device_type = cpu; + model = PowerPC,4xx; // real CPU changed in sim + reg = 0; + clock-frequency = 0; // filled in by U-Boot + timebase-frequency = 0; // filled in by U-Boot + i-cache-line-size = 32; + d-cache-line-size = 32; + i-cache-size = 32768; + d-cache-size = 32768; + dcr-controller; + dcr-access-method = native; + status = ok; + reset-type = 3; // 1=core, 2=chip, 3=system (default) + }; + + cpu@1 { + device_type = cpu; + model = PowerPC,4xx; // real CPU changed in sim + reg = 1; + clock-frequency = 0; // filled in by U-Boot + timebase-frequency = 0; // filled in by U-Boot + i-cache-line-size = 32; + d-cache-line-size = 32; + i-cache-size = 32768; + d-cache-size = 32768; + dcr-controller; + dcr-access-method = native; + status = disabled; + enable-method = spin-table; + cpu-release-addr = 0 0; // Fixed by the boot loader + reset-type = 3; // 1=core, 2=chip, 3=system (default) + }; + }; memory@0 { device_type = memory; -reg = 0x 0x 0x8000; // filled in by U-Boot +reg = 0x 0x 0x; // filled in by U-Boot }; memory@8000 { device_type = memory; -reg = 0x 0x8000 0x8000; // filled in by U-Boot +reg = 0x 0x 0x; // filled in by U-Boot }; -MPIC: interrupt-controller { -compatible = chrp,open-pic; -interrupt-controller; -
[linux-yocto] [PATCH 45/57] arm/mm: Backport of 3159f372354e8e1f5dee714663d70
From: Jonas Svennebring jonas.svennebr...@lsi.com ARM: 7840/1: LPAE: don't reject mapping /dev/mem above 4GB With LPAE enabled, physical address space is larger than 4GB. Allow mapping any part of it via /dev/mem by using PHYS_MASK to determine valid range. PHYS_MASK covers 40 bits with LPAE enabled and 32 bits otherwise. Signed-off-by: Jonas Svennebring jonas.svennebr...@lsi.com --- arch/arm/mm/mmap.c |8 +++- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/arch/arm/mm/mmap.c b/arch/arm/mm/mmap.c index f0ef2f7..2db5d2d 100644 --- a/arch/arm/mm/mmap.c +++ b/arch/arm/mm/mmap.c @@ -146,7 +146,7 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, info.flags = VM_UNMAPPED_AREA_TOPDOWN; info.length = len; - info.low_limit = FIRST_USER_ADDRESS; + info.low_limit = PAGE_SIZE; info.high_limit = mm-mmap_base; info.align_mask = do_align ? (PAGE_MASK (SHMLBA - 1)) : 0; info.align_offset = pgoff PAGE_SHIFT; @@ -204,13 +204,11 @@ int valid_phys_addr_range(phys_addr_t addr, size_t size) } /* - * We don't use supersection mappings for mmap() on /dev/mem, which - * means that we can't map the memory area above the 4G barrier into - * userspace. + * Do not allow /dev/mem mappings beyond the supported physical range. */ int valid_mmap_phys_addr_range(unsigned long pfn, size_t size) { - return !(pfn + (size PAGE_SHIFT) 0x0010); + return (pfn + (size PAGE_SHIFT)) = (1 + (PHYS_MASK PAGE_SHIFT)); } #ifdef CONFIG_STRICT_DEVMEM -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 49/57] arch/arm/mach-axxia: Work-Around for Event Problems in v1.0 Silicon
From: John Jacques john.jacq...@lsi.com SEV/WFE are unusable in v1.0 silicon. The boot loader now sets bit 7 in the ACLTR register of each core, making wfe a nop. At present, bit 7 of the ACTLR does not work in simulation and emulaton. Until that is corrected, this work-around is necessary. Signed-off-by: John Jacques john.jacq...@lsi.com --- arch/arm/include/asm/spinlock.h |5 arch/arm/mach-axxia/Makefile|5 ++-- arch/arm/mach-axxia/ev.c| 55 +++ 3 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 arch/arm/mach-axxia/ev.c diff --git a/arch/arm/include/asm/spinlock.h b/arch/arm/include/asm/spinlock.h index dd64cc6..6194795 100644 --- a/arch/arm/include/asm/spinlock.h +++ b/arch/arm/include/asm/spinlock.h @@ -88,7 +88,12 @@ static inline void arch_spin_lock(arch_spinlock_t *lock) : cc); while (lockval.tickets.next != lockval.tickets.owner) { +#ifdef CONFIG_ARCH_AXXIA + extern void __axxia_arch_wfe(void); + __axxia_arch_wfe(); +#else wfe(); +#endif lockval.tickets.owner = ACCESS_ONCE(lock-tickets.owner); } diff --git a/arch/arm/mach-axxia/Makefile b/arch/arm/mach-axxia/Makefile index ae75ac7..33f1309 100644 --- a/arch/arm/mach-axxia/Makefile +++ b/arch/arm/mach-axxia/Makefile @@ -3,8 +3,9 @@ # obj-y += axxia.o obj-y += clock.o -obj-y += io.o -obj-y += ssp-gpio.o +obj-y += ev.o +obj-y += io.o +obj-y += ssp-gpio.o obj-y += ncr.o obj-y += timers.o obj-y += pci.o diff --git a/arch/arm/mach-axxia/ev.c b/arch/arm/mach-axxia/ev.c new file mode 100644 index 000..1647bbe --- /dev/null +++ b/arch/arm/mach-axxia/ev.c @@ -0,0 +1,55 @@ +/* + * arch/arm/mach-axxia/ev.c + * + * Support for the LSI Axxia boards based on ARM cores. + * + * Copyright (C) 2012 LSI + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include linux/module.h +#include linux/types.h +#include linux/of.h +#include linux/of_fdt.h +#include asm/page.h +#include asm/io.h + +static int initialized = 0; +static int wfe_available; + +inline void +__axxia_arch_wfe(void) +{ + if (0 == initialized) { + if (of_find_compatible_node(NULL, NULL, + lsi,axm5516-sim) != NULL || + of_find_compatible_node(NULL, NULL, + lsi,axm5516-emu) != NULL) + wfe_available = 0; + else + wfe_available = 1; + + initialized = 1; + } + + if (0 != wfe_available) { + wfe(); + } + + return; +} + +EXPORT_SYMBOL(__axxia_arch_wfe); -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 40/57] spi: Checkpatch changes to 'Revert to mainline spi-pl022'
Code syntax changes as reported by checkpatch Signed-off-by: Charlie Paul charlie.p...@windriver.com --- drivers/spi/spi-acp.c |7 ++- drivers/spi/spi-pl022.c | 15 ++- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/drivers/spi/spi-acp.c b/drivers/spi/spi-acp.c index 7b56d98..db17db2 100644 --- a/drivers/spi/spi-acp.c +++ b/drivers/spi/spi-acp.c @@ -1245,9 +1245,7 @@ static irqreturn_t pl022_interrupt_handler(int irq, void *dev_id) SSP_IMSC(pl022-virtbase)); writew(CLEAR_ALL_INTERRUPTS, SSP_ICR(pl022-virtbase)); if (unlikely(pl022-rx pl022-rx_end)) { - dev_warn(pl022-dev-dev, read %u surplus -bytes (did you request an odd -number of bytes on a 16bit bus?)\n, + dev_warn(pl022-dev-dev, read %u surplus bytes (did you request an odd number of bytes on a 16bit bus?)\n, (u32) (pl022-rx - pl022-rx_end)); } /* Update total bytes transferred */ @@ -2365,8 +2363,7 @@ static void register_spi_device(struct pl022 *pl022) /* Device speed */ prop = of_get_property(nc, spi-max-frequency, len); if (!prop || len sizeof(*prop)) { - dev_err(master-dev, %s has no 'spi-max-frequency' -property\n, + dev_err(master-dev, %s has no 'spi-max-frequency' property\n, nc-full_name); spi_dev_put(spi); continue; diff --git a/drivers/spi/spi-pl022.c b/drivers/spi/spi-pl022.c index 74d03b1..36a33f6 100644 --- a/drivers/spi/spi-pl022.c +++ b/drivers/spi/spi-pl022.c @@ -50,15 +50,14 @@ * val shifted sb steps to the left. */ #define SSP_WRITE_BITS(reg, val, mask, sb) \ - ((reg) = (((reg) ~(mask)) | (((val)(sb)) (mask + ((reg) = (((reg) ~(mask)) | (((val)(sb)) (mask /* * This macro is also used to define some default values. * It will just shift val by sb steps to the left and mask * the result with mask. */ -#define GEN_MASK_BITS(val, mask, sb) \ - (((val)(sb)) (mask)) +#define GEN_MASK_BITS(val, mask, sb) (((val)(sb)) (mask)) #define DRIVE_TX 0 #define DO_NOT_DRIVE_TX1 @@ -1297,9 +1296,7 @@ static irqreturn_t pl022_interrupt_handler(int irq, void *dev_id) SSP_IMSC(pl022-virtbase)); writew(CLEAR_ALL_INTERRUPTS, SSP_ICR(pl022-virtbase)); if (unlikely(pl022-rx pl022-rx_end)) { - dev_warn(pl022-adev-dev, read %u surplus -bytes (did you request an odd -number of bytes on a 16bit bus?)\n, + dev_warn(pl022-adev-dev, read %u surplus bytes (did you request an odd number of bytes on a 16bit bus?)\n, (u32) (pl022-rx - pl022-rx_end)); } /* Update total bytes transferred */ @@ -1773,7 +1770,7 @@ static int calculate_effective_freq(struct pl022 *pl022, int freq, struct scr = SCR_MIN; } - WARN(!best_freq, pl022: Matching cpsdvsr and scr not found for %d Hz rate \n, + WARN(!best_freq, pl022: Matching cpsdvsr and scr not found for %d Hz rate\n, freq); clk_freq-cpsdvsr = (u8) (best_cpsdvsr 0xFF); @@ -,8 +2219,8 @@ static int pl022_probe(struct amba_device *adev, const struct amba_id *id) status = -ENOMEM; goto err_no_ioremap; } - printk(KERN_INFO pl022: mapped registers from 0x%08x to %p\n, - adev-res.start, pl022-virtbase); + pr_info(pl022: mapped registers from 0x%08x to %p\n, + adev-res.start, pl022-virtbase); pl022-clk = devm_clk_get(adev-dev, NULL); if (IS_ERR(pl022-clk)) { -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 54/57] LSI drivers/tty: Axxia Serial Driver Update
From: John Jacques john.jacq...@lsi.com Updated to work with the 3500 variant. Signed-off-by: John Jacques john.jacq...@lsi.com --- drivers/tty/serial/lsi_acp_serial.c | 99 --- 1 file changed, 56 insertions(+), 43 deletions(-) diff --git a/drivers/tty/serial/lsi_acp_serial.c b/drivers/tty/serial/lsi_acp_serial.c index f9676ca..aa92920 100644 --- a/drivers/tty/serial/lsi_acp_serial.c +++ b/drivers/tty/serial/lsi_acp_serial.c @@ -81,9 +81,8 @@ struct uart_acp_port { unsigned int interrupt_mask; unsigned int old_status; void *timer_base; - unsigned long divisor; - unsigned char ibrd; - unsigned char fbrd; + unsigned short ibrd; + unsigned short fbrd; }; /* @@ -119,25 +118,10 @@ struct uart_acp_port { static int get_clock_stuff(struct uart_acp_port *port, int baud_rate) { - unsigned long divisor; unsigned long ibrd; unsigned long fbrd; - /* - Since the IBDR (integer part of the baud rate - divisor) is a 16 bit quatity, find the minimum load - value that will let the IBDR/FBDR result in the - desired baud rate. - */ - - if (100 per_clock) { - divisor = per_clock / 2500; - ibrd = 2500 / (16 * baud_rate); - } else { - /* Emulation is much slower... */ - divisor = per_clock / 325; - ibrd = 325 / (16 * baud_rate); - } + ibrd = per_clock / (16 * baud_rate); /* * The following formula is from the ARM document (ARM DDI 0183E). @@ -164,36 +148,15 @@ get_clock_stuff(struct uart_acp_port *port, int baud_rate) * 2 * (16 * baud_rate) */ - port-port.uartclk = (per_clock / divisor); + port-port.uartclk = per_clock; fbrd = port-port.uartclk % (16 * baud_rate); fbrd *= 128; fbrd += (16 * baud_rate); fbrd /= (2 * (16 * baud_rate)); - port-divisor = (divisor - 1); - port-ibrd = (unsigned char) ibrd; - port-fbrd = (unsigned char) fbrd; - - if (port-divisor != in_le32(port-timer_base + TIMER_LOAD)) { - while (0 == - (in_le32((const volatile unsigned *) - (port-port.membase + UART01x_FR)) - UART011_FR_TXFE)) - ; - - while (0 != - (in_le32((const volatile unsigned *) - (port-port.membase + UART01x_FR)) - UART01x_FR_BUSY)) - ; - - out_le32((port-timer_base + TIMER_CONTROL), 0); - out_le32((port-timer_base + TIMER_LOAD), port-divisor); - out_le32((port-timer_base + TIMER_CONTROL), -(TIMER_CONTROL_ENABLE | - TIMER_CONTROL_MODE)); - } + port-ibrd = (unsigned short) ibrd; + port-fbrd = (unsigned short) fbrd; return 0; } @@ -766,8 +729,13 @@ acp_serial_set_termios(struct uart_port *port, struct ktermios *termios, out_le32((u32 *)(uap-port.membase + UART011_CR), 0); /* Set baud rate */ +#if 1 out_le32((u32 *)(uap-port.membase + UART011_FBRD), uap-fbrd); out_le32((u32 *)(uap-port.membase + UART011_IBRD), uap-ibrd); +#else + out_le32((u32 *)(uap-port.membase + UART011_FBRD), 0x13); + out_le32((u32 *)(uap-port.membase + UART011_IBRD), 0x598); +#endif /* * --v--v--v--v- @@ -1134,6 +1102,51 @@ acp_serial_add_ports(struct uart_driver *driver) ret = -ENOMEM; } + np = of_find_compatible_node(NULL, NULL, lsi,acp3500); + + if (NULL == np) { + unsigned long divisor; + + /* + In the 3500 case, the peripheral clock is connected + directly to the UART. If this isn't 3500, set up + the second timer (which is in between the peripheral + clock and the UART) and adjust per_clock + accordingly. + */ + + if (100 per_clock) { + divisor = per_clock / 2500; + per_clock = 2500; + } else { + /* Emulation is much slower... */ + divisor = per_clock / 325; + per_clock = 325; + } + + --divisor; + + if (divisor != in_le32(uap-timer_base + TIMER_LOAD)) { + while (0 == + (in_le32((const volatile unsigned *) + (uap-port.membase + UART01x_FR)) + UART011_FR_TXFE)) + ; + + while (0 != +
[linux-yocto] [PATCH 48/57] arch/arm/mach-axxia: Name Cleanup
From: John Jacques john.jacq...@lsi.com Change emulation to emu to match the other targets (sim for simulation, etc.). 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 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm/boot/dts/axm5504-emu.dts b/arch/arm/boot/dts/axm5504-emu.dts index 9ddce7d..0d7ca8f 100644 --- a/arch/arm/boot/dts/axm5504-emu.dts +++ b/arch/arm/boot/dts/axm5504-emu.dts @@ -18,7 +18,7 @@ / { model = Emulation Platform AXM55xx; - compatible = lsi,axm5516-emulation, lsi,axm5516; + compatible = lsi,axm5516-emu, lsi,axm5516; memory { device_type = memory; diff --git a/arch/arm/boot/dts/axm5507-emu.dts b/arch/arm/boot/dts/axm5507-emu.dts index 201f3af..8de0b23 100644 --- a/arch/arm/boot/dts/axm5507-emu.dts +++ b/arch/arm/boot/dts/axm5507-emu.dts @@ -18,7 +18,7 @@ / { model = Emulation Platform AXM55xx; - compatible = lsi,axm5516-emulation, lsi,axm5516; + compatible = lsi,axm5516-emu, lsi,axm5516; memory { device_type = memory; -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 55/57] LSI drivers/tty/serial: Checkpatch 'Axxia Serial Driver Update'
Code syntax updates as per checkpatch ouput Signed-off-by: Charlie Paul cpaul.windri...@gmail.com --- drivers/tty/serial/lsi_acp_serial.c |4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/tty/serial/lsi_acp_serial.c b/drivers/tty/serial/lsi_acp_serial.c index aa92920..c03f29b 100644 --- a/drivers/tty/serial/lsi_acp_serial.c +++ b/drivers/tty/serial/lsi_acp_serial.c @@ -424,7 +424,7 @@ unsigned int acp_serial_get_mctrl(struct uart_port *port) #define TIOCMBIT(uartbit, tiocmbit) do { \ if (status (uartbit)) \ result |= (tiocmbit);\ -} while (0); +} while (0) TIOCMBIT(UART01x_FR_DCD, TIOCM_CAR); TIOCMBIT(UART01x_FR_DSR, TIOCM_DSR); TIOCMBIT(UART01x_FR_CTS, TIOCM_CTS); @@ -445,7 +445,7 @@ void acp_serial_set_mctrl(struct uart_port *port, unsigned int mctrl) cr |= uartbit; \ else \ cr = ~uartbit; \ -} while (0); +} while (0) TIOCMBIT(TIOCM_RTS, UART011_CR_RTS); TIOCMBIT(TIOCM_DTR, UART011_CR_DTR); -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 47/57] Basic perf support for axxia plaform block provided by LSI.
From: Jonas Svennebring jonas.svennebr...@lsi.com Signed-off-by: Jonas Svennebring jonas.svennebr...@lsi.com --- 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/mach-axxia/perf_event_platform.c | 270 + arch/arm/mach-axxia/perf_event_platform.h | 10 ++ arch/arm/mach-axxia/perf_event_vp.c | 51 ++ arch/arm/mach-axxia/smon.c| 200 + arch/arm/mach-axxia/smon.h| 71 8 files changed, 840 insertions(+) create mode 100644 arch/arm/mach-axxia/perf_event_memc.c create mode 100644 arch/arm/mach-axxia/perf_event_memc.h create mode 100644 arch/arm/mach-axxia/perf_event_pcx.c create mode 100644 arch/arm/mach-axxia/perf_event_platform.c create mode 100644 arch/arm/mach-axxia/perf_event_platform.h create mode 100644 arch/arm/mach-axxia/perf_event_vp.c create mode 100644 arch/arm/mach-axxia/smon.c create mode 100644 arch/arm/mach-axxia/smon.h diff --git a/arch/arm/mach-axxia/perf_event_memc.c b/arch/arm/mach-axxia/perf_event_memc.c new file mode 100644 index 000..a20fc8a --- /dev/null +++ b/arch/arm/mach-axxia/perf_event_memc.c @@ -0,0 +1,130 @@ +/* + * arch/arm/mach-axxia/perf_event_memc.c + * included from arch/arm/mach-axxia/perf_event_platform.c + * + * Support for the LSI Axxia boards based on ARM cores. + * + * Copyright (C) 2014 LSI + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include perf_event_memc.h + +static void memc_startup_init(void) +{ + smon_init_ncp(ddrc0_smon, DDRC0, DDRC_PERF, DDRC_SMON); + smon_init_ncp(ddrc1_smon, DDRC1, DDRC_PERF, DDRC_SMON); + smon_init_mem(elm0_smon, ELM0, ELM_SMON); + smon_init_mem(elm1_smon, ELM1, ELM_SMON); +} + +static uint32_t memc_pmu_event_init(uint32_t event, struct perf_event *pevent) +{ + return 0; +} + +static void memc_pmu_event_destroy(uint32_t event, struct perf_event *pevent) +{ + smon_stop_if_unassigned(ddrc0_smon); + smon_stop_if_unassigned(ddrc1_smon); + smon_stop_if_unassigned(elm0_smon); + smon_stop_if_unassigned(elm1_smon); +} + +static uint32_t memc_pmu_event_add(uint32_t ev, struct perf_event *pevent) +{ + uint32_t ret; + + if (ev = DDRC0_OFFSET ev = DDRC0_SMON_MAX) { + + ret = smon_allocate(ddrc0_smon, ev - DDRC0_OFFSET); + if (ret != 0) + return ret; + + ret = smon_start(ddrc0_smon, ev - DDRC0_OFFSET); + if (ret != 0) + return ret; + } else if (ev = DDRC1_OFFSET ev = DDRC1_SMON_MAX) { + + ret = smon_allocate(ddrc1_smon, ev - DDRC1_OFFSET); + if (ret != 0) + return ret; + + ret = smon_start(ddrc1_smon, ev - DDRC1_OFFSET); + if (ret != 0) + return ret; + } else if (ev = ELM0_OFFSET ev = ELM0_SMON_MAX) { + + ret = smon_allocate(elm0_smon, ev - ELM0_OFFSET); + if (ret != 0) + return ret; + + ret = smon_start(elm0_smon, ev - ELM0_OFFSET); + if (ret != 0) + return ret; + } else if (ev = ELM1_OFFSET ev = ELM1_SMON_MAX) { + + ret = smon_allocate(elm1_smon, ev - ELM1_OFFSET); + if (ret != 0) + return ret; + + ret = smon_start(elm1_smon, ev - ELM1_OFFSET); + if (ret != 0) + return ret; + } + + return 0; +} + +/* + * Remove event and return counter update. + */ +static uint32_t memc_pmu_event_del(uint32_t ev, struct perf_event *pevent, + int flags) +{ + uint32_t count = 0; + + if (ev = DDRC0_OFFSET ev = DDRC0_SMON_MAX) { + + count = smon_read(ddrc0_smon, ev - DDRC0_OFFSET); + if (count == -ENOEVENT) + count = 0; + + smon_deallocate(ddrc0_smon, ev - DDRC0_OFFSET); + } else if (ev = DDRC1_OFFSET ev = DDRC1_SMON_MAX) { + + count = smon_read(ddrc1_smon, ev - DDRC1_OFFSET); + if (count == -ENOEVENT) +
[linux-yocto] [PATCH 44/57] axxia: Updated Device Trees Signed-off-by: John Jacques john.jacq...@lsi.com
From: John Jacques john.jacq...@lsi.com --- 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-emu.dts | 44 arch/arm/boot/dts/axm5504-emulation.dts | 44 arch/arm/boot/dts/axm5507-cpus.dtsi | 73 ++ arch/arm/boot/dts/axm5507-emu.dts | 44 arch/arm/boot/dts/axm5516-sim.dts | 127 ++ arch/powerpc/boot/dts/acp25xx.dts |2 +- arch/powerpc/boot/dts/acp342x.dts |2 +- arch/powerpc/boot/dts/acp344x.dts |2 +- arch/powerpc/boot/dts/acp35xx.dts |2 +- 13 files changed, 297 insertions(+), 988 deletions(-) delete mode 100644 arch/arm/boot/dts/axm-sim.dts delete mode 100644 arch/arm/boot/dts/axm-ve-tc1.dts delete mode 100644 arch/arm/boot/dts/axm-ve-tc2.dts create mode 100644 arch/arm/boot/dts/axm5504-emu.dts delete mode 100644 arch/arm/boot/dts/axm5504-emulation.dts create mode 100644 arch/arm/boot/dts/axm5507-cpus.dtsi create mode 100644 arch/arm/boot/dts/axm5507-emu.dts create mode 100644 arch/arm/boot/dts/axm5516-sim.dts diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index dbd0158..5d73aba 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -220,6 +220,11 @@ dtb-$(CONFIG_ARCH_VT8500) += vt8500-bv07.dtb \ wm8505-ref.dtb \ wm8650-mid.dtb \ wm8850-w70v2.dtb +dtb-$(CONFIG_ARCH_AXXIA) += axm5504-sim.dtb \ + axm5516-sim.dtb \ + axm5504-emu.dtb \ + axm5507-emu.dtb \ + axm5516-amarillo.dtb dtb-$(CONFIG_ARCH_ZYNQ) += zynq-zc702.dtb \ zynq-zc706.dtb diff --git a/arch/arm/boot/dts/axm-sim.dts b/arch/arm/boot/dts/axm-sim.dts deleted file mode 100644 index bb46808..000 --- a/arch/arm/boot/dts/axm-sim.dts +++ /dev/null @@ -1,403 +0,0 @@ -/* - * arch/arm/boot/dts/axm-sim.dts - * - * Copyright (C) 2012 LSI - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -/dts-v1/; - -/ { - model = AXM5516; - compatible = arm, lsi,axm5516; - interrupt-parent = gic; - #address-cells = 2; - #size-cells = 2; - - chosen { }; - - aliases { - serial0 = axxia_serial0; - serial1 = axxia_serial1; - serial2 = axxia_serial2; - serial3 = axxia_serial3; - timer = axxia_timers; - }; - - cpus { - #address-cells = 1; - #size-cells = 0; - - cpu@0 { - device_type = cpu; - compatible = arm,cortex-a15; - reg = 0; - }; - - cpu@1 { - device_type = cpu; - compatible = arm,cortex-a15; - reg = 1; - }; - - cpu@2 { - device_type = cpu; - compatible = arm,cortex-a15; - reg = 2; - }; - - cpu@3 { - device_type = cpu; - compatible = arm,cortex-a15; - reg = 3; - }; - - cpu@4 { - device_type = cpu; - compatible = arm,cortex-a15; - reg = 4; - }; - - cpu@5 { - device_type = cpu; - compatible = arm,cortex-a15; - reg = 5; - }; - - cpu@6 { - device_type = cpu; - compatible = arm,cortex-a15; - reg = 6; - }; - - cpu@7 { - device_type = cpu; - compatible = arm,cortex-a15; - reg = 7; - }; - - cpu@8 { - device_type = cpu; - compatible = arm,cortex-a15; - reg = 8; - }; - - cpu@9 { - device_type = cpu; - compatible =
[linux-yocto] [PATCH 57/57] gpio: repairs merge comflict
From: Paul Butler paul.but...@windriver.com Signed-off-by: Paul Butler paul.but...@windriver.com --- drivers/gpio/gpio-pl061.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpio/gpio-pl061.c b/drivers/gpio/gpio-pl061.c index 0254470..c13f8d1 100644 --- a/drivers/gpio/gpio-pl061.c +++ b/drivers/gpio/gpio-pl061.c @@ -358,7 +358,7 @@ static int pl061_probe(struct device *dev, irq_set_chained_handler(irq, pl061_irq_handler); irq_set_handler_data(irq, chip); - chip-domain = irq_domain_add_simple(adev-dev.of_node, PL061_GPIO_NR, + chip-domain = irq_domain_add_simple(dev-of_node, PL061_GPIO_NR, irq_base, pl061_domain_ops, chip); if (!chip-domain) return -ENODEV; -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 56/57] i2c: comforming to changes introduced by move of_i2c to core
From: Paul Butler paul.but...@windriver.com LSI driver updates to conform to changes introduced by: commit f78f5da062c3e5991643664d2463adf1f2294e04 Author: Wolfram Sang w...@the-dreams.de Date: Thu Jul 11 12:56:15 2013 +0100 i2c: move OF helpers into the core Signed-off-by: Paul Butler paul.but...@windriver.com --- drivers/i2c/busses/acp3400-i2c.c |3 --- drivers/i2c/busses/i2c-axxia.c |3 --- 2 files changed, 6 deletions(-) diff --git a/drivers/i2c/busses/acp3400-i2c.c b/drivers/i2c/busses/acp3400-i2c.c index de4eff6..b4febc0 100644 --- a/drivers/i2c/busses/acp3400-i2c.c +++ b/drivers/i2c/busses/acp3400-i2c.c @@ -19,7 +19,6 @@ #include linux/sched.h #include linux/init.h #include linux/of_platform.h -#include linux/of_i2c.h #include linux/slab.h #include linux/io.h @@ -464,8 +463,6 @@ static int acp34xx_i2c_probe(struct platform_device *dev) pr_info(%s: adapter has been added\n, np-full_name); - of_i2c_register_devices(i2c-adap); - dev_set_drvdata(dev-dev, i2c); return 0; err: diff --git a/drivers/i2c/busses/i2c-axxia.c b/drivers/i2c/busses/i2c-axxia.c index c2b84a4..86fc695 100644 --- a/drivers/i2c/busses/i2c-axxia.c +++ b/drivers/i2c/busses/i2c-axxia.c @@ -23,7 +23,6 @@ #include linux/slab.h #include linux/of_address.h #include linux/of_irq.h -#include linux/of_i2c.h #include linux/module.h #define SCL_WAIT_TIMEOUT_NS 2500 @@ -573,8 +572,6 @@ axxia_i2c_probe(struct platform_device *pdev) platform_set_drvdata(pdev, idev); - of_i2c_register_devices(idev-adapter); - return 0; } -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 09/26] axxia: Define arch_is_coherent()
From: Anders Berg anders.b...@lsi.com By defining arch_is_coherent() == 1, we can avoid unnecessary cache maintenance operations and the dma_alloc_coherent() will return normal memory. Signed-off-by: Anders Berg anders.b...@lsi.com --- arch/arm/Kconfig |1 + arch/arm/mach-axxia/include/mach/memory.h | 19 +++ drivers/usb/host/ehci-ci13612.c | 12 ++-- 3 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 arch/arm/mach-axxia/include/mach/memory.h diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index e7f2815..baa0b4d 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -341,6 +341,7 @@ config ARCH_AXXIA select ARM_TIMER_SP804 select ICST select NEED_MACH_IO_H + select NEED_MACH_MEMORY_H select ZONE_DMA select PCI select PCI_DOMAINS if PCI diff --git a/arch/arm/mach-axxia/include/mach/memory.h b/arch/arm/mach-axxia/include/mach/memory.h new file mode 100644 index 000..9df2aaf --- /dev/null +++ b/arch/arm/mach-axxia/include/mach/memory.h @@ -0,0 +1,19 @@ +/* + * arch/arm/mach-axxia/include/mach/memory.h + * + * Copyright (c) 2013 LSI Corporation + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + */ + +#ifndef __ASM_ARCH_MEMORY_H +#define __ASM_ARCH_MEMORY_H + +#include mach/hardware.h + +#define arch_is_coherent() 1 + +#endif diff --git a/drivers/usb/host/ehci-ci13612.c b/drivers/usb/host/ehci-ci13612.c index 2a30dab..b995a32 100644 --- a/drivers/usb/host/ehci-ci13612.c +++ b/drivers/usb/host/ehci-ci13612.c @@ -138,8 +138,7 @@ ci13612_fixup_usbcmd_rs(struct ehci_hcd *ehci) port_status = ehci_readl(ehci, ehci-regs-port_status[0]); pr_info(ehci-ci13612: port_status = 0x%x\n, port_status); if (port_status 0x100) { - pr_err(ehci-ci13612: USB port is in reset status, - not able to change HC status to run\n); + pr_err(ehci-ci13612: USB port is in reset status, not able to change HC status to run\n); return -EFAULT; } return 0; @@ -171,7 +170,7 @@ ci13612_fixup_txpburst(struct ehci_hcd *ehci) ehci_writel(ehci, burst_size, ehci-regs-reserved[1]); } #else -#define ci13612_fixup_txpburst(ehci) do { (void)ehci; } while(0) +#define ci13612_fixup_txpburst(ehci) do { (void)ehci; } while (0) #endif static int ci13612_ehci_run(struct usb_hcd *hcd) @@ -260,7 +259,8 @@ static int ci13612_ehci_probe(struct platform_device *pdev) pdev-dev.coherent_dma_mask = DMA_BIT_MASK(32); pdev-dev.dma_mask = pdev-dev.coherent_dma_mask; - hcd = usb_create_hcd(ci13612_hc_driver, pdev-dev, dev_name(pdev-dev)); + hcd = usb_create_hcd(ci13612_hc_driver, pdev-dev, + dev_name(pdev-dev)); if (!hcd) { retval = -ENOMEM; goto fail_create_hcd; @@ -285,8 +285,8 @@ static int ci13612_ehci_probe(struct platform_device *pdev) /* Set address bits [39:32] to zero */ writel(0x0, gpreg_base + 0x8); #ifndef CONFIG_LSI_USB_SW_WORKAROUND - /* hprot pass-through (let the controller drive hprot[0:3] */ - writel(0x100, gpreg_base + 0x74); + /* hprot cachable and bufferable */ + writel(0xc, gpreg_base + 0x74); #endif iounmap(gpreg_base); } -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 04/26] arm: rapidio updates
From: Paul Butler paul.but...@windriver.com Signed-off-by: Paul Butler paul.but...@windriver.com --- arch/arm/Kconfig | 18 + arch/arm/boot/dts/axm55xx.dts| 16 arch/arm/include/asm/axxia-rio.h | 82 ++ arch/arm/include/asm/rio.h | 33 +++ arch/arm/mach-axxia/Makefile |1 + arch/arm/mach-axxia/clock.c |5 +++ arch/arm/mach-axxia/rapidio.c| 44 7 files changed, 199 insertions(+) create mode 100644 arch/arm/include/asm/axxia-rio.h create mode 100644 arch/arm/include/asm/rio.h create mode 100644 arch/arm/mach-axxia/rapidio.c diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index c796752..e7f2815 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -345,6 +345,7 @@ config ARCH_AXXIA select PCI select PCI_DOMAINS if PCI select ARCH_SUPPORTS_MSI if PCI +select HAS_RAPIDIO if (!PREEMPT_RTB) help This enables support for the LSI Axxia boards. @@ -2359,3 +2360,20 @@ source security/Kconfig source crypto/Kconfig source lib/Kconfig + +menu RapidIO management options + +config HAS_RAPIDIO + bool + default n + +config RAPIDIO + bool RapidIO support + depends on HAS_RAPIDIO || PCI + help + If you say Y here, the kernel will include drivers and + infrastructure code to support RapidIO interconnect devices. + +source drivers/rapidio/Kconfig + +endmenu diff --git a/arch/arm/boot/dts/axm55xx.dts b/arch/arm/boot/dts/axm55xx.dts index aac791d..7ecb177 100644 --- a/arch/arm/boot/dts/axm55xx.dts +++ b/arch/arm/boot/dts/axm55xx.dts @@ -35,6 +35,7 @@ serial0 = axxia_serial0; timer = axxia_timers; ethernet0 = axxia_femac0; + rapidio0 = rio0; }; cpus { @@ -423,6 +424,21 @@ reg = 0x20 0x10098000 0 0x3000; interrupts = 0 45 4; }; + +rio0: rapidio { +index = 0; +status = disabled; +#address-cells = 2; +#size-cells = 2; +compatible = axxia,rapidio-delta; +device_type = rapidio; +reg = 0x0020 0x20142000 0x0 0x1000; /* SRIO Conf 0 region */ +ranges = 0x0 0x0 0x0031 0x 0x0 0x4000; +linkdown-reset = 0x0200 0x100 0x0020 0x1000 0x0 0x1; +interrupts = 0 89 4; +outb-dmes = 2 0x0003 1 0x; +}; + }; /* diff --git a/arch/arm/include/asm/axxia-rio.h b/arch/arm/include/asm/axxia-rio.h new file mode 100644 index 000..08bfc3b --- /dev/null +++ b/arch/arm/include/asm/axxia-rio.h @@ -0,0 +1,82 @@ +/* + * RapidIO support for LSI Axxia parts + * + */ +#ifndef __ASM_AXXIA_RIO_H__ +#define __ASM_AXXIA_RIO_H__ + +/* Constants, Macros, etc. */ + +#define AXXIA_RIO_SMALL_SYSTEM + +#define AXXIA_RIO_SYSMEM_BARRIER() + +#define AXXIA_RIO_DISABLE_MACHINE_CHECK() +#define AXXIA_RIO_ENABLE_MACHINE_CHECK() +#define AXXIA_RIO_IF_MACHINE_CHECK(mcsr) (mcsr = 0) + +#define IN_SRIO8(a, v, ec) {v = inb((long unsigned int)a); ec = 0} +#define IN_SRIO16(a, v, ec){v = inw((long unsigned int)a); ec = 0} +#define IN_SRIO32(a, v, ec){v = inl((long unsigned int)a); ec = 0} + +#define OUT_SRIO8(a, v)outb_p(v, (long unsigned int) a) +#define OUT_SRIO16(a, v) outw_p(v, (long unsigned int) a) +#define OUT_SRIO32(a, v) outl_p(v, (long unsigned int) a) + +#define _SWAP32(x) x) 0x00FF) 24) | (((x) 0xFF00) 8) | (((x) 0x00FF) 8) | (((x) 0xFF00) 24)) +#define CORRECT_GRIO(a)_SWAP32(a) +#define CORRECT_RAB(a) (a) + +/* ACP RIO board-specific stuff */ + +extern int axxia_rio_apio_enable(struct rio_mport *mport, u32 mask, u32 bits); +extern int axxia_rio_apio_disable(struct rio_mport *mport); +extern int axxia_rio_rpio_enable(struct rio_mport *mport, u32 mask, u32 bits); +extern int axxia_rio_rpio_disable(struct rio_mport *mport); + +extern int axxia_rapidio_board_init(void); + + +/*/ +/* ACP RIO operational stuff */ +/*/ + +/** + * CNTLZW - Count leading zeros word + * @val: value from which count number of leading zeros + * + * Return: number of zeros + */ +static inline u32 CNTLZW(u32 val) +{ + int n = 0; + if (val == 0) + return 32; + if ((val 0x) == 0) + n += 16; val = val 16; + /* + // 16 bits from left are zero! so we omit 16 left bits */ + if ((val 0xFF00) == 0) + n = n + 8; val = val 8; + /* 8 left bits are 0 */ + if ((val 0xF000) == 0) + n = n + 4; val = val 4; + /* 4 left bits are 0 */ + if ((val 0xC000)
[linux-yocto] [PATCH 05/26] powerpc: rapidio updates
From: Paul Butler paul.but...@windriver.com Signed-off-by: Paul Butler paul.but...@windriver.com --- arch/powerpc/boot/dts/lsi_acp342x.dts | 317 + arch/powerpc/boot/dts/lsi_acp344x.dts | 355 + arch/powerpc/include/asm/axxia-rio.h | 103 ++ arch/powerpc/include/asm/rio.h| 41 arch/powerpc/platforms/44x/Makefile |3 +- arch/powerpc/platforms/44x/acprio.c | 65 ++ arch/powerpc/platforms/44x/acpx1.c|1 + 7 files changed, 884 insertions(+), 1 deletion(-) create mode 100644 arch/powerpc/boot/dts/lsi_acp342x.dts create mode 100644 arch/powerpc/boot/dts/lsi_acp344x.dts create mode 100644 arch/powerpc/include/asm/axxia-rio.h create mode 100644 arch/powerpc/platforms/44x/acprio.c diff --git a/arch/powerpc/boot/dts/lsi_acp342x.dts b/arch/powerpc/boot/dts/lsi_acp342x.dts new file mode 100644 index 000..da6066e --- /dev/null +++ b/arch/powerpc/boot/dts/lsi_acp342x.dts @@ -0,0 +1,317 @@ +/* + * Device Tree Source for IBM Embedded PPC 476 Platform + * + * Copyright 2009 Torez Smith, IBM Corporation. + * + * Based on earlier code: + * Copyright (c) 2006, 2007 IBM Corp. + * Josh Boyer jwbo...@linux.vnet.ibm.com, David Gibson d...@au1.ibm.com + * + * This file is licensed under the terms of the GNU General Public + * License version 2. This program is licensed as is without + * any warranty of any kind, whether express or implied. + */ + +/dts-v1/; + +/memreserve/ 0x 0x0040; + +/ { + #address-cells = 2; + #size-cells = 1; + model = ibm,acpx1-4xx; + compatible = ibm,acpx1-4xx,ibm,47x-AMP; + dcr-parent = {/cpus/cpu@0}; + + aliases { + serial0 = UART0; + serial1 = UART1; + rapidio0 = rio0; + ethernet0 = FEMAC; + }; + + cpus { + #address-cells = 1; + #size-cells = 0; + + cpu@0 { + device_type = cpu; + model = PowerPC,4xx; // real CPU changed in sim + reg = 0; +clock-frequency = 0x5f5e1000; +timebase-frequency = 0x5f5e1000; + i-cache-line-size = 32; + d-cache-line-size = 32; + i-cache-size = 32768; + d-cache-size = 32768; + dcr-controller; + dcr-access-method = native; + status = ok; + reset-type = 3; // 1=core, 2=chip, 3=system (default) + }; + cpu@1 { + device_type = cpu; + model = PowerPC,4xx; // real CPU changed in sim + reg = 1; +clock-frequency = 0x5f5e1000; +timebase-frequency = 0x5f5e1000; + i-cache-line-size = 32; + d-cache-line-size = 32; + i-cache-size = 32768; + d-cache-size = 32768; + dcr-controller; + dcr-access-method = native; + status = disabled; + enable-method = spin-table; + cpu-release-addr = 0 0x2040; + reset-type = 3; // 1=core, 2=chip, 3=system (default) + }; + }; + +memory@0 { +device_type = memory; +reg = 0x 0x 0x1000; +}; + +memory@8000 { +device_type = memory; +reg = 0x 0x 0x; +}; + + MPIC: interrupt-controller { + compatible = chrp,open-pic; + interrupt-controller; + dcr-reg = 0xffc0 0x0003; + #address-cells = 0; + #size-cells = 0; + #interrupt-cells = 2; + pic-no-reset; + }; + + plb { + /* Could be PLB6, doesn't matter */ + compatible = ibm,plb-4xx, ibm,plb4; + #address-cells = 2; + #size-cells = 1; + ranges; + clock-frequency = 0; // Filled in by zImage + + POB0: opb { + compatible = ibm,opb-4xx, ibm,opb; + #address-cells = 1; + #size-cells = 1; + /* Wish there was a nicer way of specifying a full 32-bit + range */ + ranges = 0x 0x0020 0x 0x8000 + 0x8000 0x0020 0x8000 0x8000; + clock-frequency = 0; // Filled in by zImage + UART0: serial@00404000 { + device_type = serial; + compatible =
[linux-yocto] [PATCH 16/26] drivers/usb: USB driver/dts on PPC was broken.
From: SangeethaRao sangeetha@lsi.com Fixed the DTS to have correct entries and updated USB driver to exclude 55xx relevant code from PPC build drivers/usb: added a new ehci halt function New halt function halts the EHCI controller. This is to be called during startup since spinlocks are not initialized at that point. Signed-off-by: SangeethaRao sangeetha@lsi.com --- arch/powerpc/boot/dts/acp342x.dts |7 --- drivers/usb/host/ehci-ci13612.c | 30 +- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/arch/powerpc/boot/dts/acp342x.dts b/arch/powerpc/boot/dts/acp342x.dts index 4db67df..8e400e3 100644 --- a/arch/powerpc/boot/dts/acp342x.dts +++ b/arch/powerpc/boot/dts/acp342x.dts @@ -112,9 +112,10 @@ }; USB0: usb@004a4000 { device_type = usb; -compatible = acp-usb; -enabled = 0; -reg = 0x004a4000 0x0002; +compatible = lsi,acp-usb; +enabled = 1; + reg = 0x20 0x004A 0x0 002, + 0x20 0x0040C000 0x0 0001000; interrupt-parent = MPIC; interrupts = 31; }; diff --git a/drivers/usb/host/ehci-ci13612.c b/drivers/usb/host/ehci-ci13612.c index b995a32..3badbd8 100644 --- a/drivers/usb/host/ehci-ci13612.c +++ b/drivers/usb/host/ehci-ci13612.c @@ -32,6 +32,8 @@ #include ehci-ci13612.h +static int ci13612_ehci_halt(struct ehci_hcd *ehci); + #ifdef CONFIG_LSI_USB_SW_WORKAROUND static void ci13612_usb_setup(struct usb_hcd *hcd) { @@ -104,7 +106,7 @@ static int ci13612_ehci_init(struct usb_hcd *hcd) ehci-sbrn = 0x20; /* Reset is only allowed on a stopped controller */ - ehci_halt(ehci); + ci13612_ehci_halt(ehci); /* reset controller */ ehci_reset(ehci); @@ -183,8 +185,11 @@ static int ci13612_ehci_run(struct usb_hcd *hcd) if (retval) return retval; + +#ifndef CONFIG_LSI_USB_SW_WORKAROUND /* Setup AMBA interface to force INCR16 busts when possible */ writel(3, USB_SBUSCFG); +#endif retval = ehci_run(hcd); if (retval) @@ -192,10 +197,12 @@ static int ci13612_ehci_run(struct usb_hcd *hcd) ci13612_fixup_txpburst(ehci); +#ifndef CONFIG_LSI_USB_SW_WORKAROUND /* Set ITC (bits [23:16]) to zero for interrupt on every micro-frame */ tmp = ehci_readl(ehci, ehci-regs-command); tmp = 0x; ehci_writel(ehci, tmp 0x, ehci-regs-command); +#endif return retval; } @@ -238,6 +245,7 @@ static int ci13612_ehci_probe(struct platform_device *pdev) irq = platform_get_irq(pdev, 0); if (irq 0) { + dev_dbg(pdev-dev, error getting irq number\n); retval = irq; goto fail_create_hcd; } @@ -255,9 +263,12 @@ static int ci13612_ehci_probe(struct platform_device *pdev) return -ENODEV; } + +#ifndef CONFIG_LSI_USB_SW_WORKAROUND /* Device using 32-bit addressing */ pdev-dev.coherent_dma_mask = DMA_BIT_MASK(32); pdev-dev.dma_mask = pdev-dev.coherent_dma_mask; +#endif hcd = usb_create_hcd(ci13612_hc_driver, pdev-dev, dev_name(pdev-dev)); @@ -316,6 +327,18 @@ static int ci13612_ehci_remove(struct platform_device *pdev) return 0; } +static int ci13612_ehci_halt(struct ehci_hcd *ehci) +{ + u32 temp; + + temp = ehci_readl(ehci, ehci-regs-command); + temp = ~CMD_RUN; + ehci_writel(ehci, temp, ehci-regs-command); + + return handshake(ehci, ehci-regs-status, + STS_HALT, STS_HALT, 16 * 125); +} + MODULE_ALIAS(platform:ci13612-ehci); static struct of_device_id ci13612_match[] = { @@ -323,6 +346,10 @@ static struct of_device_id ci13612_match[] = { .type = usb, .compatible = lsi,acp-usb, }, + { + .type = usb, + .compatible = acp-usb, + }, {}, }; @@ -333,4 +360,5 @@ static struct platform_driver ci13612_ehci_driver = { .name = ci13612-ehci, .of_match_table = ci13612_match, }, + }; -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 10/26] LSI AXM55xx: Enable multi-cluster wfe/sev
From: David Mercado david.merc...@windriver.com By default, the system does not enable the use of ARM wfe/sev instructions across clusters, which breaks things like arch_spin_lock. This patch enables this feature. LSI AXM55xx: Disable use of wfe/sev in arch_spin_lock By default, the system does not enable the use of ARM wfe/sev instructions across clusters, which breaks things like arch_spin_lock. The previous solution to enable wfe/sev to work across clusters still resulted in CPU stalls. This patch instead removes the use of wfe/sev in arch/arm/include/ asm/spinlock.h altogether. Signed-off-by: David Mercado david.merc...@windriver.com --- arch/arm/include/asm/spinlock.h |4 arch/arm/mach-axxia/axxia.c |1 + 2 files changed, 5 insertions(+) diff --git a/arch/arm/include/asm/spinlock.h b/arch/arm/include/asm/spinlock.h index 65fa3c8..022ef90 100644 --- a/arch/arm/include/asm/spinlock.h +++ b/arch/arm/include/asm/spinlock.h @@ -37,6 +37,10 @@ \ nop.w \ ) +#elif CONFIG_ARCH_AXXIA || CONFIG_ARCH_AXXIA_SIM +/* Disable use of wfe/sev in Axxia. */ +#define SEV +#define WFE(cond) #else #define SEVALT_SMP(sev, nop) #define WFE(cond) ALT_SMP(wfe cond, nop) diff --git a/arch/arm/mach-axxia/axxia.c b/arch/arm/mach-axxia/axxia.c index 7b725ef..d87bb61 100644 --- a/arch/arm/mach-axxia/axxia.c +++ b/arch/arm/mach-axxia/axxia.c @@ -253,6 +253,7 @@ l3_set_pstate(void __iomem *l3ctrl, unsigned int req, unsigned int act) void __init axxia_dt_init(void) { void __iomem *l3ctrl; + void __iomem *apb2ser3_base; int rc; /* Enable L3-cache */ -- 1.7.9.5 -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 13/26] arch/arm/mach-axxi: Updated DDR Retention to Wokr from Interrupt Context
From: John Jacques john.jacq...@lsi.com As procfs shouldn't be used as a module to user interface, switch to sysfs. Signed-off-by: John Jacques john.jacq...@lsi.com --- arch/arm/mach-axxia/Makefile |1 + arch/arm/mach-axxia/axxia.c|3 + arch/arm/mach-axxia/ddr_retention.c| 13 +- arch/arm/mach-axxia/include/mach/ncr.h | 44 +++ arch/arm/mach-axxia/ncr.c | 488 drivers/misc/Kconfig |2 +- drivers/misc/lsi-smmon.c | 130 - drivers/net/ethernet/lsi/lsi_acp_net.c |9 +- 8 files changed, 619 insertions(+), 71 deletions(-) create mode 100644 arch/arm/mach-axxia/include/mach/ncr.h create mode 100644 arch/arm/mach-axxia/ncr.c diff --git a/arch/arm/mach-axxia/Makefile b/arch/arm/mach-axxia/Makefile index 2e9ddf7..85cee8f 100644 --- a/arch/arm/mach-axxia/Makefile +++ b/arch/arm/mach-axxia/Makefile @@ -5,6 +5,7 @@ obj-y += wrappers.o obj-y += axxia.o obj-y += clock.o obj-y += io.o +obj-y += ncr.o obj-y += timers.o obj-y += pci.o obj-y += ddr_retention.o diff --git a/arch/arm/mach-axxia/axxia.c b/arch/arm/mach-axxia/axxia.c index d87bb61..0e368a4 100644 --- a/arch/arm/mach-axxia/axxia.c +++ b/arch/arm/mach-axxia/axxia.c @@ -49,6 +49,7 @@ #include mach/hardware.h #include mach/timers.h #include mach/axxia-gic.h +#include mach/ncr.h #include axxia.h #include pci.h #include i2c.h @@ -273,6 +274,8 @@ void __init axxia_dt_init(void) axxia_auxdata_lookup, NULL); pm_power_off = NULL; /* TBD */ + ncr_init(); + spi_register_board_info(spi_devs, ARRAY_SIZE(spi_devs)); /* diff --git a/arch/arm/mach-axxia/ddr_retention.c b/arch/arm/mach-axxia/ddr_retention.c index 988d361..1e4ba34 100644 --- a/arch/arm/mach-axxia/ddr_retention.c +++ b/arch/arm/mach-axxia/ddr_retention.c @@ -32,7 +32,7 @@ #include asm/io.h #include asm/cacheflush.h -#include ../../../drivers/misc/lsi-ncr.h ++#include mach/ncr.h extern void flush_l3(void); static void __iomem *nca_address; @@ -195,6 +195,7 @@ void initiate_retention_reset(void) if (NULL == nca_address) nca_address = ioremap(0x00202010ULL, 0x2); + BUG(); /* send stop message to other CPUs */ local_irq_disable(); @@ -215,8 +216,7 @@ void initiate_retention_reset(void) ncr_write(NCP_REGION_ID(15, 0), 0x414, 4, value); /* unlock reset register for later */ - apb_base = ioremap(0x201000, 0x4); - writel(0x00ab, apb_base + 0x31000); /* Access Key */ + writel(0x00ab, apb_base + 0x31000); /* Access Key */ /* prepare to put DDR in self refresh power-down mode */ /* first read the CTL_244 register and OR in the LP_CMD value */ @@ -246,6 +246,7 @@ void initiate_retention_reset(void) ncp_ddr_shutdown(); } +EXPORT_SYMBOL(initiate_retention_reset); static ssize_t axxia_ddr_retention_trigger(struct file *file, const char __user *buf, @@ -268,9 +269,13 @@ void axxia_ddr_retention_init(void) printk(KERN_INFO Failed to register DDR retention proc interface\n); #endif + + apb_base = ioremap(0x201000, 0x4); + nca_address = ioremap(0x00202010ULL, 0x2); + + printk(ddr_retention: ready\n); } -EXPORT_SYMBOL(initiate_retention_reset); #else diff --git a/arch/arm/mach-axxia/include/mach/ncr.h b/arch/arm/mach-axxia/include/mach/ncr.h new file mode 100644 index 000..926d366 --- /dev/null +++ b/arch/arm/mach-axxia/include/mach/ncr.h @@ -0,0 +1,44 @@ +/* + * arch/arm/mach-axxia/include/mach/ncr.h + * + * Copyright (C) 2010 LSI + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef __ARCH_ARM_MACH_AXXIA_NCR_H +#define __ARCH_ARM_MACH_AXXIA_NCR_H + +#ifndef NCP_REGION_ID +#define NCP_REGION_ID(node, target) \ +((unsigned long) node) 0x) 16) | ((target) 0x))) +#endif
Re: [linux-yocto] [PATCH 16/57] LSI AXM55xx: Code syntax - checkpatch updates to Update RIO interfaces
Another change that needs to be squashed. I'll stop making this comment, but it should be applied to the whole series. Bruce On 14-03-18 12:56 AM, Charlie Paul wrote: --- drivers/net/rionet.c | 61 +++--- 1 file changed, 28 insertions(+), 33 deletions(-) diff --git a/drivers/net/rionet.c b/drivers/net/rionet.c index bf79034..fbea401 100644 --- a/drivers/net/rionet.c +++ b/drivers/net/rionet.c @@ -104,10 +104,9 @@ static int rionet_rx_clean(struct net_device *ndev) if (!rnet-rx_skb[i]) continue; - - if (!(data = rio_get_inb_message(rnet-mport, RIONET_MAILBOX, -RIONET_LETTER, sz, slot, -destid))) + data = rio_get_inb_message(rnet-mport, RIONET_MAILBOX, + RIONET_LETTER, sz, slot, destid); + if (!data) break; rnet-rx_skb[i]-data = data; @@ -170,7 +169,7 @@ static int rionet_queue_tx_msg(struct sk_buff *skb, struct net_device *ndev, rnet-tx_slot = (RIONET_TX_RING_SIZE - 1); if (netif_msg_tx_queued(rnet)) - printk(KERN_INFO %s: queued skb len %8.8x\n, DRV_NAME, + pr_info(%s: queued skb len %8.8x\n, DRV_NAME, skb-len); return 0; @@ -193,7 +192,7 @@ static int rionet_start_xmit(struct sk_buff *skb, struct net_device *ndev) if ((rnet-tx_cnt + add_num) RIONET_TX_RING_SIZE) { netif_stop_queue(ndev); spin_unlock_irqrestore(rnet-tx_lock, flags); - printk(KERN_ERR %s: BUG! Tx Ring full when queue awake!\n, + pr_err(%s: BUG! Tx Ring full when queue awake!\n, ndev-name); return NETDEV_TX_BUSY; } @@ -235,7 +234,7 @@ static void rionet_dbell_event(struct rio_mport *mport, void *dev_id, u16 sid, u rnet = netdev_priv(ndev); if (netif_msg_intr(rnet)) - printk(KERN_INFO %s: doorbell sid %4.4x tid %4.4x info %4.4x, + pr_info(%s: doorbell sid %4.4x tid %4.4x info %4.4x, DRV_NAME, sid, tid, info); if (info == RIONET_DOORBELL_JOIN) { if (!nets[rnet-mport-id].active[sid]) { @@ -255,8 +254,7 @@ static void rionet_dbell_event(struct rio_mport *mport, void *dev_id, u16 sid, u nets[rnet-mport-id].nact--; } else { if (netif_msg_intr(rnet)) - printk(KERN_WARNING %s: unhandled doorbell\n, - DRV_NAME); + pr_warn(%s: unhandled doorbell\n, DRV_NAME); } } @@ -272,7 +270,7 @@ static void rionet_inb_msg_event(struct rio_mport *mport, void *dev_id, int mbox rnet = netdev_priv(ndev); if (netif_msg_intr(rnet)) - printk(KERN_INFO %s: inbound message event, mbox %d slot %d\n, + pr_info(%s: inbound message event, mbox %d slot %d\n, DRV_NAME, mbox, slot); spin_lock(rnet-lock); @@ -295,9 +293,9 @@ static void rionet_outb_msg_event(struct rio_mport *mport, void *dev_id, int mbo spin_lock(rnet-lock); if (netif_msg_intr(rnet)) - printk(KERN_INFO - %s: outbound message event, mbox %d slot %d\n, - DRV_NAME, mbox, slot); + pr_info( + %s: outbound message event, mbox %d slot %d\n, + DRV_NAME, mbox, slot); while (rnet-tx_cnt (rnet-ack_slot != slot)) { /* dma unmap single */ @@ -321,7 +319,7 @@ static int rionet_open(struct net_device *ndev) struct rionet_private *rnet = netdev_priv(ndev); if (netif_msg_ifup(rnet)) - printk(KERN_INFO %s: open\n, DRV_NAME); + pr_info(%s: open\n, DRV_NAME); rc = rio_request_inb_dbell(rnet-mport, (void *)ndev, @@ -332,10 +330,10 @@ static int rionet_open(struct net_device *ndev) goto out; rc = rio_request_inb_mbox(rnet-mport, - (void *)ndev, - RIONET_MAILBOX, - RIONET_RX_RING_SIZE, - rionet_inb_msg_event); + (void *)ndev, + RIONET_MAILBOX, + RIONET_RX_RING_SIZE, + rionet_inb_msg_event); if (rc 0) goto out; @@ -366,9 +364,8 @@ static int rionet_open(struct net_device *ndev) peer-res = rio_request_outb_dbell(peer-rdev, RIONET_DOORBELL_JOIN, RIONET_DOORBELL_LEAVE); - if (!peer || !peer-res) - { -
Re: [linux-yocto] [PATCH 15/57] LSI AXM55xx/rionet: Update RIO interfaces with latest changes.
Can we expand on 'latest changes' ? Reading this, we have no idea what this adds .. Bruce On 14-03-18 12:56 AM, Charlie Paul wrote: From: Michael Bringmann michael.bringm...@lsi.com Signed-off-by: Michael Bringmann michael.bringm...@lsi.com --- drivers/net/rionet.c | 112 -- 1 file changed, 71 insertions(+), 41 deletions(-) diff --git a/drivers/net/rionet.c b/drivers/net/rionet.c index f433b59..bf79034 100644 --- a/drivers/net/rionet.c +++ b/drivers/net/rionet.c @@ -44,6 +44,7 @@ MODULE_LICENSE(GPL); #define RIONET_DOORBELL_LEAVE 0x1001 #define RIONET_MAILBOX0 +#define RIONET_LETTER 0 #define RIONET_TX_RING_SIZE CONFIG_RIONET_TX_SIZE #define RIONET_RX_RING_SIZE CONFIG_RIONET_RX_SIZE @@ -98,10 +99,15 @@ static int rionet_rx_clean(struct net_device *ndev) i = rnet-rx_slot; do { + int sz, slot; + u16 destid; + if (!rnet-rx_skb[i]) continue; - if (!(data = rio_get_inb_message(rnet-mport, RIONET_MAILBOX))) + if (!(data = rio_get_inb_message(rnet-mport, RIONET_MAILBOX, +RIONET_LETTER, sz, slot, +destid))) break; rnet-rx_skb[i]-data = data; @@ -145,8 +151,13 @@ static int rionet_queue_tx_msg(struct sk_buff *skb, struct net_device *ndev, struct rio_dev *rdev) { struct rionet_private *rnet = netdev_priv(ndev); + intmbox_dest = 0; + intletter = 0; + intflags = 0; + void *cookie = NULL; - rio_add_outb_message(rnet-mport, rdev, 0, skb-data, skb-len); + rio_add_outb_message(rnet-mport, rdev, mbox_dest, letter, flags, +skb-data, skb-len, cookie); rnet-tx_skb[rnet-tx_slot] = skb; ndev-stats.tx_packets++; @@ -174,11 +185,7 @@ static int rionet_start_xmit(struct sk_buff *skb, struct net_device *ndev) unsigned long flags; int add_num = 1; - local_irq_save(flags); - if (!spin_trylock(rnet-tx_lock)) { - local_irq_restore(flags); - return NETDEV_TX_LOCKED; - } + spin_lock_irqsave(rnet-tx_lock, flags); if (is_multicast_ether_addr(eth-h_dest)) add_num = nets[rnet-mport-id].nact; @@ -219,9 +226,14 @@ static void rionet_dbell_event(struct rio_mport *mport, void *dev_id, u16 sid, u u16 info) { struct net_device *ndev = dev_id; - struct rionet_private *rnet = netdev_priv(ndev); + struct rionet_private *rnet; struct rionet_peer *peer; + if (ndev == NULL) + return; + + rnet = netdev_priv(ndev); + if (netif_msg_intr(rnet)) printk(KERN_INFO %s: doorbell sid %4.4x tid %4.4x info %4.4x, DRV_NAME, sid, tid, info); @@ -252,22 +264,33 @@ static void rionet_inb_msg_event(struct rio_mport *mport, void *dev_id, int mbox { int n; struct net_device *ndev = dev_id; - struct rionet_private *rnet = netdev_priv(ndev); + struct rionet_private *rnet; + + if (ndev == NULL) + return; + + rnet = netdev_priv(ndev); if (netif_msg_intr(rnet)) printk(KERN_INFO %s: inbound message event, mbox %d slot %d\n, DRV_NAME, mbox, slot); spin_lock(rnet-lock); - if ((n = rionet_rx_clean(ndev)) != rnet-rx_slot) + n = rionet_rx_clean(ndev); + if (n != rnet-rx_slot) rionet_rx_fill(ndev, n); spin_unlock(rnet-lock); } -static void rionet_outb_msg_event(struct rio_mport *mport, void *dev_id, int mbox, int slot) +static void rionet_outb_msg_event(struct rio_mport *mport, void *dev_id, int mbox, int slot, void *cookie) { struct net_device *ndev = dev_id; - struct rionet_private *rnet = netdev_priv(ndev); + struct rionet_private *rnet; + + if (ndev == NULL) + return; + + rnet = netdev_priv(ndev); spin_lock(rnet-lock); @@ -300,25 +323,29 @@ static int rionet_open(struct net_device *ndev) if (netif_msg_ifup(rnet)) printk(KERN_INFO %s: open\n, DRV_NAME); - if ((rc = rio_request_inb_dbell(rnet-mport, - (void *)ndev, - RIONET_DOORBELL_JOIN, - RIONET_DOORBELL_LEAVE, - rionet_dbell_event)) 0) + rc = rio_request_inb_dbell(rnet-mport, + (void *)ndev, + RIONET_DOORBELL_JOIN, + RIONET_DOORBELL_LEAVE, +
Re: [linux-yocto] [PATCH 17/57] LSI AXM55xx: Configuration updates
Same comment, we can summarize what it adds to the device tree in the commit log :) Bruce On 14-03-18 12:56 AM, Charlie Paul wrote: From: Michael Bringmann michael.bringm...@lsi.com Update the powerpc FDT settings for the latest AXXIA RIO code. Signed-off-by: Michael Bringmann michael.bringm...@lsi.com --- arch/powerpc/boot/dts/acp25xx.dts | 49 + arch/powerpc/boot/dts/acp342x.dts | 37 ++ arch/powerpc/boot/dts/acp344x.dts | 63 + arch/powerpc/boot/dts/acp35xx.dts | 25 +-- 4 files changed, 82 insertions(+), 92 deletions(-) diff --git a/arch/powerpc/boot/dts/acp25xx.dts b/arch/powerpc/boot/dts/acp25xx.dts index 4db67df..02f6a28 100644 --- a/arch/powerpc/boot/dts/acp25xx.dts +++ b/arch/powerpc/boot/dts/acp25xx.dts @@ -90,7 +90,7 @@ clock-frequency = 0; // Filled in by zImage UART0: serial@00404000 { device_type = serial; -compatible = acp-uart0; +compatible = lsi,acp-uart0; enabled = 1; reg = 0x00404000 0x1000; clock-reg = 0x00408040 0x20; @@ -101,7 +101,7 @@ }; UART1: serial@00405000 { device_type = serial; -compatible = acp-uart1; +compatible = lsi,acp-uart1; enabled = 0; reg = 0x00405000 0x1000; clock-reg = 0x00408060 0x20; @@ -112,21 +112,21 @@ }; USB0: usb@004a4000 { device_type = usb; -compatible = acp-usb; +compatible = lsi,acp-usb; enabled = 0; reg = 0x004a4000 0x0002; interrupt-parent = MPIC; interrupts = 31; }; I2C: i2c@00403000 { -compatible = acp-i2c; +compatible = lsi,acp-i2c; enabled = 0; reg = 0x00403000 0x1000; interrupt-parent = MPIC; interrupts = 21; }; SSP: ssp@00402000 { -compatible = acp-ssp; +compatible = arm,acp-ssp; enabled = 0; reg = 0x00402000 0x1000; interrupt-parent = MPIC; @@ -134,14 +134,14 @@ }; NAND: nand@0044 { device_type = nand; -compatible = acp-nand; +compatible = lsi,acp-nand; enabled = 1; reg = 0x0044 0x2 0x0040c000 0x1000; }; FEMAC: femac@0048 { device_type = network; -compatible = acp-femac; +compatible = lsi,acp-femac; enabled = 1; reg = 0x0048 0x1000 0x00481000 0x1000 @@ -283,27 +283,20 @@ ; }; -rio0: rapidio@f002 { -compatible = acp,rapidio-delta; +rio0: rapidio@0x21 { +index = 0; +status = okay; +#address-cells = 2; +#size-cells = 2; +compatible = axxia,rapidio-delta; device_type = rapidio; -enabled = 0; -#size = 0;/* 0 = (256, small system) - * 1 = (65536, large system) */ -/* -#host-device-id = 1; -*/ -/* =0 for enum; 0 for disc */ -/* -num-dme = 1 0 1; -*/ -/* (#outb-mseg, #outb-sseg, #inb */ -/* -num-odme-mseg-desc = 2 128 128; -num-odme-sseg-desc = 1 256; -num-idme-desc = 1 512; -*/ -reg = 0xf002 0x2 0x1000; /* SRIO Conf region */ -interrupt-parent = MPIC; -interrupts = 30 0x2 /* NCP_INTR_MPIC_SRC_AXIS_SRIO */; +reg =
Re: [linux-yocto] [PATCH 31/57] arm/axxia: improved robustness for DDR retention
On 14-03-18 12:56 AM, Charlie Paul wrote: From: Gary McGee gary.mc...@lsi.com Again, we are missing the what we changed part of the commit log .. and why it works! Bruce Signed-off-by: Gary McGee gary.mc...@lsi.com --- arch/arm/mach-axxia/Makefile|2 +- arch/arm/mach-axxia/ddr_retention.c | 96 -- arch/arm/mach-axxia/ddr_shutdown.c | 331 +++ 3 files changed, 365 insertions(+), 64 deletions(-) create mode 100644 arch/arm/mach-axxia/ddr_shutdown.c diff --git a/arch/arm/mach-axxia/Makefile b/arch/arm/mach-axxia/Makefile index 4d41b15..b4b8dd2 100644 --- a/arch/arm/mach-axxia/Makefile +++ b/arch/arm/mach-axxia/Makefile @@ -7,7 +7,7 @@ obj-y += io.o obj-y += ncr.o obj-y += timers.o obj-y += pci.o -obj-y += ddr_retention.o +obj-y += ddr_retention.o ddr_shutdown.o obj-$(CONFIG_I2C) += i2c.o obj-$(CONFIG_SMP) += platsmp.o headsmp.o obj-$(CONFIG_ARCH_AXXIA_GIC) += axxia-gic.o diff --git a/arch/arm/mach-axxia/ddr_retention.c b/arch/arm/mach-axxia/ddr_retention.c index bcedf33..35dbfcb 100644 --- a/arch/arm/mach-axxia/ddr_retention.c +++ b/arch/arm/mach-axxia/ddr_retention.c @@ -36,7 +36,6 @@ static void __iomem *nca; static void __iomem *apb; static void __iomem *dickens; -static void __iomem *femac; static int ddr_retention_enabled; enum { @@ -229,60 +228,33 @@ static inline void cpu_disable_l2_prefetch(void) } static inline void -ncp_ddr_shutdown(unsigned long ctl_244) +reset_elm_trace(void) { - unsigned long value; - - cpu_disable_l2_prefetch(); - - /* -* put SDRAM in self-refresh mode -*/ - ncr_write(NCP_REGION_ID(34, 0), 0x3d0, 4, ctl_244); - ncr_write(NCP_REGION_ID(15, 0), 0x3d0, 4, ctl_244); - - /* check interrupt status for completion */ - /* CDR1 - word offset 0x104 (byte offset 0x410) */ - do { - ncr_read(NCP_REGION_ID(34, 0), 0x410, 4, value); - } while ((value 0x0200) == 0); + /* reset and disable ELM trace */ + ncr_register_write(htonl(0x000fff04), (unsigned *) (apb + 0x68000)); + ncr_register_write(htonl(0x000fff04), (unsigned *) (apb + 0x78000)); - do { - ncr_read(NCP_REGION_ID(15, 0), 0x410, 4, value); - } while ((value 0x0200) == 0); - - /* -Indicate DDR Retention Reset -*/ - - /* set bit 0 of persist_scratch */ - writel_relaxed(0x0001, apb + 0x300dc); + /* reset ELM statistics */ + ncr_register_write(htonl(0x1), (unsigned *) (apb + 0x60230)); + ncr_register_write(htonl(0x1), (unsigned *) (apb + 0x70230)); - /* -* Issue Chip Reset -*/ + /* enable ELM trace */ + ncr_register_write(htonl(0x000fff01), (unsigned *) (apb + 0x68000)); + ncr_register_write(htonl(0x000fff01), (unsigned *) (apb + 0x78000)); +} - /* Intrnl Boot, 0x Target */ - writel_relaxed(0x0040, apb + 0x31004); - /* Set ResetReadDone */ - writel_relaxed(0x8000, apb + 0x3180c); - /* Chip Reset */ - writel_relaxed(0x00080802, apb + 0x31008); - wfi(); - while (1) - ; - __asm__ __volatile__(nop\n\t); +extern void ncp_ddr_shutdown(void *, void *, unsigned long ); - return; -} void initiate_retention_reset(void) { unsigned long ctl_244 = 0; unsigned long value; - unsigned cpu_id; + unsigned cpu_id ; + volatile long tmp; + volatile long *ptmp; if (0 == ddr_retention_enabled) { pr_info(DDR Retention Reset is Not Enabled\n); @@ -292,19 +264,17 @@ initiate_retention_reset(void) if (NULL == nca || NULL == apb || NULL == dickens) BUG(); - /* kill the femac */ - writel(0x8000, (femac+0x2000)); - value = readl(femac + 0x2000); - preempt_disable(); cpu_id = smp_processor_id(); - udelay(1000); + /* send stop message to other CPUs */ local_irq_disable(); + local_fiq_disable(); asm volatile (dsb : : : memory); asm volatile (dmb : : : memory); system_state = SYSTEM_RESTART; smp_send_stop(); + udelay(1000); flush_cache_all(); flush_l3(); @@ -314,11 +284,6 @@ initiate_retention_reset(void) quiesce_vp_engine(AXXIA_ENGINE_CNAL); - /* disable sysmem interrupts */ - value = 0; - ncr_write(NCP_REGION_ID(34, 0), 0x414, 4, value); - ncr_write(NCP_REGION_ID(15, 0), 0x414, 4, value); - /* unlock reset register for later */ writel(0x00ab, apb + 0x31000); /* Access Key */ @@ -327,21 +292,27 @@ initiate_retention_reset(void)
Re: [linux-yocto] [linux-yocto-dev][PATCH] meta: Add kernel meta to support edgerouter
On 03/18/2014 11:32 PM, Bruce Ashfield wrote: On 14-03-18 01:09 AM, wei.y...@windriver.com wrote: From: Yang Wei wei.y...@windriver.com Signed-off-by: Yang Wei wei.y...@windriver.com --- Hi Bruce, Just like what you knew, this BSP would be released in yocto 1.6, so I added the kernel meta based on linux-yotco-dev. I've created the standard/edgerouter branch, and merged the meta data. We'll need to get a summary of what works on the board in a README, but there's no need to hold this merge on it. Bruce In fact, there is a warning call trace during boot stage, I already created a patch and sent MIPS linux ML, once this review on my patch is done, I would send it to you. Additionally, I also would add this summary in README.hardware, and then also send it to you. Thanks Wei Thanks Wei .../bsp/edgerouter/edgerouter-standard.scc | 11 .../cfg/kernel-cache/bsp/edgerouter/edgerouter.cfg | 67 .../cfg/kernel-cache/bsp/edgerouter/edgerouter.scc |3 + 3 files changed, 81 insertions(+) create mode 100644 meta/cfg/kernel-cache/bsp/edgerouter/edgerouter-standard.scc create mode 100644 meta/cfg/kernel-cache/bsp/edgerouter/edgerouter.cfg create mode 100644 meta/cfg/kernel-cache/bsp/edgerouter/edgerouter.scc diff --git a/meta/cfg/kernel-cache/bsp/edgerouter/edgerouter-standard.scc b/meta/cfg/kernel-cache/bsp/edgerouter/edgerouter-standard.scc new file mode 100644 index 000..5d6c692 --- /dev/null +++ b/meta/cfg/kernel-cache/bsp/edgerouter/edgerouter-standard.scc @@ -0,0 +1,11 @@ +define KMACHINE edgerouter +define KTYPE standard +define KARCH mips +include ktypes/standard/standard.scc + +branch edgerouter + +include edgerouter.scc + +# default policy for standard kernels +include features/profiling/profiling.scc diff --git a/meta/cfg/kernel-cache/bsp/edgerouter/edgerouter.cfg b/meta/cfg/kernel-cache/bsp/edgerouter/edgerouter.cfg new file mode 100644 index 000..7362468 --- /dev/null +++ b/meta/cfg/kernel-cache/bsp/edgerouter/edgerouter.cfg @@ -0,0 +1,67 @@ +#SOC +CONFIG_CAVIUM_OCTEON_SOC=y +CONFIG_CAVIUM_CN63XXP1=y +CONFIG_CAVIUM_OCTEON_CVMSEG_SIZE=2 + +#Kernel +CONFIG_SMP=y +CONFIG_NR_CPUS=32 +#Executable file formats +CONFIG_MIPS32_COMPAT=y +CONFIG_MIPS32_O32=y +CONFIG_MIPS32_N32=y + + +#PCI +CONFIG_PCI=y +CONFIG_PCI_MSI=y + +#I2C +CONFIG_I2C=y +CONFIG_I2C_OCTEON=y + +CONFIG_HW_RANDOM_OCTEON=y + +#SPI +CONFIG_SPI=y +CONFIG_SPI_OCTEON=y +#RTC +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_DS1307=y + +#Misc +CONFIG_EEPROM_AT24=y +CONFIG_EEPROM_AT25=y +CONFIG_OCTEON_WDT=y + +CONFIG_STAGING=y + +#Ethernet +CONFIG_OCTEON_ETHERNET=y +CONFIG_OCTEON_MGMT_ETHERNET=y +CONFIG_MDIO_OCTEON=y + +#PHY +CONFIG_MARVELL_PHY=y +CONFIG_BROADCOM_PHY=y +CONFIG_BCM87XX_PHY=y + + +#USB +CONFIG_USB=y +CONFIG_OCTEON_USB=y +CONFIG_USB_OCTEON_EHCI=y +CONFIG_USB_OCTEON_OHCI=y +CONFIG_USB_OCTEON2_COMMON=y + +CONFIG_MTD=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_CFI=y +CONFIG_MTD_CFI_AMDSTD=y +CONFIG_MTD_CMDLINE_PARTS=y + +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_NR_UARTS=2 +CONFIG_SERIAL_8250_RUNTIME_UARTS=2 +CONFIG_SERIAL_8250_DW=y diff --git a/meta/cfg/kernel-cache/bsp/edgerouter/edgerouter.scc b/meta/cfg/kernel-cache/bsp/edgerouter/edgerouter.scc new file mode 100644 index 000..33f26cc --- /dev/null +++ b/meta/cfg/kernel-cache/bsp/edgerouter/edgerouter.scc @@ -0,0 +1,3 @@ +kconf hardware edgerouter.cfg +include cfg/usb-mass-storage.scc +include cfg/fs/vfat.scc -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 0/2] [PATCH] linux-yocto-3.10: meta: new config layer for Valley Island BSP add request
From: Chang, Rebecca Swee Fun rebecca.swee.fun.ch...@intel.com Hi all, This is a pull request for Valley Island BSP in linux-yocto-3.10. This pull request is to add configs and scc files for Valley Island BSP and also configs for Valley Island LPSS I/O device drivers. The PCI mode Valley Island I/O device drivers are in plan to host in a feature branch resides in linux-yocto-3.10. The feature branch will be send out for review in the near future. Meanwhile, Valley Island BSP will only supports ACPI mode device drivers that was being backported from LTSI kernel. These patches were meant to pull into linux-yocto-3.10 meta branch. Thanks. Rebecca The following changes since commit 284e9589436a5b199cf44b7261640c944558a35e: meta: efi.cfg/efi-ext.cfg: add EFIVAR_FS to default efi fragment (2014-03-13 12:26:08 -0400) are available in the git repository at: git://git.yoctoproject.org/linux-yocto-contrib rebeccas/meta-dev-1 http://git.yoctoproject.org/cgit.cgi/linux-yocto-contrib/log/?h=rebeccas/meta-dev-1 Chang, Rebecca Swee Fun (2): meta: add cfg and scc files for valleyisland io features meta: add new bsp config layer for valleyisland .../valleyisland/valleyisland-32-preempt-rt.scc| 16 ++ .../bsp/valleyisland/valleyisland-32-standard.scc | 15 + .../bsp/valleyisland/valleyisland-32.scc | 22 .../bsp/valleyisland/valleyisland-preempt-rt.scc | 16 ++ .../bsp/valleyisland/valleyisland-standard.scc | 15 + .../kernel-cache/bsp/valleyisland/valleyisland.cfg | 58 .../kernel-cache/bsp/valleyisland/valleyisland.scc | 22 .../features/valleyisland-io/valleyisland-io.cfg | 30 ++ .../features/valleyisland-io/valleyisland-io.scc |4 ++ 9 files changed, 198 insertions(+) create mode 100644 meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-32-preempt-rt.scc create mode 100644 meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-32-standard.scc create mode 100644 meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-32.scc create mode 100644 meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-preempt-rt.scc create mode 100644 meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-standard.scc create mode 100644 meta/cfg/kernel-cache/bsp/valleyisland/valleyisland.cfg create mode 100644 meta/cfg/kernel-cache/bsp/valleyisland/valleyisland.scc create mode 100644 meta/cfg/kernel-cache/features/valleyisland-io/valleyisland-io.cfg create mode 100644 meta/cfg/kernel-cache/features/valleyisland-io/valleyisland-io.scc -- 1.7.10.4 -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto
[linux-yocto] [PATCH 2/2] meta: add new bsp config layer for valleyisland
From: Chang, Rebecca Swee Fun rebecca.swee.fun.ch...@intel.com Added configs and scc files for Valley Island BSP. Signed-off-by: Chang, Rebecca Swee Fun rebecca.swee.fun.ch...@intel.com --- .../valleyisland/valleyisland-32-preempt-rt.scc| 16 ++ .../bsp/valleyisland/valleyisland-32-standard.scc | 15 + .../bsp/valleyisland/valleyisland-32.scc | 22 .../bsp/valleyisland/valleyisland-preempt-rt.scc | 16 ++ .../bsp/valleyisland/valleyisland-standard.scc | 15 + .../kernel-cache/bsp/valleyisland/valleyisland.cfg | 58 .../kernel-cache/bsp/valleyisland/valleyisland.scc | 22 7 files changed, 164 insertions(+) create mode 100644 meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-32-preempt-rt.scc create mode 100644 meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-32-standard.scc create mode 100644 meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-32.scc create mode 100644 meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-preempt-rt.scc create mode 100644 meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-standard.scc create mode 100644 meta/cfg/kernel-cache/bsp/valleyisland/valleyisland.cfg create mode 100644 meta/cfg/kernel-cache/bsp/valleyisland/valleyisland.scc diff --git a/meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-32-preempt-rt.scc b/meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-32-preempt-rt.scc new file mode 100644 index 000..a733773 --- /dev/null +++ b/meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-32-preempt-rt.scc @@ -0,0 +1,16 @@ +define KMACHINE valleyisland-32 +define KTYPE preempt-rt +define KARCH i386 + +# no new branch required, re-use the ktypes/preempt-rt/preempt-rt.scc branch +include ktypes/preempt-rt/preempt-rt.scc + +include valleyisland-32.scc + +include cfg/efi-ext.scc + +# default policy for preempt-rt kernels +include cfg/usb-mass-storage.scc +include cfg/boot-live.scc +include features/latencytop/latencytop.scc +include features/profiling/profiling.scc diff --git a/meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-32-standard.scc b/meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-32-standard.scc new file mode 100644 index 000..3050bc7 --- /dev/null +++ b/meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-32-standard.scc @@ -0,0 +1,15 @@ +define KMACHINE valleyisland-32 +define KTYPE standard +define KARCH i386 + +include ktypes/standard/standard.scc + +include valleyisland-32.scc + +include cfg/efi-ext.scc + +# default policy for standard kernels +include cfg/usb-mass-storage.scc +include cfg/boot-live.scc +include features/latencytop/latencytop.scc +include features/profiling/profiling.scc diff --git a/meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-32.scc b/meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-32.scc new file mode 100644 index 000..3f71467 --- /dev/null +++ b/meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-32.scc @@ -0,0 +1,22 @@ +kconf hardware valleyisland.cfg + +include cfg/x86.scc +include cfg/efi.scc +include cfg/dmaengine.scc +include cfg/8250.scc + +include features/power/intel.scc + +include features/i2c/i2c.scc +include features/i2c/i2cdev.scc + +include features/i915/i915.scc + +include features/intel-e1/intel-e100.scc +include features/intel-e1/intel-e1.scc + +include features/spi/spi.scc +include features/spi/spidev.scc + +include features/usb/ehci-hcd.scc +include features/usb/xhci-hcd.scc diff --git a/meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-preempt-rt.scc b/meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-preempt-rt.scc new file mode 100644 index 000..ed11e0d --- /dev/null +++ b/meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-preempt-rt.scc @@ -0,0 +1,16 @@ +define KMACHINE valleyisland +define KTYPE preempt-rt +define KARCH x86_64 + +# no new branch required, re-use the ktypes/preempt-rt/preempt-rt.scc branch +include ktypes/preempt-rt/preempt-rt.scc + +include valleyisland.scc + +include cfg/efi-ext.scc + +# default policy for preempt-rt kernels +include cfg/usb-mass-storage.scc +include cfg/boot-live.scc +include features/latencytop/latencytop.scc +include features/profiling/profiling.scc diff --git a/meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-standard.scc b/meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-standard.scc new file mode 100644 index 000..1d946be --- /dev/null +++ b/meta/cfg/kernel-cache/bsp/valleyisland/valleyisland-standard.scc @@ -0,0 +1,15 @@ +define KMACHINE valleyisland +define KTYPE standard +define KARCH x86_64 + +include ktypes/standard/standard.scc + +include valleyisland.scc + +include cfg/efi-ext.scc + +# default policy for standard kernels +include cfg/usb-mass-storage.scc +include cfg/boot-live.scc +include features/latencytop/latencytop.scc +include features/profiling/profiling.scc diff --git a/meta/cfg/kernel-cache/bsp/valleyisland/valleyisland.cfg b/meta/cfg/kernel-cache/bsp/valleyisland/valleyisland.cfg
Re: [linux-yocto] [PATCH 1/2] meta: add cfg and scc files for valleyisland io features
On 3/19/14, 3:20, rebecca.swee.fun.ch...@intel.com rebecca.swee.fun.ch...@intel.com wrote: From: Chang, Rebecca Swee Fun rebecca.swee.fun.ch...@intel.com Added Valley Island LPSS I/O device drivers configs. The feature looks good, but we do need to include a more complete description in the commit log. Specifics about what Valley Island is, for example, would be welcome. Which CPU/SoC in particular. Some of what you mentioned in your cover letter might better added to the two commit messages themselves. -- Darren Signed-off-by: Chang, Rebecca Swee Fun rebecca.swee.fun.ch...@intel.com --- .../features/valleyisland-io/valleyisland-io.cfg | 30 .../features/valleyisland-io/valleyisland-io.scc |4 +++ 2 files changed, 34 insertions(+) create mode 100644 meta/cfg/kernel-cache/features/valleyisland-io/valleyisland-io.cfg create mode 100644 meta/cfg/kernel-cache/features/valleyisland-io/valleyisland-io.scc diff --git a/meta/cfg/kernel-cache/features/valleyisland-io/valleyisland-io.cfg b/meta/cfg/kernel-cache/features/valleyisland-io/valleyisland-io.cfg new file mode 100644 index 000..7aa630b --- /dev/null +++ b/meta/cfg/kernel-cache/features/valleyisland-io/valleyisland-io.cfg @@ -0,0 +1,30 @@ +#GPIO Support +CONFIG_GPIOLIB=y +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_ACPI=y +CONFIG_GPIO_BAYTRAIL=y + +# I2C Support +CONFIG_I2C_DESIGNWARE_CORE=y +CONFIG_I2C_DESIGNWARE_PLATFORM=y + +# SPI Support +CONFIG_SPI_PXA2XX_DMA=y +CONFIG_SPI_PXA2XX=y + +# UART Support +CONFIG_SERIAL_8250_DW=y + +# DMA Support +CONFIG_DW_DMAC=y + +# PWM Support +CONFIG_PWM=y +CONFIG_PWM_LPSS=y + +# PINCTRL Support +CONFIG_PINCTRL=y +CONFIG_PINMUX=y +CONFIG_PINCONF=y +CONFIG_PINCTRL_BAYTRAIL=y +CONFIG_PINCTRL_BAYTRAIL_DEVICE=y diff --git a/meta/cfg/kernel-cache/features/valleyisland-io/valleyisland-io.scc b/meta/cfg/kernel-cache/features/valleyisland-io/valleyisland-io.scc new file mode 100644 index 000..90c2646 --- /dev/null +++ b/meta/cfg/kernel-cache/features/valleyisland-io/valleyisland-io.scc @@ -0,0 +1,4 @@ +define KFEATURE_DESCRIPTION Enable Valley Island LPSS I/O Devices +define KFEATURE_COMPATIBILITY arch + +kconf hardware valleyisland-io.cfg -- 1.7.10.4 -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto -- Darren Hart Yocto Project - Linux Kernel Intel Open Source Technology Center -- ___ linux-yocto mailing list linux-yocto@yoctoproject.org https://lists.yoctoproject.org/listinfo/linux-yocto