Re: [PATCH 2/12] add basic gdium support

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

 



Hi, Yajin

On Tue, 2010-05-04 at 17:55 +0800, yajin wrote:
> Gdium is same to most of the loongson2f based machines except that it
> does NOT use the cs5536 south bridge.
> 
> Signed-off-by: yajin <yajin@xxxxxxxxxxxxx>
[...]
>  #
>  # MIPS Malta board
> diff --git a/arch/mips/include/asm/mach-loongson/machine.h
> b/arch/mips/include/asm/mach-loongson/machine.h
> index 4321338..fb9554c 100644
> --- a/arch/mips/include/asm/mach-loongson/machine.h
> +++ b/arch/mips/include/asm/mach-loongson/machine.h
> @@ -24,4 +24,11 @@
> 
>  #endif
> 
> +/* use gdium as the default machine of LEMOTE_MACH2F */

Several machines shared the same LEMOTE_MACH2F config, I have added the
above comment for the default one, therefore, this is not needed for
gdium, you can remove it directly.

> +#ifdef CONFIG_DEXXON_GDIUM
> +
> +#define LOONGSON_MACHTYPE MACH_DEXXON_GDIUM2F10
> +
> +#endif
> +

Suggest you remove the 'useless' blank line between the #ifdef and
#endif and also the other blank lines in the original machine.h added by
me, just found they are really useless.

>  #endif /* __ASM_MACH_LOONGSON_MACHINE_H */
> diff --git a/arch/mips/loongson/Kconfig b/arch/mips/loongson/Kconfig
> index 3df1967..90a02b4 100644
> --- a/arch/mips/loongson/Kconfig
> +++ b/arch/mips/loongson/Kconfig
> @@ -57,6 +57,31 @@ config LEMOTE_MACH2F
> 
>  	  These family machines include fuloong2f mini PC, yeeloong2f notebook,
>  	  LingLoong allinone PC and so forth.
> +
> +config DEXXON_GDIUM
> +        bool "Dexxon Gdium Netbook"
> +        select ARCH_SPARSEMEM_ENABLE
> +        select BOARD_SCACHE
> +        select BOOT_ELF32
> +        select CEVT_R4K
> +        select CPU_HAS_WB
> +        select CSRC_R4K
> +        select DMA_NONCOHERENT
> +        select GENERIC_HARDIRQS_NO__DO_IRQ
> +        select GENERIC_ISA_DMA_SUPPORT_BROKEN
> +        select HW_HAS_PCI
> +        select I8259
> +        select IRQ_CPU
> +        select ISA
> +        select SYS_HAS_CPU_LOONGSON2F
> +        select SYS_HAS_EARLY_PRINTK
> +        select SYS_SUPPORTS_32BIT_KERNEL
> +        select SYS_SUPPORTS_64BIT_KERNEL
> +        select SYS_SUPPORTS_HIGHMEM
> +        select SYS_SUPPORTS_LITTLE_ENDIAN
> +        select ARCH_REQUIRE_GPIOLIB

Perhaps you can move "select ARCH_REQUIRE_GPIOLIB" before "select
ARCH_SPARSEMEM_ENABLE" to make them in alphabetical order.

> +        help
> +          Dexxon gdium netbook based on Loongson 2F and SM502.
>  endchoice
> 
>  config CS5536
> diff --git a/arch/mips/loongson/Makefile b/arch/mips/loongson/Makefile
> index 2b76cb0..6002109 100644
> --- a/arch/mips/loongson/Makefile
> +++ b/arch/mips/loongson/Makefile
> @@ -15,3 +15,9 @@ obj-$(CONFIG_LEMOTE_FULOONG2E)  += fuloong-2e/
>  #
> 
>  obj-$(CONFIG_LEMOTE_MACH2F)  += lemote-2f/
> +
> +#
> +# gdium
> +#
> +
> +obj-$(CONFIG_DEXXON_GDIUM)  += gdium/
> diff --git a/arch/mips/loongson/gdium/Makefile
> b/arch/mips/loongson/gdium/Makefile
> new file mode 100644
> index 0000000..31a8e57
> --- /dev/null
> +++ b/arch/mips/loongson/gdium/Makefile
> @@ -0,0 +1,3 @@
> +# Makefile for gdium
> +
> +obj-y += irq.o reset.o
> diff --git a/arch/mips/loongson/gdium/irq.c b/arch/mips/loongson/gdium/irq.c
> new file mode 100644
> index 0000000..b0679eb
> --- /dev/null
> +++ b/arch/mips/loongson/gdium/irq.c
> @@ -0,0 +1,66 @@
> +/*
> + * Copyright (C) 2007 Lemote Inc.
> + * Author: Fuxin Zhang, zhangfx@xxxxxxxxxx
> + *
> + * Copyright (c) 2010 yajin <yajin@xxxxxxxxxxxxx>
> + *
> + *  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.
> + */
> +
> +#include <linux/interrupt.h>
> +#include <linux/module.h>
> +
> +#include <asm/irq_cpu.h>
> +#include <asm/mipsregs.h>
> +
> +#include <loongson.h>
> +#include <machine.h>
> +
> +#define LOONGSON_TIMER_IRQ      (MIPS_CPU_IRQ_BASE + 7) /* cpu timer */
> +#define LOONGSON_PERFCNT_IRQ    (MIPS_CPU_IRQ_BASE + 6) /* cpu perf counter */
> +#define LOONGSON_NORTH_BRIDGE_IRQ       (MIPS_CPU_IRQ_BASE + 6) /* bonito */
> +#define LOONGSON_UART_IRQ       (MIPS_CPU_IRQ_BASE + 3) /* cpu serial port */
> +
> +void mach_irq_dispatch(unsigned int pending)
> +{
> +	if (pending & CAUSEF_IP7)
> +		do_IRQ(LOONGSON_TIMER_IRQ);
> +	else if (pending & CAUSEF_IP6) {        /* North Bridge, Perf counter */
> +#ifdef CONFIG_OPROFILE
> +		do_IRQ(LOONGSON2_PERFCNT_IRQ);
> +#endif

Ralf just applied one patch from me for the Oprofile problem when it is
configured as module, that commit is:

"MIPS: oprofile: Fix breakage when CONFIG_OPROFILE=m"

The #ifdef condition should be changed to "#if defined(CONFIG_OPROFILE)
|| defined(CONFIG_OPROFILE_MODULE)" to ensure the do_IRQ() is called
when the Oprofile driver is configured as a module.

To reduce the duplication and make it maintainable, Perhaps we can add
an inline function to loongson.h for this specific stuff.

static inline do_perfcnt_IRQ()
{
#if defined(CONFIG_OPROFILE) || defined(CONFIG_OPROFILE_MODULE)
	do_IRQ(LOONGSON2_PERFCNT_IRQ);
#endif
}

Regards,
	Wu Zhangjin



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

  Powered by Linux