* [RFC PATCH 2/2] AM33XX: pcm051: Create custom mux file
2013-03-12 14:04 [RFC PATCH 1/2] AM33XX: Move muxing defines to header file Teresa Gámez
@ 2013-03-12 14:04 ` Teresa Gámez
2013-03-14 7:30 ` [RFC PATCH 1/2] AM33XX: Move muxing defines to header file Sascha Hauer
2013-03-15 7:23 ` Sascha Hauer
2 siblings, 0 replies; 5+ messages in thread
From: Teresa Gámez @ 2013-03-12 14:04 UTC (permalink / raw)
To: barebox
The pcm051 has no MMC WP pin. This pin is used for a gpio and
needs to be muxed different. Created a custom mux file for
this case.
Signed-off-by: Teresa Gámez <t.gamez@phytec.de>
---
arch/arm/boards/pcm051/Makefile | 2 +-
arch/arm/boards/pcm051/board.c | 4 +++-
arch/arm/boards/pcm051/mux.c | 20 ++++++++++++++++++++
arch/arm/boards/pcm051/mux.h | 2 ++
4 files changed, 26 insertions(+), 2 deletions(-)
create mode 100644 arch/arm/boards/pcm051/mux.c
create mode 100644 arch/arm/boards/pcm051/mux.h
diff --git a/arch/arm/boards/pcm051/Makefile b/arch/arm/boards/pcm051/Makefile
index 092c31d..69d48e1 100644
--- a/arch/arm/boards/pcm051/Makefile
+++ b/arch/arm/boards/pcm051/Makefile
@@ -1,2 +1,2 @@
lwl-y += lowlevel.o
-obj-y += board.o
+obj-y += board.o mux.o
diff --git a/arch/arm/boards/pcm051/board.c b/arch/arm/boards/pcm051/board.c
index a38d844..8754ba5 100644
--- a/arch/arm/boards/pcm051/board.c
+++ b/arch/arm/boards/pcm051/board.c
@@ -27,6 +27,8 @@
#include <mach/am33xx-mux.h>
#include <mach/am33xx-silicon.h>
+#include "mux.h"
+
/**
* @brief UART serial port initialization
* arch
@@ -52,7 +54,7 @@ mem_initcall(pcm051_mem_init);
static int pcm051_devices_init(void)
{
- am33xx_enable_mmc0_pin_mux();
+ pcm051_enable_mmc0_pin_mux();
am33xx_add_mmc0(NULL);
diff --git a/arch/arm/boards/pcm051/mux.c b/arch/arm/boards/pcm051/mux.c
new file mode 100644
index 0000000..b8fb669
--- /dev/null
+++ b/arch/arm/boards/pcm051/mux.c
@@ -0,0 +1,20 @@
+#include <common.h>
+#include <config.h>
+#include <asm/io.h>
+#include <mach/am33xx-mux.h>
+
+static const struct module_pin_mux mmc0_pin_mux[] = {
+ {OFFSET(mmc0_dat3), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_DAT3 */
+ {OFFSET(mmc0_dat2), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_DAT2 */
+ {OFFSET(mmc0_dat1), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_DAT1 */
+ {OFFSET(mmc0_dat0), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_DAT0 */
+ {OFFSET(mmc0_clk), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_CLK */
+ {OFFSET(mmc0_cmd), (MODE(0) | RXACTIVE | PULLUP_EN)}, /* MMC0_CMD */
+ {OFFSET(spi0_cs1), (MODE(5) | RXACTIVE | PULLUP_EN)}, /* MMC0_CD */
+ {-1},
+};
+
+void pcm051_enable_mmc0_pin_mux(void)
+{
+ configure_module_pin_mux(mmc0_pin_mux);
+}
diff --git a/arch/arm/boards/pcm051/mux.h b/arch/arm/boards/pcm051/mux.h
new file mode 100644
index 0000000..8113a84
--- /dev/null
+++ b/arch/arm/boards/pcm051/mux.h
@@ -0,0 +1,2 @@
+extern void pcm051_enable_mmc0_pin_mux(void);
+
--
1.7.0.4
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC PATCH 1/2] AM33XX: Move muxing defines to header file
2013-03-12 14:04 [RFC PATCH 1/2] AM33XX: Move muxing defines to header file Teresa Gámez
2013-03-12 14:04 ` [RFC PATCH 2/2] AM33XX: pcm051: Create custom mux file Teresa Gámez
@ 2013-03-14 7:30 ` Sascha Hauer
2013-03-14 9:35 ` Jan Lübbe
2013-03-15 7:23 ` Sascha Hauer
2 siblings, 1 reply; 5+ messages in thread
From: Sascha Hauer @ 2013-03-14 7:30 UTC (permalink / raw)
To: Teresa Gámez; +Cc: barebox
Hi Teresa,
On Tue, Mar 12, 2013 at 03:04:12PM +0100, Teresa Gámez wrote:
> The muxing in the am33xx_mux.c file is not generic as the muxing
> setup does not fit for every board. Move the structs and functions
> to the mach/am33xx-mux.h so board dependend mux setups can be
> created.
>
> Signed-off-by: Teresa Gámez <t.gamez@phytec.de>
Looks good to me. Jan is more familiar with the am33xx. Jan,
could you have a look on it?
Sascha
> ---
> arch/arm/boards/beaglebone/board.c | 4 +-
> arch/arm/boards/beaglebone/lowlevel.c | 2 +-
> arch/arm/boards/pcm051/board.c | 2 +-
> arch/arm/mach-omap/am33xx_mux.c | 246 +-------------------------
> arch/arm/mach-omap/include/mach/am33xx-mux.h | 246 +++++++++++++++++++++++++-
> 5 files changed, 252 insertions(+), 248 deletions(-)
>
> diff --git a/arch/arm/boards/beaglebone/board.c b/arch/arm/boards/beaglebone/board.c
> index e4b8b0a..70c6070 100644
> --- a/arch/arm/boards/beaglebone/board.c
> +++ b/arch/arm/boards/beaglebone/board.c
> @@ -95,7 +95,7 @@ static void beaglebone_eth_init(void)
>
> writel(0, AM33XX_MAC_MII_SEL);
>
> - enable_mii1_pin_mux();
> + am33xx_enable_mii1_pin_mux();
>
> am33xx_add_cpsw(&cpsw_data);
> }
> @@ -104,7 +104,7 @@ static int beaglebone_devices_init(void)
> {
> am33xx_add_mmc0(NULL);
>
> - enable_i2c0_pin_mux();
> + am33xx_enable_i2c0_pin_mux();
> beaglebone_eth_init();
>
> armlinux_set_bootparams((void *)0x80000100);
> diff --git a/arch/arm/boards/beaglebone/lowlevel.c b/arch/arm/boards/beaglebone/lowlevel.c
> index 76ac90b..a9737d9 100644
> --- a/arch/arm/boards/beaglebone/lowlevel.c
> +++ b/arch/arm/boards/beaglebone/lowlevel.c
> @@ -243,7 +243,7 @@ static int beaglebone_board_init(void)
> beaglebone_sram_init();
>
> /* Enable pin mux */
> - enable_uart0_pin_mux();
> + am33xx_enable_uart0_pin_mux();
>
> return 0;
> }
> diff --git a/arch/arm/boards/pcm051/board.c b/arch/arm/boards/pcm051/board.c
> index 9739a2c..a38d844 100644
> --- a/arch/arm/boards/pcm051/board.c
> +++ b/arch/arm/boards/pcm051/board.c
> @@ -52,7 +52,7 @@ mem_initcall(pcm051_mem_init);
>
> static int pcm051_devices_init(void)
> {
> - enable_mmc0_pin_mux();
> + am33xx_enable_mmc0_pin_mux();
>
> am33xx_add_mmc0(NULL);
>
> diff --git a/arch/arm/mach-omap/am33xx_mux.c b/arch/arm/mach-omap/am33xx_mux.c
> index 3d7f245..36fe379 100644
> --- a/arch/arm/mach-omap/am33xx_mux.c
> +++ b/arch/arm/mach-omap/am33xx_mux.c
> @@ -15,242 +15,12 @@
> #include <common.h>
> #include <config.h>
> #include <asm/io.h>
> +#include <mach/am33xx-mux.h>
> #include <mach/am33xx-silicon.h>
>
> #define MUX_CFG(value, offset) \
> __raw_writel(value, (AM33XX_CTRL_BASE + offset));
>
> -/* PAD Control Fields */
> -#define SLEWCTRL (0x1 << 6)
> -#define RXACTIVE (0x1 << 5)
> -#define PULLUP_EN (0x1 << 4) /* Pull UP Selection */
> -#define PULLUDEN (0x0 << 3) /* Pull up enabled */
> -#define PULLUDDIS (0x1 << 3) /* Pull up disabled */
> -#define MODE(val) val
> -
> -/*
> - * PAD CONTROL OFFSETS
> - * Field names corresponds to the pad signal name
> - */
> -/* TODO replace with defines */
> -struct pad_signals {
> - int gpmc_ad0;
> - int gpmc_ad1;
> - int gpmc_ad2;
> - int gpmc_ad3;
> - int gpmc_ad4;
> - int gpmc_ad5;
> - int gpmc_ad6;
> - int gpmc_ad7;
> - int gpmc_ad8;
> - int gpmc_ad9;
> - int gpmc_ad10;
> - int gpmc_ad11;
> - int gpmc_ad12;
> - int gpmc_ad13;
> - int gpmc_ad14;
> - int gpmc_ad15;
> - int gpmc_a0;
> - int gpmc_a1;
> - int gpmc_a2;
> - int gpmc_a3;
> - int gpmc_a4;
> - int gpmc_a5;
> - int gpmc_a6;
> - int gpmc_a7;
> - int gpmc_a8;
> - int gpmc_a9;
> - int gpmc_a10;
> - int gpmc_a11;
> - int gpmc_wait0;
> - int gpmc_wpn;
> - int gpmc_be1n;
> - int gpmc_csn0;
> - int gpmc_csn1;
> - int gpmc_csn2;
> - int gpmc_csn3;
> - int gpmc_clk;
> - int gpmc_advn_ale;
> - int gpmc_oen_ren;
> - int gpmc_wen;
> - int gpmc_be0n_cle;
> - int lcd_data0;
> - int lcd_data1;
> - int lcd_data2;
> - int lcd_data3;
> - int lcd_data4;
> - int lcd_data5;
> - int lcd_data6;
> - int lcd_data7;
> - int lcd_data8;
> - int lcd_data9;
> - int lcd_data10;
> - int lcd_data11;
> - int lcd_data12;
> - int lcd_data13;
> - int lcd_data14;
> - int lcd_data15;
> - int lcd_vsync;
> - int lcd_hsync;
> - int lcd_pclk;
> - int lcd_ac_bias_en;
> - int mmc0_dat3;
> - int mmc0_dat2;
> - int mmc0_dat1;
> - int mmc0_dat0;
> - int mmc0_clk;
> - int mmc0_cmd;
> - int mii1_col;
> - int mii1_crs;
> - int mii1_rxerr;
> - int mii1_txen;
> - int mii1_rxdv;
> - int mii1_txd3;
> - int mii1_txd2;
> - int mii1_txd1;
> - int mii1_txd0;
> - int mii1_txclk;
> - int mii1_rxclk;
> - int mii1_rxd3;
> - int mii1_rxd2;
> - int mii1_rxd1;
> - int mii1_rxd0;
> - int rmii1_refclk;
> - int mdio_data;
> - int mdio_clk;
> - int spi0_sclk;
> - int spi0_d0;
> - int spi0_d1;
> - int spi0_cs0;
> - int spi0_cs1;
> - int ecap0_in_pwm0_out;
> - int uart0_ctsn;
> - int uart0_rtsn;
> - int uart0_rxd;
> - int uart0_txd;
> - int uart1_ctsn;
> - int uart1_rtsn;
> - int uart1_rxd;
> - int uart1_txd;
> - int i2c0_sda;
> - int i2c0_scl;
> - int mcasp0_aclkx;
> - int mcasp0_fsx;
> - int mcasp0_axr0;
> - int mcasp0_ahclkr;
> - int mcasp0_aclkr;
> - int mcasp0_fsr;
> - int mcasp0_axr1;
> - int mcasp0_ahclkx;
> - int xdma_event_intr0;
> - int xdma_event_intr1;
> - int nresetin_out;
> - int porz;
> - int nnmi;
> - int osc0_in;
> - int osc0_out;
> - int rsvd1;
> - int tms;
> - int tdi;
> - int tdo;
> - int tck;
> - int ntrst;
> - int emu0;
> - int emu1;
> - int osc1_in;
> - int osc1_out;
> - int pmic_power_en;
> - int rtc_porz;
> - int rsvd2;
> - int ext_wakeup;
> - int enz_kaldo_1p8v;
> - int usb0_dm;
> - int usb0_dp;
> - int usb0_ce;
> - int usb0_id;
> - int usb0_vbus;
> - int usb0_drvvbus;
> - int usb1_dm;
> - int usb1_dp;
> - int usb1_ce;
> - int usb1_id;
> - int usb1_vbus;
> - int usb1_drvvbus;
> - int ddr_resetn;
> - int ddr_csn0;
> - int ddr_cke;
> - int ddr_ck;
> - int ddr_nck;
> - int ddr_casn;
> - int ddr_rasn;
> - int ddr_wen;
> - int ddr_ba0;
> - int ddr_ba1;
> - int ddr_ba2;
> - int ddr_a0;
> - int ddr_a1;
> - int ddr_a2;
> - int ddr_a3;
> - int ddr_a4;
> - int ddr_a5;
> - int ddr_a6;
> - int ddr_a7;
> - int ddr_a8;
> - int ddr_a9;
> - int ddr_a10;
> - int ddr_a11;
> - int ddr_a12;
> - int ddr_a13;
> - int ddr_a14;
> - int ddr_a15;
> - int ddr_odt;
> - int ddr_d0;
> - int ddr_d1;
> - int ddr_d2;
> - int ddr_d3;
> - int ddr_d4;
> - int ddr_d5;
> - int ddr_d6;
> - int ddr_d7;
> - int ddr_d8;
> - int ddr_d9;
> - int ddr_d10;
> - int ddr_d11;
> - int ddr_d12;
> - int ddr_d13;
> - int ddr_d14;
> - int ddr_d15;
> - int ddr_dqm0;
> - int ddr_dqm1;
> - int ddr_dqs0;
> - int ddr_dqsn0;
> - int ddr_dqs1;
> - int ddr_dqsn1;
> - int ddr_vref;
> - int ddr_vtp;
> - int ddr_strben0;
> - int ddr_strben1;
> - int ain7;
> - int ain6;
> - int ain5;
> - int ain4;
> - int ain3;
> - int ain2;
> - int ain1;
> - int ain0;
> - int vrefp;
> - int vrefn;
> -};
> -
> -struct module_pin_mux {
> - short reg_offset;
> - unsigned char val;
> -};
> -
> -#define PAD_CTRL_BASE 0x800
> -#define OFFSET(x) (unsigned int) (&((struct pad_signals *) \
> - (PAD_CTRL_BASE))->x)
> -
> static const __maybe_unused struct module_pin_mux uart0_pin_mux[] = {
> {OFFSET(uart0_rxd), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* UART0_RXD */
> {OFFSET(uart0_txd), (MODE(0) | PULLUDEN)}, /* UART0_TXD */
> @@ -469,7 +239,7 @@ static const __maybe_unused struct module_pin_mux spi1_pin_mux[] = {
> /*
> * Configure the pin mux for the module
> */
> -static void configure_module_pin_mux(const struct module_pin_mux *mod_pin_mux)
> +void configure_module_pin_mux(const struct module_pin_mux *mod_pin_mux)
> {
> int i;
>
> @@ -480,32 +250,32 @@ static void configure_module_pin_mux(const struct module_pin_mux *mod_pin_mux)
> MUX_CFG(mod_pin_mux[i].val, mod_pin_mux[i].reg_offset);
> }
>
> -void enable_mii1_pin_mux(void)
> +void am33xx_enable_mii1_pin_mux(void)
> {
> configure_module_pin_mux(mii1_pin_mux);
> }
>
> -void enable_i2c0_pin_mux(void)
> +void am33xx_enable_i2c0_pin_mux(void)
> {
> configure_module_pin_mux(i2c0_pin_mux);
> }
>
> -void enable_i2c1_pin_mux(void)
> +void am33xx_enable_i2c1_pin_mux(void)
> {
> configure_module_pin_mux(i2c1_pin_mux);
> }
>
> -void enable_i2c2_pin_mux(void)
> +void am33xx_enable_i2c2_pin_mux(void)
> {
> configure_module_pin_mux(i2c2_pin_mux);
> }
>
> -void enable_uart0_pin_mux(void)
> +void am33xx_enable_uart0_pin_mux(void)
> {
> configure_module_pin_mux(uart0_pin_mux);
> }
>
> -void enable_mmc0_pin_mux(void)
> +void am33xx_enable_mmc0_pin_mux(void)
> {
> configure_module_pin_mux(mmc0_pin_mux);
> }
> diff --git a/arch/arm/mach-omap/include/mach/am33xx-mux.h b/arch/arm/mach-omap/include/mach/am33xx-mux.h
> index 6078b3a..896e958 100644
> --- a/arch/arm/mach-omap/include/mach/am33xx-mux.h
> +++ b/arch/arm/mach-omap/include/mach/am33xx-mux.h
> @@ -13,11 +13,245 @@
> #ifndef __AM33XX_MUX_H__
> #define __AM33XX_MUX_H__
>
> -extern void enable_mii1_pin_mux(void);
> -extern void enable_i2c0_pin_mux(void);
> -extern void enable_i2c1_pin_mux(void);
> -extern void enable_i2c2_pin_mux(void);
> -extern void enable_uart0_pin_mux(void);
> -extern void enable_mmc0_pin_mux(void);
> +/* PAD Control Fields */
> +#define SLEWCTRL (0x1 << 6)
> +#define RXACTIVE (0x1 << 5)
> +#define PULLUP_EN (0x1 << 4) /* Pull UP Selection */
> +#define PULLUDEN (0x0 << 3) /* Pull up enabled */
> +#define PULLUDDIS (0x1 << 3) /* Pull up disabled */
> +#define MODE(val) val
> +
> +/*
> + * PAD CONTROL OFFSETS
> + * Field names corresponds to the pad signal name
> + */
> +/* TODO replace with defines */
> +struct pad_signals {
> + int gpmc_ad0;
> + int gpmc_ad1;
> + int gpmc_ad2;
> + int gpmc_ad3;
> + int gpmc_ad4;
> + int gpmc_ad5;
> + int gpmc_ad6;
> + int gpmc_ad7;
> + int gpmc_ad8;
> + int gpmc_ad9;
> + int gpmc_ad10;
> + int gpmc_ad11;
> + int gpmc_ad12;
> + int gpmc_ad13;
> + int gpmc_ad14;
> + int gpmc_ad15;
> + int gpmc_a0;
> + int gpmc_a1;
> + int gpmc_a2;
> + int gpmc_a3;
> + int gpmc_a4;
> + int gpmc_a5;
> + int gpmc_a6;
> + int gpmc_a7;
> + int gpmc_a8;
> + int gpmc_a9;
> + int gpmc_a10;
> + int gpmc_a11;
> + int gpmc_wait0;
> + int gpmc_wpn;
> + int gpmc_be1n;
> + int gpmc_csn0;
> + int gpmc_csn1;
> + int gpmc_csn2;
> + int gpmc_csn3;
> + int gpmc_clk;
> + int gpmc_advn_ale;
> + int gpmc_oen_ren;
> + int gpmc_wen;
> + int gpmc_be0n_cle;
> + int lcd_data0;
> + int lcd_data1;
> + int lcd_data2;
> + int lcd_data3;
> + int lcd_data4;
> + int lcd_data5;
> + int lcd_data6;
> + int lcd_data7;
> + int lcd_data8;
> + int lcd_data9;
> + int lcd_data10;
> + int lcd_data11;
> + int lcd_data12;
> + int lcd_data13;
> + int lcd_data14;
> + int lcd_data15;
> + int lcd_vsync;
> + int lcd_hsync;
> + int lcd_pclk;
> + int lcd_ac_bias_en;
> + int mmc0_dat3;
> + int mmc0_dat2;
> + int mmc0_dat1;
> + int mmc0_dat0;
> + int mmc0_clk;
> + int mmc0_cmd;
> + int mii1_col;
> + int mii1_crs;
> + int mii1_rxerr;
> + int mii1_txen;
> + int mii1_rxdv;
> + int mii1_txd3;
> + int mii1_txd2;
> + int mii1_txd1;
> + int mii1_txd0;
> + int mii1_txclk;
> + int mii1_rxclk;
> + int mii1_rxd3;
> + int mii1_rxd2;
> + int mii1_rxd1;
> + int mii1_rxd0;
> + int rmii1_refclk;
> + int mdio_data;
> + int mdio_clk;
> + int spi0_sclk;
> + int spi0_d0;
> + int spi0_d1;
> + int spi0_cs0;
> + int spi0_cs1;
> + int ecap0_in_pwm0_out;
> + int uart0_ctsn;
> + int uart0_rtsn;
> + int uart0_rxd;
> + int uart0_txd;
> + int uart1_ctsn;
> + int uart1_rtsn;
> + int uart1_rxd;
> + int uart1_txd;
> + int i2c0_sda;
> + int i2c0_scl;
> + int mcasp0_aclkx;
> + int mcasp0_fsx;
> + int mcasp0_axr0;
> + int mcasp0_ahclkr;
> + int mcasp0_aclkr;
> + int mcasp0_fsr;
> + int mcasp0_axr1;
> + int mcasp0_ahclkx;
> + int xdma_event_intr0;
> + int xdma_event_intr1;
> + int nresetin_out;
> + int porz;
> + int nnmi;
> + int osc0_in;
> + int osc0_out;
> + int rsvd1;
> + int tms;
> + int tdi;
> + int tdo;
> + int tck;
> + int ntrst;
> + int emu0;
> + int emu1;
> + int osc1_in;
> + int osc1_out;
> + int pmic_power_en;
> + int rtc_porz;
> + int rsvd2;
> + int ext_wakeup;
> + int enz_kaldo_1p8v;
> + int usb0_dm;
> + int usb0_dp;
> + int usb0_ce;
> + int usb0_id;
> + int usb0_vbus;
> + int usb0_drvvbus;
> + int usb1_dm;
> + int usb1_dp;
> + int usb1_ce;
> + int usb1_id;
> + int usb1_vbus;
> + int usb1_drvvbus;
> + int ddr_resetn;
> + int ddr_csn0;
> + int ddr_cke;
> + int ddr_ck;
> + int ddr_nck;
> + int ddr_casn;
> + int ddr_rasn;
> + int ddr_wen;
> + int ddr_ba0;
> + int ddr_ba1;
> + int ddr_ba2;
> + int ddr_a0;
> + int ddr_a1;
> + int ddr_a2;
> + int ddr_a3;
> + int ddr_a4;
> + int ddr_a5;
> + int ddr_a6;
> + int ddr_a7;
> + int ddr_a8;
> + int ddr_a9;
> + int ddr_a10;
> + int ddr_a11;
> + int ddr_a12;
> + int ddr_a13;
> + int ddr_a14;
> + int ddr_a15;
> + int ddr_odt;
> + int ddr_d0;
> + int ddr_d1;
> + int ddr_d2;
> + int ddr_d3;
> + int ddr_d4;
> + int ddr_d5;
> + int ddr_d6;
> + int ddr_d7;
> + int ddr_d8;
> + int ddr_d9;
> + int ddr_d10;
> + int ddr_d11;
> + int ddr_d12;
> + int ddr_d13;
> + int ddr_d14;
> + int ddr_d15;
> + int ddr_dqm0;
> + int ddr_dqm1;
> + int ddr_dqs0;
> + int ddr_dqsn0;
> + int ddr_dqs1;
> + int ddr_dqsn1;
> + int ddr_vref;
> + int ddr_vtp;
> + int ddr_strben0;
> + int ddr_strben1;
> + int ain7;
> + int ain6;
> + int ain5;
> + int ain4;
> + int ain3;
> + int ain2;
> + int ain1;
> + int ain0;
> + int vrefp;
> + int vrefn;
> +};
> +
> +struct module_pin_mux {
> + short reg_offset;
> + unsigned char val;
> +};
> +
> +#define PAD_CTRL_BASE 0x800
> +#define OFFSET(x) (unsigned int) (&((struct pad_signals *) \
> + (PAD_CTRL_BASE))->x)
> +
> +extern void configure_module_pin_mux(const struct module_pin_mux *mod_pin_mux);
> +
> +/* Standard mux settings */
> +extern void am33xx_enable_mii1_pin_mux(void);
> +extern void am33xx_enable_i2c0_pin_mux(void);
> +extern void am33xx_enable_i2c1_pin_mux(void);
> +extern void am33xx_enable_i2c2_pin_mux(void);
> +extern void am33xx_enable_uart0_pin_mux(void);
> +extern void am33xx_enable_mmc0_pin_mux(void);
>
> #endif /*__AM33XX_MUX_H__ */
> --
> 1.7.0.4
>
>
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC PATCH 1/2] AM33XX: Move muxing defines to header file
2013-03-14 7:30 ` [RFC PATCH 1/2] AM33XX: Move muxing defines to header file Sascha Hauer
@ 2013-03-14 9:35 ` Jan Lübbe
0 siblings, 0 replies; 5+ messages in thread
From: Jan Lübbe @ 2013-03-14 9:35 UTC (permalink / raw)
To: Sascha Hauer, Teresa Gámez; +Cc: barebox
On Thu, 2013-03-14 at 08:30 +0100, Sascha Hauer wrote:
> Hi Teresa,
>
> On Tue, Mar 12, 2013 at 03:04:12PM +0100, Teresa Gámez wrote:
> > The muxing in the am33xx_mux.c file is not generic as the muxing
> > setup does not fit for every board. Move the structs and functions
> > to the mach/am33xx-mux.h so board dependend mux setups can be
> > created.
> >
> > Signed-off-by: Teresa Gámez <t.gamez@phytec.de>
>
> Looks good to me. Jan is more familiar with the am33xx. Jan,
> could you have a look on it?
I haven't tested it, but the approach seems good. When adding a new
board, I would probably have done the same.
The current PinMux is still a bit BeagleBone-specific, but that should
be fixed in a separate patch. (Or instead write a pinctrl-single driver
and configure PinMux via DT).
Regards,
Jan
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC PATCH 1/2] AM33XX: Move muxing defines to header file
2013-03-12 14:04 [RFC PATCH 1/2] AM33XX: Move muxing defines to header file Teresa Gámez
2013-03-12 14:04 ` [RFC PATCH 2/2] AM33XX: pcm051: Create custom mux file Teresa Gámez
2013-03-14 7:30 ` [RFC PATCH 1/2] AM33XX: Move muxing defines to header file Sascha Hauer
@ 2013-03-15 7:23 ` Sascha Hauer
2 siblings, 0 replies; 5+ messages in thread
From: Sascha Hauer @ 2013-03-15 7:23 UTC (permalink / raw)
To: Teresa Gámez; +Cc: barebox
On Tue, Mar 12, 2013 at 03:04:12PM +0100, Teresa Gámez wrote:
> The muxing in the am33xx_mux.c file is not generic as the muxing
> setup does not fit for every board. Move the structs and functions
> to the mach/am33xx-mux.h so board dependend mux setups can be
> created.
>
> Signed-off-by: Teresa Gámez <t.gamez@phytec.de>
Applied, thanks
Sascha
> ---
> arch/arm/boards/beaglebone/board.c | 4 +-
> arch/arm/boards/beaglebone/lowlevel.c | 2 +-
> arch/arm/boards/pcm051/board.c | 2 +-
> arch/arm/mach-omap/am33xx_mux.c | 246 +-------------------------
> arch/arm/mach-omap/include/mach/am33xx-mux.h | 246 +++++++++++++++++++++++++-
> 5 files changed, 252 insertions(+), 248 deletions(-)
>
> diff --git a/arch/arm/boards/beaglebone/board.c b/arch/arm/boards/beaglebone/board.c
> index e4b8b0a..70c6070 100644
> --- a/arch/arm/boards/beaglebone/board.c
> +++ b/arch/arm/boards/beaglebone/board.c
> @@ -95,7 +95,7 @@ static void beaglebone_eth_init(void)
>
> writel(0, AM33XX_MAC_MII_SEL);
>
> - enable_mii1_pin_mux();
> + am33xx_enable_mii1_pin_mux();
>
> am33xx_add_cpsw(&cpsw_data);
> }
> @@ -104,7 +104,7 @@ static int beaglebone_devices_init(void)
> {
> am33xx_add_mmc0(NULL);
>
> - enable_i2c0_pin_mux();
> + am33xx_enable_i2c0_pin_mux();
> beaglebone_eth_init();
>
> armlinux_set_bootparams((void *)0x80000100);
> diff --git a/arch/arm/boards/beaglebone/lowlevel.c b/arch/arm/boards/beaglebone/lowlevel.c
> index 76ac90b..a9737d9 100644
> --- a/arch/arm/boards/beaglebone/lowlevel.c
> +++ b/arch/arm/boards/beaglebone/lowlevel.c
> @@ -243,7 +243,7 @@ static int beaglebone_board_init(void)
> beaglebone_sram_init();
>
> /* Enable pin mux */
> - enable_uart0_pin_mux();
> + am33xx_enable_uart0_pin_mux();
>
> return 0;
> }
> diff --git a/arch/arm/boards/pcm051/board.c b/arch/arm/boards/pcm051/board.c
> index 9739a2c..a38d844 100644
> --- a/arch/arm/boards/pcm051/board.c
> +++ b/arch/arm/boards/pcm051/board.c
> @@ -52,7 +52,7 @@ mem_initcall(pcm051_mem_init);
>
> static int pcm051_devices_init(void)
> {
> - enable_mmc0_pin_mux();
> + am33xx_enable_mmc0_pin_mux();
>
> am33xx_add_mmc0(NULL);
>
> diff --git a/arch/arm/mach-omap/am33xx_mux.c b/arch/arm/mach-omap/am33xx_mux.c
> index 3d7f245..36fe379 100644
> --- a/arch/arm/mach-omap/am33xx_mux.c
> +++ b/arch/arm/mach-omap/am33xx_mux.c
> @@ -15,242 +15,12 @@
> #include <common.h>
> #include <config.h>
> #include <asm/io.h>
> +#include <mach/am33xx-mux.h>
> #include <mach/am33xx-silicon.h>
>
> #define MUX_CFG(value, offset) \
> __raw_writel(value, (AM33XX_CTRL_BASE + offset));
>
> -/* PAD Control Fields */
> -#define SLEWCTRL (0x1 << 6)
> -#define RXACTIVE (0x1 << 5)
> -#define PULLUP_EN (0x1 << 4) /* Pull UP Selection */
> -#define PULLUDEN (0x0 << 3) /* Pull up enabled */
> -#define PULLUDDIS (0x1 << 3) /* Pull up disabled */
> -#define MODE(val) val
> -
> -/*
> - * PAD CONTROL OFFSETS
> - * Field names corresponds to the pad signal name
> - */
> -/* TODO replace with defines */
> -struct pad_signals {
> - int gpmc_ad0;
> - int gpmc_ad1;
> - int gpmc_ad2;
> - int gpmc_ad3;
> - int gpmc_ad4;
> - int gpmc_ad5;
> - int gpmc_ad6;
> - int gpmc_ad7;
> - int gpmc_ad8;
> - int gpmc_ad9;
> - int gpmc_ad10;
> - int gpmc_ad11;
> - int gpmc_ad12;
> - int gpmc_ad13;
> - int gpmc_ad14;
> - int gpmc_ad15;
> - int gpmc_a0;
> - int gpmc_a1;
> - int gpmc_a2;
> - int gpmc_a3;
> - int gpmc_a4;
> - int gpmc_a5;
> - int gpmc_a6;
> - int gpmc_a7;
> - int gpmc_a8;
> - int gpmc_a9;
> - int gpmc_a10;
> - int gpmc_a11;
> - int gpmc_wait0;
> - int gpmc_wpn;
> - int gpmc_be1n;
> - int gpmc_csn0;
> - int gpmc_csn1;
> - int gpmc_csn2;
> - int gpmc_csn3;
> - int gpmc_clk;
> - int gpmc_advn_ale;
> - int gpmc_oen_ren;
> - int gpmc_wen;
> - int gpmc_be0n_cle;
> - int lcd_data0;
> - int lcd_data1;
> - int lcd_data2;
> - int lcd_data3;
> - int lcd_data4;
> - int lcd_data5;
> - int lcd_data6;
> - int lcd_data7;
> - int lcd_data8;
> - int lcd_data9;
> - int lcd_data10;
> - int lcd_data11;
> - int lcd_data12;
> - int lcd_data13;
> - int lcd_data14;
> - int lcd_data15;
> - int lcd_vsync;
> - int lcd_hsync;
> - int lcd_pclk;
> - int lcd_ac_bias_en;
> - int mmc0_dat3;
> - int mmc0_dat2;
> - int mmc0_dat1;
> - int mmc0_dat0;
> - int mmc0_clk;
> - int mmc0_cmd;
> - int mii1_col;
> - int mii1_crs;
> - int mii1_rxerr;
> - int mii1_txen;
> - int mii1_rxdv;
> - int mii1_txd3;
> - int mii1_txd2;
> - int mii1_txd1;
> - int mii1_txd0;
> - int mii1_txclk;
> - int mii1_rxclk;
> - int mii1_rxd3;
> - int mii1_rxd2;
> - int mii1_rxd1;
> - int mii1_rxd0;
> - int rmii1_refclk;
> - int mdio_data;
> - int mdio_clk;
> - int spi0_sclk;
> - int spi0_d0;
> - int spi0_d1;
> - int spi0_cs0;
> - int spi0_cs1;
> - int ecap0_in_pwm0_out;
> - int uart0_ctsn;
> - int uart0_rtsn;
> - int uart0_rxd;
> - int uart0_txd;
> - int uart1_ctsn;
> - int uart1_rtsn;
> - int uart1_rxd;
> - int uart1_txd;
> - int i2c0_sda;
> - int i2c0_scl;
> - int mcasp0_aclkx;
> - int mcasp0_fsx;
> - int mcasp0_axr0;
> - int mcasp0_ahclkr;
> - int mcasp0_aclkr;
> - int mcasp0_fsr;
> - int mcasp0_axr1;
> - int mcasp0_ahclkx;
> - int xdma_event_intr0;
> - int xdma_event_intr1;
> - int nresetin_out;
> - int porz;
> - int nnmi;
> - int osc0_in;
> - int osc0_out;
> - int rsvd1;
> - int tms;
> - int tdi;
> - int tdo;
> - int tck;
> - int ntrst;
> - int emu0;
> - int emu1;
> - int osc1_in;
> - int osc1_out;
> - int pmic_power_en;
> - int rtc_porz;
> - int rsvd2;
> - int ext_wakeup;
> - int enz_kaldo_1p8v;
> - int usb0_dm;
> - int usb0_dp;
> - int usb0_ce;
> - int usb0_id;
> - int usb0_vbus;
> - int usb0_drvvbus;
> - int usb1_dm;
> - int usb1_dp;
> - int usb1_ce;
> - int usb1_id;
> - int usb1_vbus;
> - int usb1_drvvbus;
> - int ddr_resetn;
> - int ddr_csn0;
> - int ddr_cke;
> - int ddr_ck;
> - int ddr_nck;
> - int ddr_casn;
> - int ddr_rasn;
> - int ddr_wen;
> - int ddr_ba0;
> - int ddr_ba1;
> - int ddr_ba2;
> - int ddr_a0;
> - int ddr_a1;
> - int ddr_a2;
> - int ddr_a3;
> - int ddr_a4;
> - int ddr_a5;
> - int ddr_a6;
> - int ddr_a7;
> - int ddr_a8;
> - int ddr_a9;
> - int ddr_a10;
> - int ddr_a11;
> - int ddr_a12;
> - int ddr_a13;
> - int ddr_a14;
> - int ddr_a15;
> - int ddr_odt;
> - int ddr_d0;
> - int ddr_d1;
> - int ddr_d2;
> - int ddr_d3;
> - int ddr_d4;
> - int ddr_d5;
> - int ddr_d6;
> - int ddr_d7;
> - int ddr_d8;
> - int ddr_d9;
> - int ddr_d10;
> - int ddr_d11;
> - int ddr_d12;
> - int ddr_d13;
> - int ddr_d14;
> - int ddr_d15;
> - int ddr_dqm0;
> - int ddr_dqm1;
> - int ddr_dqs0;
> - int ddr_dqsn0;
> - int ddr_dqs1;
> - int ddr_dqsn1;
> - int ddr_vref;
> - int ddr_vtp;
> - int ddr_strben0;
> - int ddr_strben1;
> - int ain7;
> - int ain6;
> - int ain5;
> - int ain4;
> - int ain3;
> - int ain2;
> - int ain1;
> - int ain0;
> - int vrefp;
> - int vrefn;
> -};
> -
> -struct module_pin_mux {
> - short reg_offset;
> - unsigned char val;
> -};
> -
> -#define PAD_CTRL_BASE 0x800
> -#define OFFSET(x) (unsigned int) (&((struct pad_signals *) \
> - (PAD_CTRL_BASE))->x)
> -
> static const __maybe_unused struct module_pin_mux uart0_pin_mux[] = {
> {OFFSET(uart0_rxd), (MODE(0) | PULLUP_EN | RXACTIVE)}, /* UART0_RXD */
> {OFFSET(uart0_txd), (MODE(0) | PULLUDEN)}, /* UART0_TXD */
> @@ -469,7 +239,7 @@ static const __maybe_unused struct module_pin_mux spi1_pin_mux[] = {
> /*
> * Configure the pin mux for the module
> */
> -static void configure_module_pin_mux(const struct module_pin_mux *mod_pin_mux)
> +void configure_module_pin_mux(const struct module_pin_mux *mod_pin_mux)
> {
> int i;
>
> @@ -480,32 +250,32 @@ static void configure_module_pin_mux(const struct module_pin_mux *mod_pin_mux)
> MUX_CFG(mod_pin_mux[i].val, mod_pin_mux[i].reg_offset);
> }
>
> -void enable_mii1_pin_mux(void)
> +void am33xx_enable_mii1_pin_mux(void)
> {
> configure_module_pin_mux(mii1_pin_mux);
> }
>
> -void enable_i2c0_pin_mux(void)
> +void am33xx_enable_i2c0_pin_mux(void)
> {
> configure_module_pin_mux(i2c0_pin_mux);
> }
>
> -void enable_i2c1_pin_mux(void)
> +void am33xx_enable_i2c1_pin_mux(void)
> {
> configure_module_pin_mux(i2c1_pin_mux);
> }
>
> -void enable_i2c2_pin_mux(void)
> +void am33xx_enable_i2c2_pin_mux(void)
> {
> configure_module_pin_mux(i2c2_pin_mux);
> }
>
> -void enable_uart0_pin_mux(void)
> +void am33xx_enable_uart0_pin_mux(void)
> {
> configure_module_pin_mux(uart0_pin_mux);
> }
>
> -void enable_mmc0_pin_mux(void)
> +void am33xx_enable_mmc0_pin_mux(void)
> {
> configure_module_pin_mux(mmc0_pin_mux);
> }
> diff --git a/arch/arm/mach-omap/include/mach/am33xx-mux.h b/arch/arm/mach-omap/include/mach/am33xx-mux.h
> index 6078b3a..896e958 100644
> --- a/arch/arm/mach-omap/include/mach/am33xx-mux.h
> +++ b/arch/arm/mach-omap/include/mach/am33xx-mux.h
> @@ -13,11 +13,245 @@
> #ifndef __AM33XX_MUX_H__
> #define __AM33XX_MUX_H__
>
> -extern void enable_mii1_pin_mux(void);
> -extern void enable_i2c0_pin_mux(void);
> -extern void enable_i2c1_pin_mux(void);
> -extern void enable_i2c2_pin_mux(void);
> -extern void enable_uart0_pin_mux(void);
> -extern void enable_mmc0_pin_mux(void);
> +/* PAD Control Fields */
> +#define SLEWCTRL (0x1 << 6)
> +#define RXACTIVE (0x1 << 5)
> +#define PULLUP_EN (0x1 << 4) /* Pull UP Selection */
> +#define PULLUDEN (0x0 << 3) /* Pull up enabled */
> +#define PULLUDDIS (0x1 << 3) /* Pull up disabled */
> +#define MODE(val) val
> +
> +/*
> + * PAD CONTROL OFFSETS
> + * Field names corresponds to the pad signal name
> + */
> +/* TODO replace with defines */
> +struct pad_signals {
> + int gpmc_ad0;
> + int gpmc_ad1;
> + int gpmc_ad2;
> + int gpmc_ad3;
> + int gpmc_ad4;
> + int gpmc_ad5;
> + int gpmc_ad6;
> + int gpmc_ad7;
> + int gpmc_ad8;
> + int gpmc_ad9;
> + int gpmc_ad10;
> + int gpmc_ad11;
> + int gpmc_ad12;
> + int gpmc_ad13;
> + int gpmc_ad14;
> + int gpmc_ad15;
> + int gpmc_a0;
> + int gpmc_a1;
> + int gpmc_a2;
> + int gpmc_a3;
> + int gpmc_a4;
> + int gpmc_a5;
> + int gpmc_a6;
> + int gpmc_a7;
> + int gpmc_a8;
> + int gpmc_a9;
> + int gpmc_a10;
> + int gpmc_a11;
> + int gpmc_wait0;
> + int gpmc_wpn;
> + int gpmc_be1n;
> + int gpmc_csn0;
> + int gpmc_csn1;
> + int gpmc_csn2;
> + int gpmc_csn3;
> + int gpmc_clk;
> + int gpmc_advn_ale;
> + int gpmc_oen_ren;
> + int gpmc_wen;
> + int gpmc_be0n_cle;
> + int lcd_data0;
> + int lcd_data1;
> + int lcd_data2;
> + int lcd_data3;
> + int lcd_data4;
> + int lcd_data5;
> + int lcd_data6;
> + int lcd_data7;
> + int lcd_data8;
> + int lcd_data9;
> + int lcd_data10;
> + int lcd_data11;
> + int lcd_data12;
> + int lcd_data13;
> + int lcd_data14;
> + int lcd_data15;
> + int lcd_vsync;
> + int lcd_hsync;
> + int lcd_pclk;
> + int lcd_ac_bias_en;
> + int mmc0_dat3;
> + int mmc0_dat2;
> + int mmc0_dat1;
> + int mmc0_dat0;
> + int mmc0_clk;
> + int mmc0_cmd;
> + int mii1_col;
> + int mii1_crs;
> + int mii1_rxerr;
> + int mii1_txen;
> + int mii1_rxdv;
> + int mii1_txd3;
> + int mii1_txd2;
> + int mii1_txd1;
> + int mii1_txd0;
> + int mii1_txclk;
> + int mii1_rxclk;
> + int mii1_rxd3;
> + int mii1_rxd2;
> + int mii1_rxd1;
> + int mii1_rxd0;
> + int rmii1_refclk;
> + int mdio_data;
> + int mdio_clk;
> + int spi0_sclk;
> + int spi0_d0;
> + int spi0_d1;
> + int spi0_cs0;
> + int spi0_cs1;
> + int ecap0_in_pwm0_out;
> + int uart0_ctsn;
> + int uart0_rtsn;
> + int uart0_rxd;
> + int uart0_txd;
> + int uart1_ctsn;
> + int uart1_rtsn;
> + int uart1_rxd;
> + int uart1_txd;
> + int i2c0_sda;
> + int i2c0_scl;
> + int mcasp0_aclkx;
> + int mcasp0_fsx;
> + int mcasp0_axr0;
> + int mcasp0_ahclkr;
> + int mcasp0_aclkr;
> + int mcasp0_fsr;
> + int mcasp0_axr1;
> + int mcasp0_ahclkx;
> + int xdma_event_intr0;
> + int xdma_event_intr1;
> + int nresetin_out;
> + int porz;
> + int nnmi;
> + int osc0_in;
> + int osc0_out;
> + int rsvd1;
> + int tms;
> + int tdi;
> + int tdo;
> + int tck;
> + int ntrst;
> + int emu0;
> + int emu1;
> + int osc1_in;
> + int osc1_out;
> + int pmic_power_en;
> + int rtc_porz;
> + int rsvd2;
> + int ext_wakeup;
> + int enz_kaldo_1p8v;
> + int usb0_dm;
> + int usb0_dp;
> + int usb0_ce;
> + int usb0_id;
> + int usb0_vbus;
> + int usb0_drvvbus;
> + int usb1_dm;
> + int usb1_dp;
> + int usb1_ce;
> + int usb1_id;
> + int usb1_vbus;
> + int usb1_drvvbus;
> + int ddr_resetn;
> + int ddr_csn0;
> + int ddr_cke;
> + int ddr_ck;
> + int ddr_nck;
> + int ddr_casn;
> + int ddr_rasn;
> + int ddr_wen;
> + int ddr_ba0;
> + int ddr_ba1;
> + int ddr_ba2;
> + int ddr_a0;
> + int ddr_a1;
> + int ddr_a2;
> + int ddr_a3;
> + int ddr_a4;
> + int ddr_a5;
> + int ddr_a6;
> + int ddr_a7;
> + int ddr_a8;
> + int ddr_a9;
> + int ddr_a10;
> + int ddr_a11;
> + int ddr_a12;
> + int ddr_a13;
> + int ddr_a14;
> + int ddr_a15;
> + int ddr_odt;
> + int ddr_d0;
> + int ddr_d1;
> + int ddr_d2;
> + int ddr_d3;
> + int ddr_d4;
> + int ddr_d5;
> + int ddr_d6;
> + int ddr_d7;
> + int ddr_d8;
> + int ddr_d9;
> + int ddr_d10;
> + int ddr_d11;
> + int ddr_d12;
> + int ddr_d13;
> + int ddr_d14;
> + int ddr_d15;
> + int ddr_dqm0;
> + int ddr_dqm1;
> + int ddr_dqs0;
> + int ddr_dqsn0;
> + int ddr_dqs1;
> + int ddr_dqsn1;
> + int ddr_vref;
> + int ddr_vtp;
> + int ddr_strben0;
> + int ddr_strben1;
> + int ain7;
> + int ain6;
> + int ain5;
> + int ain4;
> + int ain3;
> + int ain2;
> + int ain1;
> + int ain0;
> + int vrefp;
> + int vrefn;
> +};
> +
> +struct module_pin_mux {
> + short reg_offset;
> + unsigned char val;
> +};
> +
> +#define PAD_CTRL_BASE 0x800
> +#define OFFSET(x) (unsigned int) (&((struct pad_signals *) \
> + (PAD_CTRL_BASE))->x)
> +
> +extern void configure_module_pin_mux(const struct module_pin_mux *mod_pin_mux);
> +
> +/* Standard mux settings */
> +extern void am33xx_enable_mii1_pin_mux(void);
> +extern void am33xx_enable_i2c0_pin_mux(void);
> +extern void am33xx_enable_i2c1_pin_mux(void);
> +extern void am33xx_enable_i2c2_pin_mux(void);
> +extern void am33xx_enable_uart0_pin_mux(void);
> +extern void am33xx_enable_mmc0_pin_mux(void);
>
> #endif /*__AM33XX_MUX_H__ */
> --
> 1.7.0.4
>
>
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 5+ messages in thread