From: John Crispin <blogic@openwrt.org>
To: Sergey Ryazanov <ryazanov.s.a@gmail.com>,
Ralf Baechle <ralf@linux-mips.org>
Cc: Linux MIPS <linux-mips@linux-mips.org>
Subject: Re: [PATCH v2 02/13] MIPS: ath25: add basic AR5312 SoC support
Date: Wed, 22 Oct 2014 01:48:34 +0200 [thread overview]
Message-ID: <5446F0D2.7050603@openwrt.org> (raw)
In-Reply-To: <1413932631-12866-3-git-send-email-ryazanov.s.a@gmail.com>
1 comment inline
On 22/10/2014 01:03, Sergey Ryazanov wrote:
> Add basic support for Atheros AR5312/AR2312 SoCs: registers
> definition file and initial setup code.
>
> Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com> ---
>
> Changes since v1: - rename MIPS machine ar231x -> ath25
>
> arch/mips/Kconfig | 1 +
> arch/mips/ath25/Kconfig | 4 +
> arch/mips/ath25/Makefile | 2 +
> arch/mips/ath25/ar5312.c | 134
> +++++++++++++++++ arch/mips/ath25/ar5312.h |
> 18 +++ arch/mips/ath25/board.c | 7 +
> arch/mips/ath25/prom.c | 5 +
> arch/mips/include/asm/mach-ath25/ar5312_regs.h | 190
> +++++++++++++++++++++++++ 8 files changed, 361 insertions(+) create
> mode 100644 arch/mips/ath25/Kconfig create mode 100644
> arch/mips/ath25/ar5312.c create mode 100644
> arch/mips/ath25/ar5312.h create mode 100644
> arch/mips/include/asm/mach-ath25/ar5312_regs.h
>
> diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index
> 54abb9a..baa1c5b 100644 --- a/arch/mips/Kconfig +++
> b/arch/mips/Kconfig @@ -848,6 +848,7 @@ config MIPS_PARAVIRT
> endchoice
>
> source "arch/mips/alchemy/Kconfig" +source
> "arch/mips/ath25/Kconfig" source "arch/mips/ath79/Kconfig" source
> "arch/mips/bcm47xx/Kconfig" source "arch/mips/bcm63xx/Kconfig" diff
> --git a/arch/mips/ath25/Kconfig b/arch/mips/ath25/Kconfig new file
> mode 100644 index 0000000..cf933ea --- /dev/null +++
> b/arch/mips/ath25/Kconfig @@ -0,0 +1,4 @@ +config SOC_AR5312 + bool
> "Atheros AR5312/AR2312+ SoC support" + depends on ATH25 + default
> y diff --git a/arch/mips/ath25/Makefile b/arch/mips/ath25/Makefile
> index 9199fa1..3361619 100644 --- a/arch/mips/ath25/Makefile +++
> b/arch/mips/ath25/Makefile @@ -9,3 +9,5 @@ #
>
> obj-y += board.o prom.o devices.o + +obj-$(CONFIG_SOC_AR5312) +=
> ar5312.o diff --git a/arch/mips/ath25/ar5312.c
> b/arch/mips/ath25/ar5312.c new file mode 100644 index
> 0000000..80d7ed7 --- /dev/null +++ b/arch/mips/ath25/ar5312.c @@
> -0,0 +1,134 @@ +/* + * This file is subject to the terms and
> conditions of the GNU General Public + * License. See the file
> "COPYING" in the main directory of this archive + * for more
> details. + * + * Copyright (C) 2003 Atheros Communications, Inc.,
> All Rights Reserved. + * Copyright (C) 2006 FON Technology, SL. + *
> Copyright (C) 2006 Imre Kaloz <kaloz@openwrt.org> + * Copyright (C)
> 2006-2009 Felix Fietkau <nbd@openwrt.org> + * Copyright (C) 2012
> Alexandros C. Couloumbis <alex@ozo.com> + */ + +/* + * Platform
> devices for Atheros AR5312 SoCs + */ + +#include <linux/init.h>
> +#include <linux/kernel.h> +#include <linux/reboot.h> +#include
> <asm/bootinfo.h> +#include <asm/reboot.h> +#include <asm/time.h> +
> +#include <ar5312_regs.h> +#include <ath25.h> + +#include
> "devices.h" +#include "ar5312.h" + +static void ar5312_restart(char
> *command) +{ + /* reset the system */ + local_irq_disable(); +
> while (1) + ath25_write_reg(AR5312_RESET, AR5312_RESET_SYSTEM);
> +} + +/* + * This table is indexed by bits 5..4 of the CLOCKCTL1
> register + * to determine the predevisor value. + */ +static
> unsigned clockctl1_predivide_table[4] __initdata = { 1, 2, 4, 5 };
> + +static unsigned __init ar5312_cpu_frequency(void) +{ + u32
> scratch, devid, clock_ctl1; + u32 predivide_mask, multiplier_mask,
> doubler_mask; + unsigned predivide_shift, multiplier_shift; +
> unsigned predivide_select, predivisor, multiplier; + + /* Trust the
> bootrom's idea of cpu frequency. */ + scratch =
> ath25_read_reg(AR5312_SCRATCH); + if (scratch) + return scratch;
> + + devid = ath25_read_reg(AR5312_REV); + devid = (devid &
> AR5312_REV_MAJ) >> AR5312_REV_MAJ_S; + if (devid ==
> AR5312_REV_MAJ_AR2313) { + predivide_mask =
> AR2313_CLOCKCTL1_PREDIVIDE_MASK; + predivide_shift =
> AR2313_CLOCKCTL1_PREDIVIDE_SHIFT; + multiplier_mask =
> AR2313_CLOCKCTL1_MULTIPLIER_MASK; + multiplier_shift =
> AR2313_CLOCKCTL1_MULTIPLIER_SHIFT; + doubler_mask =
> AR2313_CLOCKCTL1_DOUBLER_MASK; + } else { /* AR5312 and AR2312 */ +
> predivide_mask = AR5312_CLOCKCTL1_PREDIVIDE_MASK; +
> predivide_shift = AR5312_CLOCKCTL1_PREDIVIDE_SHIFT; +
> multiplier_mask = AR5312_CLOCKCTL1_MULTIPLIER_MASK; +
> multiplier_shift = AR5312_CLOCKCTL1_MULTIPLIER_SHIFT; +
> doubler_mask = AR5312_CLOCKCTL1_DOUBLER_MASK; + } + + /* + *
> Clocking is derived from a fixed 40MHz input clock. + * + *
> cpu_freq = input_clock * MULT (where MULT is PLL multiplier) + *
> sys_freq = cpu_freq / 4 (used for APB clock, serial, + *
> flash, Timer, Watchdog Timer) + * + * cnt_freq = cpu_freq / 2
> (use for CPU count/compare) + * + * So, for example, with a PLL
> multiplier of 5, we have + * + * cpu_freq = 200MHz + *
> sys_freq = 50MHz + * cnt_freq = 100MHz + * + * We compute the
> CPU frequency, based on PLL settings. + */ + + clock_ctl1 =
> ath25_read_reg(AR5312_CLOCKCTL1); + predivide_select = (clock_ctl1
> & predivide_mask) >> predivide_shift; + predivisor =
> clockctl1_predivide_table[predivide_select]; + multiplier =
> (clock_ctl1 & multiplier_mask) >> multiplier_shift; + + if
> (clock_ctl1 & doubler_mask) + multiplier <<= 1; + + return
> (40000000 / predivisor) * multiplier; +} + +static inline unsigned
> ar5312_sys_frequency(void) +{ + return ar5312_cpu_frequency() / 4;
> +} + +void __init ar5312_plat_time_init(void) +{ +
> mips_hpt_frequency = ar5312_cpu_frequency() / 2; +} + +void __init
> ar5312_plat_mem_setup(void) +{ + /* Clear any lingering AHB errors
> */ + ath25_read_reg(AR5312_PROCADDR); +
> ath25_read_reg(AR5312_DMAADDR); + ath25_write_reg(AR5312_WD_CTRL,
> AR5312_WD_CTRL_IGNORE_EXPIRATION); + + _machine_restart =
> ar5312_restart; +} + +void __init ar5312_prom_init(void) +{ + u32
> memsize, memcfg, bank0_ac, bank1_ac; + + /* Detect memory size */ +
> memcfg = ath25_read_reg(AR5312_MEM_CFG1); + bank0_ac =
> ATH25_REG_MS(memcfg, AR5312_MEM_CFG1_AC0); + bank1_ac =
> ATH25_REG_MS(memcfg, AR5312_MEM_CFG1_AC1); + memsize = (bank0_ac ?
> (1 << (bank0_ac + 1)) : 0) + + (bank1_ac ? (1 << (bank1_ac + 1))
> : 0); + memsize <<= 20; + add_memory_region(0, memsize,
> BOOT_MEM_RAM); +} + diff --git a/arch/mips/ath25/ar5312.h
> b/arch/mips/ath25/ar5312.h new file mode 100644 index
> 0000000..339b28e --- /dev/null +++ b/arch/mips/ath25/ar5312.h @@
> -0,0 +1,18 @@ +#ifndef __AR5312_H +#define __AR5312_H + +#ifdef
> CONFIG_SOC_AR5312 + +void ar5312_plat_time_init(void); +void
> ar5312_plat_mem_setup(void); +void ar5312_prom_init(void); +
> +#else + +static inline void ar5312_plat_time_init(void) {} +static
> inline void ar5312_plat_mem_setup(void) {} +static inline void
> ar5312_prom_init(void) {} + +#endif + +#endif /* __AR5312_H */ diff
> --git a/arch/mips/ath25/board.c b/arch/mips/ath25/board.c index
> cbc6d7b..80683e3 100644 --- a/arch/mips/ath25/board.c +++
> b/arch/mips/ath25/board.c @@ -16,6 +16,8 @@ #include
> <asm/bootinfo.h> #include <asm/time.h>
>
> +#include "ar5312.h" + static void ath25_halt(void) {
> local_irq_disable(); @@ -28,6 +30,9 @@ void __init
> plat_mem_setup(void) _machine_halt = ath25_halt; pm_power_off =
> ath25_halt;
>
> + if (is_ar5312()) + ar5312_plat_mem_setup(); +
if i am reading this correct then is_ar5312() can return true even if
CONFIG_SOC_AR5312 is not selected
how about
if (IS_ENABLED(CONFIG_SOC_AR5312) && is_ar5312())
pr_info("AR5312");
else if (IS_ENABLED(CONFIG_SOC_AR2315) && is_ar2315())
pr_info("AR2315");
else
panic("failed to init memory");
somewhere early in the code
> /* Disable data watchpoints */ write_c0_watchlo0(0); } @@ -38,6
> +43,8 @@ asmlinkage void plat_irq_dispatch(void)
>
> void __init plat_time_init(void) { + if (is_ar5312()) +
> ar5312_plat_time_init(); }
>
> unsigned int __cpuinit get_c0_compare_int(void) diff --git
> a/arch/mips/ath25/prom.c b/arch/mips/ath25/prom.c index
> edf82be..ec60b0f 100644 --- a/arch/mips/ath25/prom.c +++
> b/arch/mips/ath25/prom.c @@ -17,8 +17,13 @@ #include
> <linux/init.h> #include <asm/bootinfo.h>
>
> +#include "devices.h" +#include "ar5312.h" + void __init
> prom_init(void) { + if (is_ar5312()) + ar5312_prom_init(); }
>
> void __init prom_free_prom_memory(void) diff --git
> a/arch/mips/include/asm/mach-ath25/ar5312_regs.h
> b/arch/mips/include/asm/mach-ath25/ar5312_regs.h new file mode
> 100644 index 0000000..76856d8 --- /dev/null +++
> b/arch/mips/include/asm/mach-ath25/ar5312_regs.h @@ -0,0 +1,190 @@
> +/* + * This file is subject to the terms and conditions of the GNU
> General Public + * License. See the file "COPYING" in the main
> directory of this archive + * for more details. + * + * Copyright
> (C) 2003 Atheros Communications, Inc., All Rights Reserved. + *
> Copyright (C) 2006 Imre Kaloz <kaloz@openwrt.org> + * Copyright (C)
> 2006 Felix Fietkau <nbd@openwrt.org> + */ + +#ifndef
> __ASM_MACH_ATH25_AR5312_REGS_H +#define
> __ASM_MACH_ATH25_AR5312_REGS_H + +/* + * Address Map + * + * The
> AR5312 supports 2 enet MACS, even though many reference boards
> only + * actually use 1 of them (i.e. Only MAC 0 is actually
> connected to an enet + * PHY or PHY switch. The AR2312 supports 1
> enet MAC. + */ +#define AR5312_WLAN0 0x18000000 +#define
> AR5312_WLAN1 0x18500000 +#define AR5312_ENET0 0x18100000 +#define
> AR5312_ENET1 0x18200000 +#define AR5312_SDRAMCTL 0x18300000
> +#define AR5312_FLASHCTL 0x18400000 +#define AR5312_APBBASE
> 0x1c000000 +#define AR5312_UART0 0x1c000000 /* UART MMR */
> +#define AR5312_FLASH 0x1e000000 + +/* + * Need these defines to
> determine true number of ethernet MACs + */ +#define
> AR5312_AR5312_REV2 0x0052 /* AR5312 WMAC (AP31) */ +#define
> AR5312_AR5312_REV7 0x0057 /* AR5312 WMAC (AP30-040) */ +#define
> AR5312_AR2313_REV8 0x0058 /* AR2313 WMAC (AP43-030) */ + +/*
> Reset/Timer Block Address Map */ +#define AR5312_RESETTMR
> (AR5312_APBBASE + 0x3000) +#define AR5312_TIMER (AR5312_RESETTMR
> + 0x0000) /* countdown timer */ +#define AR5312_WD_CTRL
> (AR5312_RESETTMR + 0x0008) /* watchdog cntrl */ +#define
> AR5312_WD_TIMER (AR5312_RESETTMR + 0x000c) /* watchdog timer */
> +#define AR5312_ISR (AR5312_RESETTMR + 0x0010) /* Intr Status Reg
> */ +#define AR5312_IMR (AR5312_RESETTMR + 0x0014) /* Intr Mask Reg
> */ +#define AR5312_RESET (AR5312_RESETTMR + 0x0020) +#define
> AR5312_CLOCKCTL1 (AR5312_RESETTMR + 0x0064) +#define AR5312_SCRATCH
> (AR5312_RESETTMR + 0x006c) +#define AR5312_PROCADDR
> (AR5312_RESETTMR + 0x0070) +#define AR5312_PROC1 (AR5312_RESETTMR
> + 0x0074) +#define AR5312_DMAADDR (AR5312_RESETTMR + 0x0078)
> +#define AR5312_DMA1 (AR5312_RESETTMR + 0x007c) +#define
> AR5312_ENABLE (AR5312_RESETTMR + 0x0080) /* interface enb */
> +#define AR5312_REV (AR5312_RESETTMR + 0x0090) /* revision */ +
> +/* AR5312_WD_CTRL register bit field definitions */ +#define
> AR5312_WD_CTRL_IGNORE_EXPIRATION 0x0000 +#define AR5312_WD_CTRL_NMI
> 0x0001 +#define AR5312_WD_CTRL_RESET 0x0002 + +/* AR5312_ISR
> register bit field definitions */ +#define AR5312_ISR_TIMER 0x0001
> +#define AR5312_ISR_AHBPROC 0x0002 +#define AR5312_ISR_AHBDMA
> 0x0004 +#define AR5312_ISR_GPIO 0x0008 +#define AR5312_ISR_UART0
> 0x0010 +#define AR5312_ISR_UART0DMA 0x0020 +#define AR5312_ISR_WD
> 0x0040 +#define AR5312_ISR_LOCAL 0x0080 + +/* AR5312_RESET register
> bit field definitions */ +#define AR5312_RESET_SYSTEM 0x00000001
> /* cold reset full system */ +#define AR5312_RESET_PROC 0x00000002
> /* cold reset MIPS core */ +#define AR5312_RESET_WLAN0 0x00000004
> /* cold reset WLAN MAC/BB */ +#define AR5312_RESET_EPHY0
> 0x00000008 /* cold reset ENET0 phy */ +#define AR5312_RESET_EPHY1
> 0x00000010 /* cold reset ENET1 phy */ +#define AR5312_RESET_ENET0
> 0x00000020 /* cold reset ENET0 MAC */ +#define AR5312_RESET_ENET1
> 0x00000040 /* cold reset ENET1 MAC */ +#define AR5312_RESET_UART0
> 0x00000100 /* cold reset UART0 */ +#define AR5312_RESET_WLAN1
> 0x00000200 /* cold reset WLAN MAC/BB */ +#define AR5312_RESET_APB
> 0x00000400 /* cold reset APB ar5312 */ +#define
> AR5312_RESET_WARM_PROC 0x00001000 /* warm reset MIPS core */
> +#define AR5312_RESET_WARM_WLAN0_MAC 0x00002000 /* warm reset
> WLAN0 MAC */ +#define AR5312_RESET_WARM_WLAN0_BB 0x00004000 /*
> warm reset WLAN0 BB */ +#define AR5312_RESET_NMI 0x00010000 /*
> send an NMI to the CPU */ +#define AR5312_RESET_WARM_WLAN1_MAC
> 0x00020000 /* warm reset WLAN1 MAC */ +#define
> AR5312_RESET_WARM_WLAN1_BB 0x00040000 /* warm reset WLAN1 BB */
> +#define AR5312_RESET_LOCAL_BUS 0x00080000 /* reset local bus */
> +#define AR5312_RESET_WDOG 0x00100000 /* last reset was a wdt */
> + +#define AR5312_RESET_WMAC0_BITS (AR5312_RESET_WLAN0 |\ +
> AR5312_RESET_WARM_WLAN0_MAC |\ + AR5312_RESET_WARM_WLAN0_BB)
> + +#define AR5312_RESET_WMAC1_BITS (AR5312_RESET_WLAN1 |\ +
> AR5312_RESET_WARM_WLAN1_MAC |\ + AR5312_RESET_WARM_WLAN1_BB)
> + +/* AR5312_CLOCKCTL1 register bit field definitions */ +#define
> AR5312_CLOCKCTL1_PREDIVIDE_MASK 0x00000030 +#define
> AR5312_CLOCKCTL1_PREDIVIDE_SHIFT 4 +#define
> AR5312_CLOCKCTL1_MULTIPLIER_MASK 0x00001f00 +#define
> AR5312_CLOCKCTL1_MULTIPLIER_SHIFT 8 +#define
> AR5312_CLOCKCTL1_DOUBLER_MASK 0x00010000 + +/* Valid for AR5312
> and AR2312 */ +#define AR5312_CLOCKCTL1_PREDIVIDE_MASK 0x00000030
> +#define AR5312_CLOCKCTL1_PREDIVIDE_SHIFT 4 +#define
> AR5312_CLOCKCTL1_MULTIPLIER_MASK 0x00001f00 +#define
> AR5312_CLOCKCTL1_MULTIPLIER_SHIFT 8 +#define
> AR5312_CLOCKCTL1_DOUBLER_MASK 0x00010000 + +/* Valid for AR2313
> */ +#define AR2313_CLOCKCTL1_PREDIVIDE_MASK 0x00003000 +#define
> AR2313_CLOCKCTL1_PREDIVIDE_SHIFT 12 +#define
> AR2313_CLOCKCTL1_MULTIPLIER_MASK 0x001f0000 +#define
> AR2313_CLOCKCTL1_MULTIPLIER_SHIFT 16 +#define
> AR2313_CLOCKCTL1_DOUBLER_MASK 0x00000000 + +/* AR5312_ENABLE
> register bit field definitions */ +#define AR5312_ENABLE_WLAN0
> 0x0001 +#define AR5312_ENABLE_ENET0 0x0002 +#define
> AR5312_ENABLE_ENET1 0x0004 +#define
> AR5312_ENABLE_UART_AND_WLAN1_PIO 0x0008 /* UART & WLAN1 PIOs */
> +#define AR5312_ENABLE_WLAN1_DMA 0x0010 /* WLAN1 DMAs */
> +#define AR5312_ENABLE_WLAN1 (AR5312_ENABLE_UART_AND_WLAN1_PIO |\
> + AR5312_ENABLE_WLAN1_DMA) + +/* AR5312_REV register bit field
> definitions */ +#define AR5312_REV_WMAC_MAJ 0xf000 +#define
> AR5312_REV_WMAC_MAJ_S 12 +#define AR5312_REV_WMAC_MIN 0x0f00
> +#define AR5312_REV_WMAC_MIN_S 8 +#define AR5312_REV_MAJ 0x00f0
> +#define AR5312_REV_MAJ_S 4 +#define AR5312_REV_MIN 0x000f
> +#define AR5312_REV_MIN_S 0 +#define AR5312_REV_CHIP
> (AR5312_REV_MAJ|AR5312_REV_MIN) + +/* Major revision numbers, bits
> 7..4 of Revision ID register */ +#define AR5312_REV_MAJ_AR5312
> 0x4 +#define AR5312_REV_MAJ_AR2313 0x5 + +/* Minor revision
> numbers, bits 3..0 of Revision ID register */ +#define
> AR5312_REV_MIN_DUAL 0x0 /* Dual WLAN version */ +#define
> AR5312_REV_MIN_SINGLE 0x1 /* Single WLAN version */ + +/*
> AR5312_FLASHCTL register bit field definitions */ +#define
> AR5312_FLASHCTL_IDCY 0x0000000f /* Idle cycle turnaround time */
> +#define AR5312_FLASHCTL_IDCY_S 0 +#define AR5312_FLASHCTL_WST1
> 0x000003e0 /* Wait state 1 */ +#define AR5312_FLASHCTL_WST1_S 5
> +#define AR5312_FLASHCTL_RBLE 0x00000400 /* Read byte lane enable
> */ +#define AR5312_FLASHCTL_WST2 0x0000f800 /* Wait state 2 */
> +#define AR5312_FLASHCTL_WST2_S 11 +#define AR5312_FLASHCTL_AC
> 0x00070000 /* Flash addr check (added) */ +#define
> AR5312_FLASHCTL_AC_S 16 +#define AR5312_FLASHCTL_AC_128K
> 0x00000000 +#define AR5312_FLASHCTL_AC_256K 0x00010000 +#define
> AR5312_FLASHCTL_AC_512K 0x00020000 +#define AR5312_FLASHCTL_AC_1M
> 0x00030000 +#define AR5312_FLASHCTL_AC_2M 0x00040000 +#define
> AR5312_FLASHCTL_AC_4M 0x00050000 +#define AR5312_FLASHCTL_AC_8M
> 0x00060000 +#define AR5312_FLASHCTL_AC_RES 0x00070000 /* 16MB is
> not supported */ +#define AR5312_FLASHCTL_E 0x00080000 /* Flash
> bank enable (added) */ +#define AR5312_FLASHCTL_BUSERR 0x01000000
> /* Bus transfer error flag */ +#define AR5312_FLASHCTL_WPERR
> 0x02000000 /* Write protect error flag */ +#define
> AR5312_FLASHCTL_WP 0x04000000 /* Write protect */ +#define
> AR5312_FLASHCTL_BM 0x08000000 /* Burst mode */ +#define
> AR5312_FLASHCTL_MW 0x30000000 /* Mem width */ +#define
> AR5312_FLASHCTL_MW8 0x00000000 /* Mem width x8 */ +#define
> AR5312_FLASHCTL_MW16 0x10000000 /* Mem width x16 */ +#define
> AR5312_FLASHCTL_MW32 0x20000000 /* Mem width x32 (not supp) */
> +#define AR5312_FLASHCTL_ATNR 0x00000000 /* Access == no retry */
> +#define AR5312_FLASHCTL_ATR 0x80000000 /* Access == retry every
> */ +#define AR5312_FLASHCTL_ATR4 0xc0000000 /* Access == retry
> every 4 */ + +/* ARM Flash Controller -- 3 flash banks with either
> x8 or x16 devices. */ +#define AR5312_FLASHCTL0 (AR5312_FLASHCTL +
> 0x00) +#define AR5312_FLASHCTL1 (AR5312_FLASHCTL + 0x04) +#define
> AR5312_FLASHCTL2 (AR5312_FLASHCTL + 0x08) + +/* ARM SDRAM
> Controller -- just enough to determine memory size */ +#define
> AR5312_MEM_CFG1 (AR5312_SDRAMCTL + 0x04) +#define
> AR5312_MEM_CFG1_AC0_M 0x00000700 /* bank 0: SDRAM addr check */
> +#define AR5312_MEM_CFG1_AC0_S 8 +#define AR5312_MEM_CFG1_AC1_M
> 0x00007000 /* bank 1: SDRAM addr check */ +#define
> AR5312_MEM_CFG1_AC1_S 12 + +#endif /*
> __ASM_MACH_ATH25_AR5312_REGS_H */
>
next prev parent reply other threads:[~2014-10-21 23:48 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-21 23:03 [PATCH v2 00/13] MIPS: support for the Atheros AR231X SoCs Sergey Ryazanov
2014-10-21 23:03 ` [PATCH v2 01/13] MIPS: ath25: add common parts Sergey Ryazanov
2014-10-21 23:36 ` John Crispin
2014-10-22 12:40 ` Sergey Ryazanov
2014-10-22 8:31 ` John Crispin
2014-10-22 13:06 ` Sergey Ryazanov
2014-10-22 13:09 ` John Crispin
2014-10-21 23:03 ` [PATCH v2 02/13] MIPS: ath25: add basic AR5312 SoC support Sergey Ryazanov
2014-10-21 23:48 ` John Crispin [this message]
2014-10-22 0:03 ` John Crispin
2014-10-22 14:11 ` Sergey Ryazanov
2014-10-21 23:03 ` [PATCH v2 03/13] MIPS: ath25: add basic AR2315 " Sergey Ryazanov
2014-10-21 23:03 ` [PATCH v2 04/13] MIPS: ath25: add interrupts handling routines Sergey Ryazanov
2014-10-22 8:26 ` John Crispin
2014-10-22 14:51 ` Sergey Ryazanov
2014-10-22 8:49 ` John Crispin
2014-10-21 23:03 ` [PATCH v2 05/13] MIPS: ath25: add early printk support Sergey Ryazanov
2014-10-21 23:03 ` [PATCH v2 06/13] MIPS: ath25: add UART support Sergey Ryazanov
2014-10-21 23:03 ` [PATCH v2 07/13] MIPS: ath25: add board configuration detection Sergey Ryazanov
2014-10-21 23:03 ` [PATCH v2 08/13] MIPS: ath25: add SoC type detection Sergey Ryazanov
2014-10-21 23:03 ` [PATCH v2 09/13] MIPS: ath25: register various chip devices Sergey Ryazanov
2014-10-22 8:39 ` John Crispin
2014-10-22 15:22 ` Sergey Ryazanov
2014-10-21 23:03 ` [PATCH v2 10/13] MIPS: ath25: add AR2315 PCI host controller driver Sergey Ryazanov
2014-10-22 8:47 ` John Crispin
2014-10-22 15:25 ` Sergey Ryazanov
2014-10-21 23:03 ` [PATCH v2 11/13] ath5k: revert AHB bus support removing Sergey Ryazanov
2014-10-22 12:18 ` Bob Copeland
2014-10-22 12:37 ` Sergey Ryazanov
2014-10-27 18:04 ` John W. Linville
2014-10-28 7:08 ` Sergey Ryazanov
2014-10-28 13:48 ` John W. Linville
2014-10-21 23:03 ` [PATCH v2 12/13] ath5k: update dependencies Sergey Ryazanov
2014-10-27 18:05 ` John W. Linville
2014-10-21 23:03 ` [PATCH v2 13/13] MIPS: ath25: add Wireless device support Sergey Ryazanov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5446F0D2.7050603@openwrt.org \
--to=blogic@openwrt.org \
--cc=linux-mips@linux-mips.org \
--cc=ralf@linux-mips.org \
--cc=ryazanov.s.a@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.