[PATCH v4 0/4] Add SMDK5250 board support

2012-01-23 Thread Chander Kashyap
This patchset add support for Samsung's SMDK5250 board based on
EXYNOS5250 based SoC. It also adds support for MMC SPL booting.

The porting is done by Samsung engineers at HQ in System LSI Team.
I am contributing in upstreaming the code for the board.

Based upon discussions following patches are dropped in this version:
Exynos: Add CONFIG_EXYNOS4 Macro to EXYNOS4 based boards
Exynos: Clock.c: Replace exynos4 prefix with exynos

SMDK5250: enable device tree support is squashed with
EXYNOS: Add SMDK5250 board support

Chander Kashyap (4):
  Exynos: Clock.c: Use CONFIG_SYS_CLK_FREQ macro
  ARM: EXYNOS: Add support for Exynos5 based SoCs
  EXYNOS: Add SMDK5250 board support
  EXYNOS: SMDK5250: Add MMC SPL support

 MAINTAINERS   |1 +
 arch/arm/cpu/armv7/exynos/clock.c |  214 ++-
 arch/arm/include/asm/arch-exynos/clock.h  |  326 
 arch/arm/include/asm/arch-exynos/cpu.h|   35 ++-
 arch/arm/include/asm/arch-exynos/dmc.h|  146 +++
 arch/arm/include/asm/arch-exynos/gpio.h   |   99 +-
 arch/arm/include/asm/arch-exynos/tzpc.h   |   52 +++
 board/samsung/smdk5250/Makefile   |   67 
 board/samsung/smdk5250/clock_init.c   |  202 ++
 board/samsung/smdk5250/dmc_init.c |  508 +
 board/samsung/smdk5250/lowlevel_init.S|   96 +
 board/samsung/smdk5250/mmc_boot.c |   58 +++
 board/samsung/smdk5250/setup.h|  353 +
 board/samsung/smdk5250/smdk5250.c |  152 
 board/samsung/smdk5250/tools/mkexynos_image.c |  117 ++
 board/samsung/smdk5250/tzpc_init.c|   48 +++
 boards.cfg|1 +
 include/configs/s5pc210_universal.h   |1 +
 include/configs/smdk5250.h|  202 ++
 include/configs/trats.h   |1 +
 20 files changed, 2662 insertions(+), 17 deletions(-)
 create mode 100644 arch/arm/include/asm/arch-exynos/dmc.h
 create mode 100644 arch/arm/include/asm/arch-exynos/tzpc.h
 create mode 100644 board/samsung/smdk5250/Makefile
 create mode 100644 board/samsung/smdk5250/clock_init.c
 create mode 100644 board/samsung/smdk5250/dmc_init.c
 create mode 100644 board/samsung/smdk5250/lowlevel_init.S
 create mode 100644 board/samsung/smdk5250/mmc_boot.c
 create mode 100644 board/samsung/smdk5250/setup.h
 create mode 100644 board/samsung/smdk5250/smdk5250.c
 create mode 100644 board/samsung/smdk5250/tools/mkexynos_image.c
 create mode 100644 board/samsung/smdk5250/tzpc_init.c
 create mode 100644 include/configs/smdk5250.h

-- 
1.7.5.4


___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


[PATCH v4 1/4] Exynos: Clock.c: Use CONFIG_SYS_CLK_FREQ macro

2012-01-23 Thread Chander Kashyap
CONFIG_SYS_CLK_FREQ_C210 macro giving notion of S5PC2XX (Exynos4)
architecture. Replace CONFIG_SYS_CLK_FREQ_C210 with CONFIG_SYS_CLK_FREQ
to make it generic for exynos architecture.

Signed-off-by: Chander Kashyap 
---
Changes for v2:
- None
Changes for v3:
- None
Changes for V4:
- Added CONFIG_SYS_CLK_FREQ to trats.h

 arch/arm/cpu/armv7/exynos/clock.c   |6 +-
 include/configs/s5pc210_universal.h |1 +
 include/configs/trats.h |1 +
 3 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/arch/arm/cpu/armv7/exynos/clock.c 
b/arch/arm/cpu/armv7/exynos/clock.c
index 0c199cd..4d92c53 100644
--- a/arch/arm/cpu/armv7/exynos/clock.c
+++ b/arch/arm/cpu/armv7/exynos/clock.c
@@ -26,10 +26,6 @@
 #include 
 #include 
 
-#ifndef CONFIG_SYS_CLK_FREQ_C210
-#define CONFIG_SYS_CLK_FREQ_C210   2400
-#endif
-
 /* exynos4: return pll clock frequency */
 static unsigned long exynos4_get_pll_clk(int pllreg)
 {
@@ -76,7 +72,7 @@ static unsigned long exynos4_get_pll_clk(int pllreg)
/* SDIV [2:0] */
s = r & 0x7;
 
-   freq = CONFIG_SYS_CLK_FREQ_C210;
+   freq = CONFIG_SYS_CLK_FREQ;
 
if (pllreg == EPLL) {
k = k & 0x;
diff --git a/include/configs/s5pc210_universal.h 
b/include/configs/s5pc210_universal.h
index be000cb..8286680 100644
--- a/include/configs/s5pc210_universal.h
+++ b/include/configs/s5pc210_universal.h
@@ -49,6 +49,7 @@
 
 /* input clock of PLL: Universal has 24MHz input clock at EXYNOS4210 */
 #define CONFIG_SYS_CLK_FREQ_C210   2400
+#define CONFIG_SYS_CLK_FREQCONFIG_SYS_CLK_FREQ_C210
 
 #define CONFIG_SETUP_MEMORY_TAGS
 #define CONFIG_CMDLINE_TAG
diff --git a/include/configs/trats.h b/include/configs/trats.h
index acb3241..10f11d9 100644
--- a/include/configs/trats.h
+++ b/include/configs/trats.h
@@ -49,6 +49,7 @@
 
 /* input clock of PLL: TRATS has 24MHz input clock at EXYNOS4210 */
 #define CONFIG_SYS_CLK_FREQ_C210   2400
+#define CONFIG_SYS_CLK_FREQCONFIG_SYS_CLK_FREQ_C210
 
 #define CONFIG_SETUP_MEMORY_TAGS
 #define CONFIG_CMDLINE_TAG
-- 
1.7.5.4


___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


[PATCH v4 4/4] EXYNOS: SMDK5250: Add MMC SPL support

2012-01-23 Thread Chander Kashyap
This patch adds support for MMC SPL booting.

Signed-off-by: Chander Kashyap 
---
Changes for v2:
- None
Changes for v3:
- None
Changes for v4:
None

 board/samsung/smdk5250/Makefile   |   16 
 board/samsung/smdk5250/mmc_boot.c |   58 
 board/samsung/smdk5250/tools/mkexynos_image.c |  117 +
 include/configs/smdk5250.h|6 +-
 4 files changed, 196 insertions(+), 1 deletions(-)
 create mode 100644 board/samsung/smdk5250/mmc_boot.c
 create mode 100644 board/samsung/smdk5250/tools/mkexynos_image.c

diff --git a/board/samsung/smdk5250/Makefile b/board/samsung/smdk5250/Makefile
index d9c2774..908ce5b 100644
--- a/board/samsung/smdk5250/Makefile
+++ b/board/samsung/smdk5250/Makefile
@@ -29,18 +29,34 @@ SOBJS   := lowlevel_init.o
 COBJS  := clock_init.o
 COBJS  += dmc_init.o
 COBJS  += tzpc_init.o
+
+ifndef CONFIG_SPL_BUILD
 COBJS  += smdk5250.o
+endif
+
+ifdef CONFIG_SPL_BUILD
+COBJS  += mmc_boot.o
+endif
 
 SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
 OBJS   := $(addprefix $(obj),$(COBJS) $(SOBJS))
 
 ALL:=   $(obj).depend $(LIB)
 
+ifdef CONFIG_SPL_BUILD
+ALL+= $(OBJTREE)/tools/mk$(BOARD)spl
+endif
+
 all:   $(ALL)
 
 $(LIB):$(OBJS)
$(call cmd_link_o_target, $(OBJS))
 
+ifdef CONFIG_SPL_BUILD
+$(OBJTREE)/tools/mk$(BOARD)spl:tools/mkexynos_image.c
+   $(HOSTCC) tools/mkexynos_image.c -o $(OBJTREE)/tools/mk$(BOARD)spl
+endif
+
 #
 
 # defines $(obj).depend target
diff --git a/board/samsung/smdk5250/mmc_boot.c 
b/board/samsung/smdk5250/mmc_boot.c
new file mode 100644
index 000..669c1a3
--- /dev/null
+++ b/board/samsung/smdk5250/mmc_boot.c
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2011 Samsung Electronics
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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
+#include
+
+/*
+* Copy U-boot from mmc to RAM:
+* COPY_BL2_FNPTR_ADDR: Address in iRAM, which Contains
+* Pointer to API (Data transfer from mmc to ram)
+*/
+void copy_uboot_to_ram(void)
+{
+   u32 (*copy_bl2)(u32, u32, u32) = (void *) *(u32 *)COPY_BL2_FNPTR_ADDR;
+
+   copy_bl2(BL2_START_OFFSET, BL2_SIZE_BLOC_COUNT, CONFIG_SYS_TEXT_BASE);
+}
+
+void board_init_f(unsigned long bootflag)
+{
+   __attribute__((noreturn)) void (*uboot)(void);
+   copy_uboot_to_ram();
+
+   /* Jump to U-Boot image */
+   uboot = (void *)CONFIG_SYS_TEXT_BASE;
+   (*uboot)();
+   /* Never returns Here */
+}
+
+/* Place Holders */
+void board_init_r(gd_t *id, ulong dest_addr)
+{
+   /* Function attribute is no-return */
+   /* This Function never executes */
+   while (1)
+   ;
+}
+
+void save_boot_params(u32 r0, u32 r1, u32 r2, u32 r3) {}
diff --git a/board/samsung/smdk5250/tools/mkexynos_image.c 
b/board/samsung/smdk5250/tools/mkexynos_image.c
new file mode 100644
index 000..e2b7805
--- /dev/null
+++ b/board/samsung/smdk5250/tools/mkexynos_image.c
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2011 Samsung Electronics
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#define CHECKSUM_OFFSET(14*1024-4)
+#define BUFSIZE(16*1024)
+#define FILE_PERM  (S_IRUSR | S_IWUSR | S_IRGRP \
+   | S_IWGRP | S_IROTH | S_IWOTH)
+/*
+* Requirement:
+* IROM

[PATCH v4 2/4] ARM: EXYNOS: Add support for Exynos5 based SoCs

2012-01-23 Thread Chander Kashyap
Samsung's ARM Cortex-A15 based SoCs are known as Exynos5 series of
SoCs. This patch adds the support for Exynos5.

Signed-off-by: Chander Kashyap 
---
Changes for v2:
- This patch was part of "EXYNOS: Add SMDK5250 board support"
- Now it is seprated as SoC support.
Changes for v3:
- Populated complete exynos5 gpio structures
Changes for v4:
- Added dmc.h and tzpc.h header files
- Renamed EXYNOS5_PHY*_CTRL_BASE to EXYNOS5_DMC_PHY*_BASE

 arch/arm/cpu/armv7/exynos/clock.c|  208 +++-
 arch/arm/include/asm/arch-exynos/clock.h |  326 ++
 arch/arm/include/asm/arch-exynos/cpu.h   |   35 +++-
 arch/arm/include/asm/arch-exynos/dmc.h   |  146 +
 arch/arm/include/asm/arch-exynos/gpio.h  |   99 +-
 arch/arm/include/asm/arch-exynos/tzpc.h  |   52 +
 6 files changed, 854 insertions(+), 12 deletions(-)
 create mode 100644 arch/arm/include/asm/arch-exynos/dmc.h
 create mode 100644 arch/arm/include/asm/arch-exynos/tzpc.h

diff --git a/arch/arm/cpu/armv7/exynos/clock.c 
b/arch/arm/cpu/armv7/exynos/clock.c
index 4d92c53..2f7048b 100644
--- a/arch/arm/cpu/armv7/exynos/clock.c
+++ b/arch/arm/cpu/armv7/exynos/clock.c
@@ -92,6 +92,72 @@ static unsigned long exynos4_get_pll_clk(int pllreg)
return fout;
 }
 
+/* exynos5: return pll clock frequency */
+static unsigned long exynos5_get_pll_clk(int pllreg)
+{
+   struct exynos5_clock *clk =
+   (struct exynos5_clock *)samsung_get_base_clock();
+   unsigned long r, m, p, s, k = 0, mask, fout;
+   unsigned int freq;
+
+   switch (pllreg) {
+   case APLL:
+   r = readl(&clk->apll_con0);
+   break;
+   case MPLL:
+   r = readl(&clk->mpll_con0);
+   break;
+   case EPLL:
+   r = readl(&clk->epll_con0);
+   k = readl(&clk->epll_con1);
+   break;
+   case VPLL:
+   r = readl(&clk->vpll_con0);
+   k = readl(&clk->vpll_con1);
+   break;
+   default:
+   printf("Unsupported PLL (%d)\n", pllreg);
+   return 0;
+   }
+
+   /*
+* APLL_CON: MIDV [25:16]
+* MPLL_CON: MIDV [25:16]
+* EPLL_CON: MIDV [24:16]
+* VPLL_CON: MIDV [24:16]
+*/
+   if (pllreg == APLL || pllreg == MPLL)
+   mask = 0x3ff;
+   else
+   mask = 0x1ff;
+
+   m = (r >> 16) & mask;
+
+   /* PDIV [13:8] */
+   p = (r >> 8) & 0x3f;
+   /* SDIV [2:0] */
+   s = r & 0x7;
+
+   freq = CONFIG_SYS_CLK_FREQ;
+
+   if (pllreg == EPLL) {
+   k = k & 0x;
+   /* FOUT = (MDIV + K / 65536) * FIN / (PDIV * 2^SDIV) */
+   fout = (m + k / 65536) * (freq / (p * (1 << s)));
+   } else if (pllreg == VPLL) {
+   k = k & 0xfff;
+   /* FOUT = (MDIV + K / 1024) * FIN / (PDIV * 2^SDIV) */
+   fout = (m + k / 1024) * (freq / (p * (1 << s)));
+   } else {
+   if (s < 1)
+   s = 1;
+   /* FOUT = MDIV * FIN / (PDIV * 2^(SDIV - 1)) */
+   fout = m * (freq / (p * (1 << (s - 1;
+   }
+
+   return fout;
+}
+
 /* exynos4: return ARM clock frequency */
 static unsigned long exynos4_get_arm_clk(void)
 {
@@ -114,6 +180,28 @@ static unsigned long exynos4_get_arm_clk(void)
return armclk;
 }
 
+/* exynos5: return ARM clock frequency */
+static unsigned long exynos5_get_arm_clk(void)
+{
+   struct exynos5_clock *clk =
+   (struct exynos5_clock *)samsung_get_base_clock();
+   unsigned long div;
+   unsigned long armclk;
+   unsigned int arm_ratio;
+   unsigned int arm2_ratio;
+
+   div = readl(&clk->div_cpu0);
+
+   /* ARM_RATIO: [2:0], ARM2_RATIO: [30:28] */
+   arm_ratio = (div >> 0) & 0x7;
+   arm2_ratio = (div >> 28) & 0x7;
+
+   armclk = get_pll_clk(APLL) / (arm_ratio + 1);
+   armclk /= (arm2_ratio + 1);
+
+   return armclk;
+}
+
 /* exynos4: return pwm clock frequency */
 static unsigned long exynos4_get_pwm_clk(void)
 {
@@ -157,6 +245,27 @@ static unsigned long exynos4_get_pwm_clk(void)
return pclk;
 }
 
+/* exynos5: return pwm clock frequency */
+static unsigned long exynos5_get_pwm_clk(void)
+{
+   struct exynos5_clock *clk =
+   (struct exynos5_clock *)samsung_get_base_clock();
+   unsigned long pclk, sclk;
+   unsigned int ratio;
+
+   /*
+* CLK_DIV_PERIC3
+* PWM_RATIO [3:0]
+*/
+   ratio = readl(&clk->div_peric3);
+   ratio = ratio & 0xf;
+   sclk = get_pll_clk(MPLL);
+
+   pclk = sclk / (ratio + 1);
+
+   return pclk;
+}
+
 /* exynos4: return uart clock frequency */
 static unsigned long exynos4_get_uart_clk(int dev_index)
 {
@@ -204,6 +313,53 @@ static unsigned long exynos4_get_uart_clk(int dev_index)
return uclk;
 }
 
+/* exynos5: return ua

[PATCH v4 3/4] EXYNOS: Add SMDK5250 board support

2012-01-23 Thread Chander Kashyap
SMDK5250 board is based on Samsungs EXYNOS5250 SoC.

Signed-off-by: Chander Kashyap 
---
Changes for v2:
- This patch is bifurcated into borad support and SoC support
- Fixed typo: s/EEYNOS/EXYNOS
- Squashed patch "SMDK5250: enable device tree support" in this.
Changes for v3:
- None
Changes for v4:
- Converted assembly routines for clock, memory, uart and tzpc
- init to c functions
- Moved uart init to smdk5250.c

 MAINTAINERS|1 +
 board/samsung/smdk5250/Makefile|   51 
 board/samsung/smdk5250/clock_init.c|  202 +
 board/samsung/smdk5250/dmc_init.c  |  508 
 board/samsung/smdk5250/lowlevel_init.S |   96 ++
 board/samsung/smdk5250/setup.h |  353 ++
 board/samsung/smdk5250/smdk5250.c  |  152 ++
 board/samsung/smdk5250/tzpc_init.c |   48 +++
 boards.cfg |1 +
 include/configs/smdk5250.h |  198 +
 10 files changed, 1610 insertions(+), 0 deletions(-)
 create mode 100644 board/samsung/smdk5250/Makefile
 create mode 100644 board/samsung/smdk5250/clock_init.c
 create mode 100644 board/samsung/smdk5250/dmc_init.c
 create mode 100644 board/samsung/smdk5250/lowlevel_init.S
 create mode 100644 board/samsung/smdk5250/setup.h
 create mode 100644 board/samsung/smdk5250/smdk5250.c
 create mode 100644 board/samsung/smdk5250/tzpc_init.c
 create mode 100644 include/configs/smdk5250.h

diff --git a/MAINTAINERS b/MAINTAINERS
index acbd7f1..c03ebb4 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -713,6 +713,7 @@ Chander Kashyap 
 
origen  ARM ARMV7 (EXYNOS4210 SoC)
SMDKV310ARM ARMV7 (EXYNOS4210 SoC)
+   SMDK5250ARM ARMV7 (EXYNOS5250 SoC)
 
 Heungjun Kim 
 
diff --git a/board/samsung/smdk5250/Makefile b/board/samsung/smdk5250/Makefile
new file mode 100644
index 000..d9c2774
--- /dev/null
+++ b/board/samsung/smdk5250/Makefile
@@ -0,0 +1,51 @@
+#
+# Copyright (C) 2011 Samsung Electronics
+#
+# See file CREDITS for list of people who contributed to this
+# project.
+#
+# 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 $(TOPDIR)/config.mk
+
+LIB= $(obj)lib$(BOARD).o
+
+SOBJS  := lowlevel_init.o
+
+COBJS  := clock_init.o
+COBJS  += dmc_init.o
+COBJS  += tzpc_init.o
+COBJS  += smdk5250.o
+
+SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
+OBJS   := $(addprefix $(obj),$(COBJS) $(SOBJS))
+
+ALL:=   $(obj).depend $(LIB)
+
+all:   $(ALL)
+
+$(LIB):$(OBJS)
+   $(call cmd_link_o_target, $(OBJS))
+
+#
+
+# defines $(obj).depend target
+include $(SRCTREE)/rules.mk
+
+sinclude $(obj).depend
+
+#
diff --git a/board/samsung/smdk5250/clock_init.c 
b/board/samsung/smdk5250/clock_init.c
new file mode 100644
index 000..2b53a47
--- /dev/null
+++ b/board/samsung/smdk5250/clock_init.c
@@ -0,0 +1,202 @@
+/*
+ * Clock setup for SMDK5250 board based on EXYNOS5
+ *
+ * Copyright (C) 2011 Samsung Electronics
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * 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 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include "setup.h"
+
+void system_clock_init()
+{
+   struct exynos5_clock *clk = (struct exynos5_clock *)EXYNOS5_CLOCK_BASE;
+
+   /*
+* MUX_APLL_SEL[0]: FINPLL = 0
+* MUX_CPU_SEL[6]: MOUTAPLL = 0
+* MUX_HP

Re: Android 11.12 on pandaboard

2012-01-23 Thread Andy Green
On 01/23/2012 04:40 PM, Somebody in the thread at some point said:
> Hi all,
> 
> We have both tried all the builds on the pandaboard 4430 but we have
> encountered some problems.
> It seems like those builds are depending on the screen on how they will
> behave.
> 
> The problem at my side is that the display doesn't want to show something.
> I have tried all the builds on my Asus computer screen (HDMI 1920x1080)
> and my Sony Bravia
> 
> (HDMI 1920x1080).
> But every time the screen stayed black. This was all tested with the
> HDMI port to HDMI in the screen.
> 
> At Mark, the builds worked on his tv at 720p (also Sony Bravia but
> older) through HDMI.
> But when he connected the pandaboard from HDMI to DVI (with an
> converter) it started in phone mode with a low resolution.
> 
> We followed the instructions of the links you send to us carefully and
> we can confirm that Android was running.
> 
> Could there be a problem with the EDID protocol in combination with our
> screens? And is there a way to override it when the screen doesn't
> support the EDID protocol?

Yeah there seems to be a race between connector presence detect and edid
fetch, vs when your TV is ready to give edid.  As it stands it seems to
work for most TVs OK.  The problem's exacerbated by hotplug not working
as it should so getting the EDID later is not the same as getting it at
the start.

In 3.3-rc1, Rob Clark has gotten some improved DRM-based stuff building
on Tomi's previous upstream patches so all this is getting better.

For Android, the video stuff is stuck in a 3.0 kernel timewarp.  We have
forwardported the special version of dss and other pieces from 3.0 aosp
kernel to make accelerated graphics work, but that approach means all
the dss pieces are from 3.0 status and are not benefiting from gradual
upstream improvements.

-Andy

-- 
Andy Green | TI Landing Team Leader
Linaro.org │ Open source software for ARM SoCs | Follow Linaro
http://facebook.com/pages/Linaro/155974581091106  -
http://twitter.com/#!/linaroorg - http://linaro.org/linaro-blog

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Re: Android 11.12 on pandaboard

2012-01-23 Thread Ion Aalbers
Hi all,

We have both tried all the builds on the pandaboard 4430 but we have
encountered some problems.
It seems like those builds are depending on the screen on how they will
behave.

The problem at my side is that the display doesn't want to show something.
I have tried all the builds on my Asus computer screen (HDMI 1920x1080) and
my Sony 
Bravia(HDMI
1920x1080).
But every time the screen stayed black. This was all tested with the HDMI
port to HDMI in the screen.

At Mark, the builds worked on his tv at 720p (also Sony Bravia but older)
through HDMI.
But when he connected the pandaboard from HDMI to DVI (with an converter)
it started in phone mode with a low resolution.

We followed the instructions of the links you send to us carefully and we
can confirm that Android was running.

Could there be a problem with the EDID protocol in combination with our
screens? And is there a way to override it when the screen doesn't support
the EDID protocol?

With kind regards,
Mark Kuipers
Ion Aalbers



On 19 January 2012 14:19, Andy Green  wrote:

> On 01/19/2012 03:37 PM, Somebody in the thread at some point said:
> > Thanks for all your responses.
> > We will try it as soon as possible :)
> >
> > So this tells me that the build determines which resolution it has, this
> > can not be changed through any setting. Is this right?
>
> You can try messing with dss kernel commandlines but I dunno you get
> anywhere good.
>
> Fracture in video status reflects fracture in TI approach to how the
> work is done.
>
> There's an upstream effort to get definitive mainline support in, and
> separately there's customer support based approach from TI that is
> mainly targeted at Android / Omapzoom.
>
> The code quality is best in mainline but support is incomplete,
> especially about multihead.  In OZ and OZ-ish kernels, filter for what
> goes in is not as aggressive as mainline, enablement is better but basis
> is always an old release.  That means, the old, working 3.0 code
> diverges from what got into mainline for later releases and can't be
> brought on easily unless treated as alien code like SGX.
>
> Linaro TI LT kernel is trying to be a third approach, while worshipping
> mainline HEAD above all, so we have recent development basis, we glue on
> whatever missing pieces we can scavenge from wherever, keeping them up
> to date with Linus HEAD with to goal of being a highly enabled "fake
> upstream" with the missing pieces integrated.
>
> In your case that boils down to: Jassi added code to come out on HDMI
> connector at 1080p via EDID on our kernel, AOSP omap 3.0-based kernel
> doesn't have that support.
>
> -Andy
>
> --
> Andy Green | TI Landing Team Leader
> Linaro.org │ Open source software for ARM SoCs | Follow Linaro
> http://facebook.com/pages/Linaro/155974581091106  -
> http://twitter.com/#!/linaroorg - http://linaro.org/linaro-blog
>
___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Re: SMP Improvement on Android

2012-01-23 Thread Scott Bambrough

On 12-01-19 04:39 PM, Zach Pfeffer wrote:

Team,

The TI SMP team is interested in our work improving SMP on Android.
They may be able to come to Connect and hack on things with us.

We need to get the relevant patches that have been hanging around
integrated into some builds, get some benchmark and correctness test
into LAVA and send everything back up to AOSP.

Interested people should subscribe to:

https://blueprints.launchpad.net/linaro-android/+spec/linaro-android-define-and-run-smp-tests

The connect session will be:

https://blueprints.launchpad.net/linaro-android/+spec/linaro-platforms-q112-android-smp-on-android

This is going to rock!



Zach,

If you have kernel patches you need integrated can you please forward 
them to Andy so we can track them in the LT.


Thanks,

Scott


--
Scott Bambrough
Technical Director, Member Services
Linaro Ltd.


___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


[PATCH] hrtimers, timers: eliminate some jiffies-backed code

2012-01-23 Thread Dmitry Antipov
This patch provides an attempt to get away from jiffies in msleep()
and msleep_interruptible() to hrtimers-backed usleep_range() and
usleep_range_interruptible(). Both of the latter now returns an amount
of microseconds really spent in sleep; another rationale for this
was to convert msleep()-based wait-for-hardware loops to usleep_range(),
like this:

unsigned long timeout = jiffies + msecs_to_jiffies(1000);
while (hw_is_not_ready()) {
if (time_after(jiffies, timeout))
return -ETIMEDOUT;
msleep(1);
}

to:

unsigned long timeout = 0;
while (hw_is_not_ready()) {
  if (timeout > USEC_PER_SEC)
  return -ETIMEDOUT;
  timeout += usleep_range(500, 1500);
}

Signed-off-by: Dmitry Antipov 
---
 fs/eventpoll.c  |3 ++-
 fs/select.c |3 ++-
 include/linux/delay.h   |3 ++-
 include/linux/hrtimer.h |8 +---
 ipc/mqueue.c|4 ++--
 kernel/hrtimer.c|   38 +++---
 kernel/timer.c  |   39 +--
 7 files changed, 69 insertions(+), 29 deletions(-)

diff --git a/fs/eventpoll.c b/fs/eventpoll.c
index aabdfc3..a374944 100644
--- a/fs/eventpoll.c
+++ b/fs/eventpoll.c
@@ -1349,7 +1349,8 @@ fetch_events:
}
 
spin_unlock_irqrestore(&ep->lock, flags);
-   if (!schedule_hrtimeout_range(to, slack, 
HRTIMER_MODE_ABS))
+   if (!schedule_hrtimeout_range(to, NULL, slack,
+ HRTIMER_MODE_ABS))
timed_out = 1;
 
spin_lock_irqsave(&ep->lock, flags);
diff --git a/fs/select.c b/fs/select.c
index d33418f..b4354b2 100644
--- a/fs/select.c
+++ b/fs/select.c
@@ -236,7 +236,8 @@ int poll_schedule_timeout(struct poll_wqueues *pwq, int 
state,
 
set_current_state(state);
if (!pwq->triggered)
-   rc = schedule_hrtimeout_range(expires, slack, HRTIMER_MODE_ABS);
+   rc = schedule_hrtimeout_range(expires, NULL, slack,
+ HRTIMER_MODE_ABS);
__set_current_state(TASK_RUNNING);
 
/*
diff --git a/include/linux/delay.h b/include/linux/delay.h
index a6ecb34..bad6d49 100644
--- a/include/linux/delay.h
+++ b/include/linux/delay.h
@@ -45,7 +45,8 @@ extern unsigned long lpj_fine;
 void calibrate_delay(void);
 void msleep(unsigned int msecs);
 unsigned long msleep_interruptible(unsigned int msecs);
-void usleep_range(unsigned long min, unsigned long max);
+unsigned long usleep_range(unsigned long min, unsigned long max);
+unsigned long usleep_range_interruptible(unsigned long min, unsigned long max);
 
 static inline void ssleep(unsigned int seconds)
 {
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
index fd0dc30..01d782b 100644
--- a/include/linux/hrtimer.h
+++ b/include/linux/hrtimer.h
@@ -126,6 +126,7 @@ struct hrtimer {
  * task is set to NULL, when the timer expires.
  */
 struct hrtimer_sleeper {
+   ktime_t kt;
struct hrtimer timer;
struct task_struct *task;
 };
@@ -428,9 +429,10 @@ extern long hrtimer_nanosleep_restart(struct restart_block 
*restart_block);
 extern void hrtimer_init_sleeper(struct hrtimer_sleeper *sl,
 struct task_struct *tsk);
 
-extern int schedule_hrtimeout_range(ktime_t *expires, unsigned long delta,
-   const enum hrtimer_mode mode);
-extern int schedule_hrtimeout_range_clock(ktime_t *expires,
+extern int schedule_hrtimeout_range(ktime_t *expires, ktime_t *elapsed,
+   unsigned long delta,
+   const enum hrtimer_mode mode);
+extern int schedule_hrtimeout_range_clock(ktime_t *expires, ktime_t *elapsed,
unsigned long delta, const enum hrtimer_mode mode, int clock);
 extern int schedule_hrtimeout(ktime_t *expires, const enum hrtimer_mode mode);
 
diff --git a/ipc/mqueue.c b/ipc/mqueue.c
index 9b7c8ab..e57d7c1 100644
--- a/ipc/mqueue.c
+++ b/ipc/mqueue.c
@@ -449,8 +449,8 @@ static int wq_sleep(struct mqueue_inode_info *info, int sr,
set_current_state(TASK_INTERRUPTIBLE);
 
spin_unlock(&info->lock);
-   time = schedule_hrtimeout_range_clock(timeout, 0,
-   HRTIMER_MODE_ABS, CLOCK_REALTIME);
+   time = schedule_hrtimeout_range_clock(timeout, NULL,
+   0, HRTIMER_MODE_ABS, CLOCK_REALTIME);
 
while (ewp->state == STATE_PENDING)
cpu_relax();
diff --git a/kernel/hrtimer.c b/kernel/hrtimer.c
index ae34bf5..8642c3f 100644
--- a/kernel/hrtimer.c
+++ b/kernel/hrtimer.c
@@ -1475,6 +1475,12 @@ static enum hrtimer_restart hrtimer_wakeup(struct 
hrtimer *timer)
struct hrtimer_sleeper *t =
container_of(timer, struct hrtimer_sleeper, timer);

Re: [PATCH] hrtimers, timers: eliminate some jiffies-backed code

2012-01-23 Thread Amit Kucheria
Adding Thomas since he is maintainer of hrtimers and John since he
knows a bit about timekeeping. :)

On Mon, Jan 23, 2012 at 5:40 PM, Dmitry Antipov
 wrote:
> This patch provides an attempt to get away from jiffies in msleep()
> and msleep_interruptible() to hrtimers-backed usleep_range() and
> usleep_range_interruptible(). Both of the latter now returns an amount
> of microseconds really spent in sleep; another rationale for this
> was to convert msleep()-based wait-for-hardware loops to usleep_range(),
> like this:
>
> unsigned long timeout = jiffies + msecs_to_jiffies(1000);
> while (hw_is_not_ready()) {
>        if (time_after(jiffies, timeout))
>                return -ETIMEDOUT;
>        msleep(1);
> }
>
> to:
>
> unsigned long timeout = 0;
> while (hw_is_not_ready()) {
>      if (timeout > USEC_PER_SEC)
>              return -ETIMEDOUT;
>      timeout += usleep_range(500, 1500);
> }
>
> Signed-off-by: Dmitry Antipov 
> ---
>  fs/eventpoll.c          |    3 ++-
>  fs/select.c             |    3 ++-
>  include/linux/delay.h   |    3 ++-
>  include/linux/hrtimer.h |    8 +---
>  ipc/mqueue.c            |    4 ++--
>  kernel/hrtimer.c        |   38 +++---
>  kernel/timer.c          |   39 +--
>  7 files changed, 69 insertions(+), 29 deletions(-)
>
> diff --git a/fs/eventpoll.c b/fs/eventpoll.c
> index aabdfc3..a374944 100644
> --- a/fs/eventpoll.c
> +++ b/fs/eventpoll.c
> @@ -1349,7 +1349,8 @@ fetch_events:
>                        }
>
>                        spin_unlock_irqrestore(&ep->lock, flags);
> -                       if (!schedule_hrtimeout_range(to, slack, 
> HRTIMER_MODE_ABS))
> +                       if (!schedule_hrtimeout_range(to, NULL, slack,
> +                                                     HRTIMER_MODE_ABS))
>                                timed_out = 1;
>
>                        spin_lock_irqsave(&ep->lock, flags);
> diff --git a/fs/select.c b/fs/select.c
> index d33418f..b4354b2 100644
> --- a/fs/select.c
> +++ b/fs/select.c
> @@ -236,7 +236,8 @@ int poll_schedule_timeout(struct poll_wqueues *pwq, int 
> state,
>
>        set_current_state(state);
>        if (!pwq->triggered)
> -               rc = schedule_hrtimeout_range(expires, slack, 
> HRTIMER_MODE_ABS);
> +               rc = schedule_hrtimeout_range(expires, NULL, slack,
> +                                             HRTIMER_MODE_ABS);
>        __set_current_state(TASK_RUNNING);
>
>        /*
> diff --git a/include/linux/delay.h b/include/linux/delay.h
> index a6ecb34..bad6d49 100644
> --- a/include/linux/delay.h
> +++ b/include/linux/delay.h
> @@ -45,7 +45,8 @@ extern unsigned long lpj_fine;
>  void calibrate_delay(void);
>  void msleep(unsigned int msecs);
>  unsigned long msleep_interruptible(unsigned int msecs);
> -void usleep_range(unsigned long min, unsigned long max);
> +unsigned long usleep_range(unsigned long min, unsigned long max);
> +unsigned long usleep_range_interruptible(unsigned long min, unsigned long 
> max);
>
>  static inline void ssleep(unsigned int seconds)
>  {
> diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h
> index fd0dc30..01d782b 100644
> --- a/include/linux/hrtimer.h
> +++ b/include/linux/hrtimer.h
> @@ -126,6 +126,7 @@ struct hrtimer {
>  * task is set to NULL, when the timer expires.
>  */
>  struct hrtimer_sleeper {
> +       ktime_t kt;
>        struct hrtimer timer;
>        struct task_struct *task;
>  };
> @@ -428,9 +429,10 @@ extern long hrtimer_nanosleep_restart(struct 
> restart_block *restart_block);
>  extern void hrtimer_init_sleeper(struct hrtimer_sleeper *sl,
>                                 struct task_struct *tsk);
>
> -extern int schedule_hrtimeout_range(ktime_t *expires, unsigned long delta,
> -                                               const enum hrtimer_mode mode);
> -extern int schedule_hrtimeout_range_clock(ktime_t *expires,
> +extern int schedule_hrtimeout_range(ktime_t *expires, ktime_t *elapsed,
> +                                   unsigned long delta,
> +                                   const enum hrtimer_mode mode);
> +extern int schedule_hrtimeout_range_clock(ktime_t *expires, ktime_t *elapsed,
>                unsigned long delta, const enum hrtimer_mode mode, int clock);
>  extern int schedule_hrtimeout(ktime_t *expires, const enum hrtimer_mode 
> mode);
>
> diff --git a/ipc/mqueue.c b/ipc/mqueue.c
> index 9b7c8ab..e57d7c1 100644
> --- a/ipc/mqueue.c
> +++ b/ipc/mqueue.c
> @@ -449,8 +449,8 @@ static int wq_sleep(struct mqueue_inode_info *info, int 
> sr,
>                set_current_state(TASK_INTERRUPTIBLE);
>
>                spin_unlock(&info->lock);
> -               time = schedule_hrtimeout_range_clock(timeout, 0,
> -                       HRTIMER_MODE_ABS, CLOCK_REALTIME);
> +               time = schedule_hrtimeout_range_clock(timeout, NULL,
> +                       0, HRTIMER_MODE_ABS, CLOCK_REALTIME);
>
>                while (ewp->state == STATE_PEN

Release frequency: a discussion for Linaro Connect Q1.12?

2012-01-23 Thread Gregoire Gentil
Hello,

I'm Grégoire Gentil, the founder of Always Innovating. I intend to
participate to Linaro Connect Q1.12 though I'm not part of this
organization. I follow the work of Linaro and I find it very interesting
for our OMAP-based products such as the HDMI Dongle:
http://www.alwaysinnovating.com.

I don't know if it's the right forum or if such discussion has already
taken place, but there is one point that I would like to raise up:
release frequency. Linaro is currently on a one-month period, which is
very tight. To my mind, such small period presents two disadvantages,
long-term perspective and innovation:

- if there is a new release every month, it's hard to know which release
is *very* stable and should be used by an external company which might
not have the same frenzy to update all the time.

- Regarding innovation, Linaro might learn from the Ubuntu experience.
Mark Shuttleworth was a strong advocate of the strict Ubuntu short
release schedule and he admitted later that a too frequent period
prevents from innovating. When you are pressed by a schedule, it's hard
for the organization to step back and take the time to break-through on
a novel approach.

The point of my email is not to convince Linaro to change the current
situation but to bring an idea for a complementary approach at least for
the first point:

for instance, let's imagine a Linaro "super-stable once sometimes"
release. Right now, people are desperately looking for a "good" ICS
image - read Pandaboard groups if you are not convinced -, and ICS won't
change that much during the year. Perhaps there will be a 4.1 but when
you are doing a commercial product, you don't need the latest of the
latest and you certainly don't want to change your build process every
month. If there was a "good" ICS release today, I think that it would be
a major blockbuster for a lot of companies following Linaro. I'm
mentioning the Android example because it's what people want today, but
tomorrow it might be Meego or whatever. I'm not saying to stick to
Google schedule, it's just an example of what is trendy today and would
deserve long-term stable bits.

To go one step beyond in my thinking, I'm not advocating for a new
separate *strict* longer schedule. The idea might be more to have *A*
milestone release from time-to-time, after something major is out
(Android release, new ARM cortex), and Linaro decides that this next
monthly release should be a major one, very polished, very stable and
it's properly supported and advertised with clear wiki and updates for
security or critical problems.

The point of my email was not to criticize the very interesting work of
Linaro but to give an external point of view. Let me know if Linaro has
already done some thoughts about this topic, and if such discussion can
occur formally or informally at the coming Connect event.

Best regards,

Grégoire Gentil
Founder Always Innovating
http://www.alwaysinnovating.com


On Mon, 2012-01-23 at 18:28 +0100, Marcin Juszkiewicz wrote: 
> Hi
> 
> I am arriving on Saturday evening and wondered what to do on Sunday. 
> Usually I spent time going to shops to buy some electronics but this 
> time I think that will leave it for Amazon instead.
> 
> That leaves me Sunday for sightseeing. According to Google Maps trip to 
> Golden Gate bridge takes 2.5h by public transport or 40 minutes by car. 
> But looks like there is no car rental in hotel ;(
> 
> Is anyone interested in going for some tour? I think that San Francisco 
> has some nice places to view.




___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Ubuntu LEB 12.01 RC images

2012-01-23 Thread Ricardo Salveti
Hey folks,

Just like to announce the Ubuntu LEB 12.01 RC images, and the pointers
for people that want to check the testing progress and such (or even
helping testing them).

Currently we're tracking our test cases at
https://wiki.linaro.org/Platform/QA/TestCases/Ubuntu (most of them
requires manual effort at the moment, but we're improving that with
LAVA in the following weeks). If you think about any other important
test case that we might be missing here, please let me know and we can
add it at our testing cycle.

You can find all the 12.01 RC builds (for all boards and image
flavors) at http://snapshots.linaro.org/oneiric/, with build id
20120123-1.

For our four main boards we also have a testing spreadsheet, were we
publish the official release testing, done by the dev plat engineers.
You can find the links at
https://wiki.linaro.org/Platform/DevPlatform/Testing (note that you
can find the bug reports from the test cases by looking at the QA page
tag links).

Fathi will be coordinating all respin requests in the next following
days at linaro-release m-l, and the final image will be published this
thursday, at releases.linaro.org.

Please also be sure to publish any bug report with the RC images
against https://launchpad.net/linaro-ubuntu, or just contact us at
#linaro @ freenode
(https://wiki.linaro.org/MeetTheTeam#Developer_Platform).

Thanks,
-- 
Ricardo Salveti de Araujo

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


January 2012 Kernel Release

2012-01-23 Thread Deepak Saxena
The Linaro Kernel Working Group (KWG) is excited to announce the
availability our January 2012 development snapshot:

linux-linaro-3.2-2021.01-0

As the word "snapshot" implies, these are meant as development kernels
and have not been fully validated. You should expect issues and to help
us deliver a better kernel in the future, please file bugs in Launchpad at
https://bugs.launchpad.net/linux-linaro.

This is our first kernel release run by Andrey Konovalov and I want to
thank him for getting up and running in short time period and getting
this release out the door. Andrey will be creating a 3.3 tracking branch
soon and we can then start merging code from the other WGs and LTs to
provide a common baseline for the 2012.02 release.

The source tarball is available at:
 
http://launchpad.net/linux-linaro/3.2/3.2-2012.01/+download/linux-linaro-3.2-2012.01-0.tar.bz2

The kernel sources can also be accessed using git at:
 git://git.linaro.org/people/ynk/linux-linaro-tracking.git
 tag: linux-linaro-3.2-2012.01-0

This kernel includes the following changes from the 2011.11 kernel:

- Update to 3.2.1 stable kernel

- Various patches from 3.3-rc1 and other trees:

  - Restart code cleanup (Russell King)

  - Config fragment support (John Stultz)

  - Pinctrl updates (Dong Aishang, Rajendra Nayak, Linus Walleij)

  - Thermal cpu cooling branch from PMWG (Amit Kacchap, Jaecheol Lee)

  - LPAE support (Catalin Marinas)

  - MULTI_IRQ_HANDLER support (Marc Zyngier)

  - ioremap() consolidation (Nicolas Pitre)

A full change log against the 3.2.1 release is available at:
   
http://launchpad.net/linux-linaro/3.2/3.2-2012.01/+download/CHANGELOG-linux-linaro-3.2-2012.01-0

High Priority Known Issues:

- None at this time

Mailing list: http://lists.linaro.org/mailman/listinfo/linaro-dev

Questions? https://ask.linaro.org/

___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev


Thanks!

2012-01-23 Thread Zach Pfeffer
Just a quick word of thanks to Amit Pundir, Botao Sun, Vishal
Bhoj, Abhishek Paliwal and Tony Mansson for running over 576 manual test
for the 12.01 Android cycle, Thanks, you guys rock!


Snowball

https://android-build.linaro.org/builds/~linaro-android/landing-snowball-12.01-release/#build=5

Origen

https://android-build.linaro.org/builds/~linaro-android/staging-origen-12.01-release/#build=2

VExpress-A9

https://android-build.linaro.org/builds/~linaro-android/staging-vexpress-a9-12.01-release/#build=3

iMX53

https://android-build.linaro.org/builds/~linaro-android/staging-imx53-12.01-release/#build=6

Panda

https://android-build.linaro.org/builds/~linaro-android/tracking-panda-12.01-release/#build=5
https://android-build.linaro.org/builds/~linaro-android/staging-panda-12.01-release/#build=2
https://android-build.linaro.org/builds/~linaro-android/panda-12.01-release/#build=2
https://android-build.linaro.org/builds/~linaro-android/landing-panda-12.01-release/#build=3

-- 
Zach Pfeffer
Android Platform Team Lead, Linaro Platform Teams
Linaro.org | Open source software for ARM SoCs
Follow Linaro: http://www.facebook.com/pages/Linaro
http://twitter.com/#!/linaroorg - http://www.linaro.org/linaro-blog
___
linaro-dev mailing list
linaro-dev@lists.linaro.org
http://lists.linaro.org/mailman/listinfo/linaro-dev