Re: [PATCH v2 01/13] MIPS: ath25: add common parts

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 22/10/2014 15:06, Sergey Ryazanov wrote:
> 2014-10-22 12:31 GMT+04:00 John Crispin <blogic@xxxxxxxxxxx>:
>> On 22/10/2014 01:03, Sergey Ryazanov wrote:
>>> Add common code for Atheros AR5312 and Atheros AR2315 SoCs
>>> families.
>>> 
>>> Signed-off-by: Sergey Ryazanov <ryazanov.s.a@xxxxxxxxx> ---
>>> 
>>> Changes since v1: - rename MIPS machine ar231x -> ath25
>>> 
>>> arch/mips/Kbuild.platforms                         |  1 + 
>>> arch/mips/Kconfig                                  | 13 ++++ 
>>> arch/mips/ath25/Makefile                           | 11 ++++ 
>>> arch/mips/ath25/Platform                           |  6 ++ 
>>> arch/mips/ath25/board.c                            | 53
>>> +++++++++++++++ arch/mips/ath25/devices.c
>>> | 11 ++++ arch/mips/ath25/devices.h                          |
>>> 16 +++++ arch/mips/ath25/prom.c                             |
>>> 26 ++++++++ arch/mips/include/asm/mach-ath25/ath25.h
>>> | 29 +++++++++ 
>>> .../include/asm/mach-ath25/cpu-feature-overrides.h | 76
>>> ++++++++++++++++++++++ 
>>> arch/mips/include/asm/mach-ath25/dma-coherence.h   | 64
>>> ++++++++++++++++++ arch/mips/include/asm/mach-ath25/gpio.h
>>> | 16 +++++ arch/mips/include/asm/mach-ath25/war.h             |
>>> 25 +++++++ 13 files changed, 347 insertions(+) create mode
>>> 100644 arch/mips/ath25/Makefile create mode 100644
>>> arch/mips/ath25/Platform create mode 100644
>>> arch/mips/ath25/board.c create mode 100644
>>> arch/mips/ath25/devices.c create mode 100644
>>> arch/mips/ath25/devices.h create mode 100644
>>> arch/mips/ath25/prom.c create mode 100644
>>> arch/mips/include/asm/mach-ath25/ath25.h create mode 100644
>>> arch/mips/include/asm/mach-ath25/cpu-feature-overrides.h create
>>> mode 100644 arch/mips/include/asm/mach-ath25/dma-coherence.h 
>>> create mode 100644 arch/mips/include/asm/mach-ath25/gpio.h 
>>> create mode 100644 arch/mips/include/asm/mach-ath25/war.h
>>> 
>>> diff --git a/arch/mips/Kbuild.platforms
>>> b/arch/mips/Kbuild.platforms index f5e18bf..1780c74 100644 ---
>>> a/arch/mips/Kbuild.platforms +++ b/arch/mips/Kbuild.platforms 
>>> @@ -2,6 +2,7 @@
>>> 
>>> platforms += alchemy platforms += ar7 +platforms += ath25 
>>> platforms += ath79 platforms += bcm47xx platforms += bcm63xx 
>>> diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index
>>> 652bd79..54abb9a 100644 --- a/arch/mips/Kconfig +++
>>> b/arch/mips/Kconfig @@ -96,6 +96,19 @@ config AR7 Support for
>>> the Texas Instruments AR7 System-on-a-Chip family: TNETD7100,
>>> 7200 and 7300.
>>> 
>>> +config ATH25 +     bool "Atheros AR231x/AR531x SoC support" +
>>> select CEVT_R4K +     select CSRC_R4K +     select
>>> DMA_NONCOHERENT +     select IRQ_CPU +     select
>>> SYS_HAS_CPU_MIPS32_R1 +     select SYS_SUPPORTS_BIG_ENDIAN +
>>> select SYS_SUPPORTS_32BIT_KERNEL +     select
>>> ARCH_REQUIRE_GPIOLIB +     help +       Support for Atheros
>>> AR231x and Atheros AR531x based boards + config ATH79 bool
>>> "Atheros AR71XX/AR724X/AR913X based boards" select
>>> ARCH_REQUIRE_GPIOLIB diff --git a/arch/mips/ath25/Makefile
>>> b/arch/mips/ath25/Makefile new file mode 100644 index
>>> 0000000..9199fa1 --- /dev/null +++ b/arch/mips/ath25/Makefile 
>>> @@ -0,0 +1,11 @@ +# +# 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) 2006 FON Technology, SL. +#
>>> Copyright (C) 2006 Imre Kaloz <kaloz@xxxxxxxxxxx> +# Copyright
>>> (C) 2006-2009 Felix Fietkau <nbd@xxxxxxxxxxx> +# + +obj-y +=
>>> board.o prom.o devices.o diff --git a/arch/mips/ath25/Platform
>>> b/arch/mips/ath25/Platform new file mode 100644 index
>>> 0000000..ef3f81f --- /dev/null +++ b/arch/mips/ath25/Platform 
>>> @@ -0,0 +1,6 @@ +# +# Atheros AR531X/AR231X WiSoC +# 
>>> +platform-$(CONFIG_ATH25)     += ath25/ +cflags-$(CONFIG_ATH25)
>>> += -I$(srctree)/arch/mips/include/asm/mach-ath25 
>>> +load-$(CONFIG_ATH25)         += 0xffffffff80041000 diff --git
>>> a/arch/mips/ath25/board.c b/arch/mips/ath25/board.c new file
>>> mode 100644 index 0000000..cbc6d7b --- /dev/null +++
>>> b/arch/mips/ath25/board.c @@ -0,0 +1,53 @@ +/* + * 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@xxxxxxxxxxx> + * Copyright (C) 2006-2009
>>> Felix Fietkau <nbd@xxxxxxxxxxx> + */ + +#include
>>> <linux/init.h> +#include <linux/interrupt.h> +#include
>>> <asm/irq_cpu.h> +#include <asm/reboot.h> +#include
>>> <asm/bootinfo.h> +#include <asm/time.h> + +static void
>>> ath25_halt(void) +{ +     local_irq_disable(); +     while (1) 
>>> +             ; +} + +void __init plat_mem_setup(void) +{ +
>>> _machine_halt = ath25_halt; +     pm_power_off = ath25_halt; + 
>>> +     /* Disable data watchpoints */ +
>>> write_c0_watchlo0(0); +} + +asmlinkage void
>>> plat_irq_dispatch(void) +{ +} + +void __init
>>> plat_time_init(void) +{ +} + +unsigned int __cpuinit
>>> get_c0_compare_int(void) +{ +     return
>>> CP0_LEGACY_COMPARE_IRQ; +} + +void __init arch_init_irq(void) 
>>> +{ +     clear_c0_status(ST0_IM); +     mips_cpu_irq_init(); 
>>> +} + diff --git a/arch/mips/ath25/devices.c
>>> b/arch/mips/ath25/devices.c new file mode 100644 index
>>> 0000000..e30afbc --- /dev/null +++ b/arch/mips/ath25/devices.c 
>>> @@ -0,0 +1,11 @@ +#include <linux/kernel.h> +#include
>>> <linux/init.h> +#include <asm/bootinfo.h> + +#include
>>> "devices.h" + +const char *get_system_type(void) +{ +
>>> return "Atheros (unknown)"; +} + diff --git
>>> a/arch/mips/ath25/devices.h b/arch/mips/ath25/devices.h new
>>> file mode 100644 index 0000000..edda636 --- /dev/null +++
>>> b/arch/mips/ath25/devices.h @@ -0,0 +1,16 @@ +#ifndef
>>> __ATH25_DEVICES_H +#define __ATH25_DEVICES_H + +#include
>>> <linux/cpu.h> + +static inline bool is_ar2315(void) +{ +
>>> return (current_cpu_data.cputype == CPU_4KEC); +} + +static
>>> inline bool is_ar5312(void) +{ +     return !is_ar2315(); +} + 
>>> +#endif diff --git a/arch/mips/ath25/prom.c
>>> b/arch/mips/ath25/prom.c new file mode 100644 index
>>> 0000000..edf82be --- /dev/null +++ b/arch/mips/ath25/prom.c @@
>>> -0,0 +1,26 @@ +/* + * 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 MontaVista Software Inc + *
>>> Copyright (C) 2003 Atheros Communications, Inc.,  All Rights
>>> Reserved. + * Copyright (C) 2006 FON Technology, SL. + *
>>> Copyright (C) 2006 Imre Kaloz <kaloz@xxxxxxxxxxx> + * Copyright
>>> (C) 2006 Felix Fietkau <nbd@xxxxxxxxxxx> + */ + +/* + * Prom
>>> setup file for AR5312/AR231x SoCs + */ + +#include
>>> <linux/init.h> +#include <asm/bootinfo.h> + +void __init
>>> prom_init(void) +{ +} + +void __init
>>> prom_free_prom_memory(void) +{ +} diff --git
>>> a/arch/mips/include/asm/mach-ath25/ath25.h
>>> b/arch/mips/include/asm/mach-ath25/ath25.h new file mode
>>> 100644 index 0000000..bd66ce7 --- /dev/null +++
>>> b/arch/mips/include/asm/mach-ath25/ath25.h @@ -0,0 +1,29 @@ 
>>> +#ifndef __ASM_MACH_ATH25_H +#define __ASM_MACH_ATH25_H + 
>>> +#include <linux/io.h> + +#define ATH25_REG_MS(_val, _field)
>>> (((_val) & _field##_M) >> _field##_S) + +static inline u32
>>> ath25_read_reg(u32 reg) +{ +     return __raw_readl((void
>>> __iomem *)KSEG1ADDR(reg)); +} + +static inline void
>>> ath25_write_reg(u32 reg, u32 val) +{ +     __raw_writel(val,
>>> (void __iomem *)KSEG1ADDR(reg)); +} +
>> 
>> using KSEG1ADDR is a bad idea. EVA will obselete these. please
>> use ioremap() to get a void __iomem pointer and then use this as
>> a register base. the current code will also lead to a addr cast
>> with every call of the functions.
>> 
> I will investigate that.
> 
> And BTW, what the EVA is?
> 

Enhanced Virtual Addressing





[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux