Skip to contentSkip to conversation

linux PATCHes of loongson-based machines

PATCH In review [email protected] 3 participants 19 messages May 20, 2009 – May 26, 2009 MIPS

lore
Share & tools
lore
#0 lore raw

cover linux PATCHes of loongson-based machines

From: Wu Zhangjin <[email protected]>

Dear all,

I have cleaned up the source code of loongson-based machines support and updated it to linux-2.6.29.3, the latest result is put to the following git repository:

git://dev.lemote.com/rt4ls.git to-ralf
or
http://dev.lemote.com/cgit/rt4ls.git/log/?h=to-ralf

this job is based on the to-mips branch of Yanhua's
git://dev.lemote.com/linux_loongson.git and the lm2e-fixes branch of Philippe's
git://git.linux-cisco.org/linux-mips.git. thanks goes to them.

and also, thanks goes to Erwen and heihaier for testing the latest branch, and thanks ralf, zhangLe, john and the other guyes for reviewing the old branch and giving good suggestions.

the most differences between this branch and the old branch include:

* all of these patches are checked by script/checkpatch.pl, only a few warnings left.

* the cs5536 part have been cleaned up deeply. the old pcireg.h is removed via using the include/linux/pci_regs.h instead. and the old cs5536_vsm.c is divided to several modules, one file one module.

* the source code in driver/video/smi in cleaned up a lot, two trashy header files are removed, and several trashy functions are removed, lots of coding style errors and warnings are cleaned up.

* gcc 4.4 support, including 32bit and 64bit, and also it is gcc 4.3 compatiable

I have tested it in 32bit and 64bit with gcc 4.3 on fuloong(2e), fuloong(2f), yeeloong(2f), all of them work well, and also test it in 32bit and 64bit with gcc 4.4 on fuloong(2f), works normally. Erwen and heihaier have tested it in 64bit with gcc 4.4 on a yeeloong laptop.

* the current source code architecture

$ tree arch/mips/loongson/
arch/mips/loongson/
|-- Kconfig
|-- Makefile
|-- common
|   |-- Makefile
|   |-- bonito-irq.c
|   |-- clock.c
|   |-- cmdline.c
|   |-- cs5536
|   |   |-- Makefile
|   |   |-- cs5536_acc.c
|   |   |-- cs5536_ehci.c
|   |   |-- cs5536_flash.c
|   |   |-- cs5536_ide.c
|   |   |-- cs5536_isa.c 
|   |   |-- cs5536_mfgpt.c  --> cs5536 mfgpt timer
|   |   |-- cs5536_ohci.c
|   |   |-- cs5536_otg.c
|   |   |-- cs5536_pci.c    --> cs5536_pci_conf_read4/write4
|   |   `-- cs5536_udc.c
|   |-- early_printk.c
|   |-- init.c
|   |-- irq.c
|   |-- mem.c
|   |-- misc.c
|   |-- pci.c
|   |-- reset.c
|   |-- rtc.c
|   |-- serial.c
|   |-- setup.c
|   `-- time.c
|-- fuloong-2e
|   |-- Makefile
|   |-- irq.c
|   `-- reset.c
|-- fuloong-2f
|   |-- Makefile
|   |-- irq.c
|   `-- reset.c
`-- yeeloong-2f
    |-- Makefile
    |-- init.c
    |-- irq.c
    `-- reset.c
$ tree arch/mips/include/asm/mach-loongson/
arch/mips/include/asm/mach-loongson/
|-- cmdline.h
|-- cpu-feature-overrides.h
|-- cs5536
|   |-- cs5536.h
|   |-- cs5536_mfgpt.h
|   |-- cs5536_pci.h
|   `-- cs5536_vsm.h
|-- dma-coherence.h
|-- loongson.h
|-- machine.h    --> merged from the old board-name/machine.h
|-- mc146818rtc.h
|-- mem.h
|-- pci.h
`-- war.h

* PCI relative files:

arch/mips/pci/fixup-fuloong2e.c arch/mips/pci/fixup-lemote2f.c
arch/mips/pci/ops-loongson2.c ^^^^^^^^|

		  |^^^^^^^	        fuloong2f & yeeloong2f
                  have preserved a position for gdium

* Video card Driver(SMI) for yeeloong2f

$ drivers/video/smi/
|-- Makefile
|-- smtc2d.c
|-- smtc2d.h
|-- smtcfb.c
`-- smtcfb.h

* STD support for MIPS

$ arch/mips/power/
|-- Makefile
|-- cpu.c
`-- hibernate.S

* Oprofile support for loongson2

arch/mips/oprofile/op_model_loongson2.c

* cpufrq support for loongson2f

arch/mips/kerenl/loongson2f_freq.c
arch/mips/loongson/common/clock.c

* gcc 4.4 support for MIPS

arch/mips/include/asm/compiler.h
arch/mips/include/asm/delay.h
arch/mips/include/asm/div64.h

* gcc 4.4 support for loongson2e/2f

arch/mips/Makefile

Wu Zhangjin (27):
fix-warning: incompatible argument type of pci_fixup_irqs
fix-warning: incompatible argument type of virt_to_phys
fix-error: incompatiable argument type of clear_user change the naming methods
remove reference to bonito64.h
divide the files to the smallest logic unit replace tons of magic numbers by understandable symbols clean up the early printk support for fuloong(2e) enable Real Time Clock Support for fuloong(2e) add loongson-specific cpu-feature-overrides.h split the loongson-specific part out
add basic loongson-2f support
add basic fuloong(2f) support
enable serial port support of loongson-based machines add basic yeeloong(2f) laptop support
Add Siliconmotion 712 framebuffer driver
define Loongson2F arch specific phys prot access Loongson2 specific OProfile driver
flush posted write to irq
CS5536 MFGPT as system clock source support Loongson2F cpufreq support
Hibernation Support in mips system
Alsa memory maps fixup on mips systems
fixup for FUJITSU disk
Flush RAS and BTB for CPU predictively execution add default kernel config file for loongson-based machines add gcc 4.4 support for MIPS and loongson

 .gitignore                                         |    1 +
 arch/mips/Kconfig                                  |   92 +-
 arch/mips/Makefile                                 |   21 +-
 arch/mips/configs/fulong_defconfig                 | 1912 --------------
 arch/mips/configs/fuloong2e_defconfig              | 1977 +++++++++++++++
 arch/mips/configs/fuloong2f_defconfig              | 2630 +++++++++++++++++++
 arch/mips/configs/yeeloong2f_defconfig             | 2641 ++++++++++++++++++++
 arch/mips/include/asm/clock.h                      |   64 +
 arch/mips/include/asm/compiler.h                   |   10 +
 arch/mips/include/asm/delay.h                      |   58 +-
 arch/mips/include/asm/div64.h                      |   24 +-
 arch/mips/include/asm/mach-lemote/dma-coherence.h  |   66 -
 arch/mips/include/asm/mach-lemote/mc146818rtc.h    |   36 -
 arch/mips/include/asm/mach-lemote/pci.h            |   30 -
 arch/mips/include/asm/mach-lemote/war.h            |   25 -
 arch/mips/include/asm/mach-loongson/cmdline.h      |    9 +
 .../asm/mach-loongson/cpu-feature-overrides.h      |   58 +
 .../mips/include/asm/mach-loongson/cs5536/cs5536.h |  382 +++
 .../asm/mach-loongson/cs5536/cs5536_mfgpt.h        |   26 +
 .../include/asm/mach-loongson/cs5536/cs5536_pci.h  |  174 ++
 .../include/asm/mach-loongson/cs5536/cs5536_vsm.h  |   59 +
 .../mips/include/asm/mach-loongson/dma-coherence.h |   70 +
 arch/mips/include/asm/mach-loongson/loongson.h     |  311 +++
 arch/mips/include/asm/mach-loongson/machine.h      |   87 +
 arch/mips/include/asm/mach-loongson/mc146818rtc.h  |   36 +
 arch/mips/include/asm/mach-loongson/mem.h          |   31 +
 arch/mips/include/asm/mach-loongson/pci.h          |   59 +
 arch/mips/include/asm/mach-loongson/war.h          |   25 +
 arch/mips/include/asm/mips-boards/bonito64.h       |    5 -
 arch/mips/include/asm/page.h                       |    5 +-
 arch/mips/include/asm/pci.h                        |    2 +-
 arch/mips/include/asm/pgtable.h                    |   13 +
 arch/mips/include/asm/stackframe.h                 |   14 +
 arch/mips/include/asm/suspend.h                    |    2 +
 arch/mips/include/asm/uaccess.h                    |    2 +-
 arch/mips/kernel/Makefile                          |    1 +
 arch/mips/kernel/asm-offsets.c                     |   13 +
 arch/mips/kernel/i8259.c                           |    2 +
 arch/mips/kernel/loongson2f_freq.c                 |  223 ++
 arch/mips/lemote/lm2e/Makefile                     |    7 -
 arch/mips/lemote/lm2e/bonito-irq.c                 |   74 -
 arch/mips/lemote/lm2e/dbg_io.c                     |  146 --
 arch/mips/lemote/lm2e/irq.c                        |  144 --
 arch/mips/lemote/lm2e/mem.c                        |   23 -
 arch/mips/lemote/lm2e/pci.c                        |   97 -
 arch/mips/lemote/lm2e/prom.c                       |   97 -
 arch/mips/lemote/lm2e/reset.c                      |   41 -
 arch/mips/lemote/lm2e/setup.c                      |  111 -
 arch/mips/loongson/Kconfig                         |  135 +
 arch/mips/loongson/Makefile                        |   23 +
 arch/mips/loongson/common/Makefile                 |   37 +
 arch/mips/loongson/common/bonito-irq.c             |   78 +
 arch/mips/loongson/common/clock.c                  |  166 ++
 arch/mips/loongson/common/cmdline.c                |   85 +
 arch/mips/loongson/common/cs5536/Makefile          |   25 +
 arch/mips/loongson/common/cs5536/cs5536_acc.c      |  155 ++
 arch/mips/loongson/common/cs5536/cs5536_ehci.c     |  165 ++
 arch/mips/loongson/common/cs5536/cs5536_flash.c    |  450 ++++
 arch/mips/loongson/common/cs5536/cs5536_ide.c      |  193 ++
 arch/mips/loongson/common/cs5536/cs5536_isa.c      |  376 +++
 arch/mips/loongson/common/cs5536/cs5536_mfgpt.c    |  258 ++
 arch/mips/loongson/common/cs5536/cs5536_ohci.c     |  167 ++
 arch/mips/loongson/common/cs5536/cs5536_otg.c      |  137 +
 arch/mips/loongson/common/cs5536/cs5536_pci.c      |  126 +
 arch/mips/loongson/common/cs5536/cs5536_udc.c      |  142 ++
 arch/mips/loongson/common/early_printk.c           |   28 +
 arch/mips/loongson/common/init.c                   |   57 +
 arch/mips/loongson/common/irq.c                    |  134 +
 arch/mips/loongson/common/mem.c                    |  116 +
 arch/mips/loongson/common/misc.c                   |   15 +
 arch/mips/loongson/common/pci.c                    |  109 +
 arch/mips/loongson/common/reset.c                  |   38 +
 arch/mips/loongson/common/rtc.c                    |   54 +
 arch/mips/loongson/common/serial.c                 |   64 +
 arch/mips/loongson/common/setup.c                  |   74 +
 arch/mips/loongson/common/time.c                   |   34 +
 arch/mips/loongson/fuloong-2e/Makefile             |    7 +
 arch/mips/loongson/fuloong-2e/irq.c                |   58 +
 arch/mips/loongson/fuloong-2e/reset.c              |   26 +
 arch/mips/loongson/fuloong-2f/Makefile             |    5 +
 arch/mips/loongson/fuloong-2f/irq.c                |   53 +
 arch/mips/loongson/fuloong-2f/reset.c              |   65 +
 arch/mips/loongson/yeeloong-2f/Makefile            |    5 +
 arch/mips/loongson/yeeloong-2f/init.c              |   71 +
 arch/mips/loongson/yeeloong-2f/irq.c               |   53 +
 arch/mips/loongson/yeeloong-2f/reset.c             |   40 +
 arch/mips/oprofile/Makefile                        |    1 +
 arch/mips/oprofile/common.c                        |    5 +
 arch/mips/oprofile/op_model_loongson2.c            |  186 ++
 arch/mips/pci/Makefile                             |    4 +-
 arch/mips/pci/fixup-au1000.c                       |    2 +-
 arch/mips/pci/fixup-capcella.c                     |    2 +-
 arch/mips/pci/fixup-cobalt.c                       |    2 +-
 arch/mips/pci/fixup-emma2rh.c                      |    2 +-
 arch/mips/pci/fixup-excite.c                       |    2 +-
 arch/mips/pci/fixup-fuloong2e.c                    |  243 ++
 arch/mips/pci/fixup-ip32.c                         |    2 +-
 arch/mips/pci/fixup-lemote2f.c                     |  171 ++
 arch/mips/pci/fixup-lm2e.c                         |  242 --
 arch/mips/pci/fixup-malta.c                        |    2 +-
 arch/mips/pci/fixup-mpc30x.c                       |    2 +-
 arch/mips/pci/fixup-pmcmsp.c                       |    2 +-
 arch/mips/pci/fixup-pnx8550.c                      |    2 +-
 arch/mips/pci/fixup-rc32434.c                      |    2 +-
 arch/mips/pci/fixup-sni.c                          |    2 +-
 arch/mips/pci/fixup-tb0219.c                       |    2 +-
 arch/mips/pci/fixup-tb0226.c                       |    2 +-
 arch/mips/pci/fixup-tb0287.c                       |    2 +-
 arch/mips/pci/fixup-wrppmc.c                       |    2 +-
 arch/mips/pci/fixup-yosemite.c                     |    2 +-
 arch/mips/pci/ops-bonito64.c                       |   19 +-
 arch/mips/pci/ops-loongson2.c                      |  213 ++
 arch/mips/pci/pci-bcm1480.c                        |    2 +-
 arch/mips/pci/pci-bcm47xx.c                        |    2 +-
 arch/mips/pci/pci-ip27.c                           |    2 +-
 arch/mips/pci/pci-lasat.c                          |    2 +-
 arch/mips/pci/pci-sb1250.c                         |    2 +-
 arch/mips/power/Makefile                           |    1 +
 arch/mips/power/cpu.c                              |   51 +
 arch/mips/power/hibernate.S                        |   78 +
 arch/mips/txx9/generic/pci.c                       |    2 +-
 drivers/ide/amd74xx.c                              |   19 +
 drivers/rtc/rtc-cmos.c                             |    8 +-
 drivers/video/Kconfig                              |   23 +
 drivers/video/Makefile                             |    1 +
 drivers/video/smi/Makefile                         |    8 +
 drivers/video/smi/smtc2d.c                         |  979 ++++++++
 drivers/video/smi/smtc2d.h                         |  530 ++++
 drivers/video/smi/smtcfb.c                         | 1141 +++++++++
 drivers/video/smi/smtcfb.h                         |  793 ++++++
 include/linux/suspend.h                            |    3 +-
 sound/core/pcm_native.c                            |    9 +
 sound/core/sgbuf.c                                 |    9 +
 sound/pci/Kconfig                                  |    1 -
 134 files changed, 17383 insertions(+), 3161 deletions(-)
 delete mode 100644 arch/mips/configs/fulong_defconfig
 create mode 100644 arch/mips/configs/fuloong2e_defconfig
 create mode 100644 arch/mips/configs/fuloong2f_defconfig
 create mode 100644 arch/mips/configs/yeeloong2f_defconfig
 create mode 100644 arch/mips/include/asm/clock.h
 delete mode 100644 arch/mips/include/asm/mach-lemote/dma-coherence.h
 delete mode 100644 arch/mips/include/asm/mach-lemote/mc146818rtc.h
 delete mode 100644 arch/mips/include/asm/mach-lemote/pci.h
 delete mode 100644 arch/mips/include/asm/mach-lemote/war.h
 create mode 100644 arch/mips/include/asm/mach-loongson/cmdline.h
 create mode 100644 arch/mips/include/asm/mach-loongson/cpu-feature-overrides.h
 create mode 100644 arch/mips/include/asm/mach-loongson/cs5536/cs5536.h
 create mode 100644 arch/mips/include/asm/mach-loongson/cs5536/cs5536_mfgpt.h
 create mode 100644 arch/mips/include/asm/mach-loongson/cs5536/cs5536_pci.h
 create mode 100644 arch/mips/include/asm/mach-loongson/cs5536/cs5536_vsm.h
 create mode 100644 arch/mips/include/asm/mach-loongson/dma-coherence.h
 create mode 100644 arch/mips/include/asm/mach-loongson/loongson.h
 create mode 100644 arch/mips/include/asm/mach-loongson/machine.h
 create mode 100644 arch/mips/include/asm/mach-loongson/mc146818rtc.h
 create mode 100644 arch/mips/include/asm/mach-loongson/mem.h
 create mode 100644 arch/mips/include/asm/mach-loongson/pci.h
 create mode 100644 arch/mips/include/asm/mach-loongson/war.h
 create mode 100644 arch/mips/kernel/loongson2f_freq.c
 delete mode 100644 arch/mips/lemote/lm2e/Makefile
 delete mode 100644 arch/mips/lemote/lm2e/bonito-irq.c
 delete mode 100644 arch/mips/lemote/lm2e/dbg_io.c
 delete mode 100644 arch/mips/lemote/lm2e/irq.c
 delete mode 100644 arch/mips/lemote/lm2e/mem.c
 delete mode 100644 arch/mips/lemote/lm2e/pci.c
 delete mode 100644 arch/mips/lemote/lm2e/prom.c
 delete mode 100644 arch/mips/lemote/lm2e/reset.c
 delete mode 100644 arch/mips/lemote/lm2e/setup.c
 create mode 100644 arch/mips/loongson/Kconfig
 create mode 100644 arch/mips/loongson/Makefile
 create mode 100644 arch/mips/loongson/common/Makefile
 create mode 100644 arch/mips/loongson/common/bonito-irq.c
 create mode 100644 arch/mips/loongson/common/clock.c
 create mode 100644 arch/mips/loongson/common/cmdline.c
 create mode 100644 arch/mips/loongson/common/cs5536/Makefile
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_acc.c
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_ehci.c
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_flash.c
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_ide.c
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_isa.c
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_mfgpt.c
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_ohci.c
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_otg.c
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_pci.c
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_udc.c
 create mode 100644 arch/mips/loongson/common/early_printk.c
 create mode 100644 arch/mips/loongson/common/init.c
 create mode 100644 arch/mips/loongson/common/irq.c
 create mode 100644 arch/mips/loongson/common/mem.c
 create mode 100644 arch/mips/loongson/common/misc.c
 create mode 100644 arch/mips/loongson/common/pci.c
 create mode 100644 arch/mips/loongson/common/reset.c
 create mode 100644 arch/mips/loongson/common/rtc.c
 create mode 100644 arch/mips/loongson/common/serial.c
 create mode 100644 arch/mips/loongson/common/setup.c
 create mode 100644 arch/mips/loongson/common/time.c
 create mode 100644 arch/mips/loongson/fuloong-2e/Makefile
 create mode 100644 arch/mips/loongson/fuloong-2e/irq.c
 create mode 100644 arch/mips/loongson/fuloong-2e/reset.c
 create mode 100644 arch/mips/loongson/fuloong-2f/Makefile
 create mode 100644 arch/mips/loongson/fuloong-2f/irq.c
 create mode 100644 arch/mips/loongson/fuloong-2f/reset.c
 create mode 100644 arch/mips/loongson/yeeloong-2f/Makefile
 create mode 100644 arch/mips/loongson/yeeloong-2f/init.c
 create mode 100644 arch/mips/loongson/yeeloong-2f/irq.c
 create mode 100644 arch/mips/loongson/yeeloong-2f/reset.c
 create mode 100644 arch/mips/oprofile/op_model_loongson2.c
 create mode 100644 arch/mips/pci/fixup-fuloong2e.c
 create mode 100644 arch/mips/pci/fixup-lemote2f.c
 delete mode 100644 arch/mips/pci/fixup-lm2e.c
 create mode 100644 arch/mips/pci/ops-loongson2.c
 create mode 100644 arch/mips/power/Makefile
 create mode 100644 arch/mips/power/cpu.c
 create mode 100644 arch/mips/power/hibernate.S
 create mode 100644 drivers/video/smi/Makefile
 create mode 100644 drivers/video/smi/smtc2d.c
 create mode 100644 drivers/video/smi/smtc2d.h
 create mode 100644 drivers/video/smi/smtcfb.c
 create mode 100644 drivers/video/smi/smtcfb.h
#1 lore raw

PATCH 1/27 fix-warning: incompatible argument type of pci_fixup_irqs

From: Wu Zhangjin <[email protected]>

arch/mips/pci/pci.c:160: warning: passing argument 2 of ‘pci_fixup_irqs’ from incompatible pointer type

include/linux/pci.h:

	void pci_fixup_irqs(u8 (*)(struct pci_dev *, u8 *),
            int (*)(struct pci_dev *, u8, u8));

arch/mips/pci/pci.c:160:

	pci_fixup_irqs(pci_common_swizzle, pcibios_map_irq);

arch/mips/include/asm/pci.h:

	extern int pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin);

arch/mips/pci/fixup-malta.c

int __init pcibios_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)

Signature · 1 line
1.6.2.1
#2 lore raw

PATCH 2/27 fix-warning: incompatible argument type of virt_to_phys

In reply to [email protected]

From: Wu Zhangjin <[email protected]>

mm/page_alloc.c:1760: warning: passing argument 1 of ‘virt_to_phys’ makes pointer from integer without a cast

mm/page_alloc.c:1760

	...
	unsigned long addr;
	...
	split_page(virt_to_page(addr), order);

arch/mips/include/asm/page.h

	#define virt_to_page(kaddr) pfn_to_page(PFN_DOWN(virt_to_phys(kaddr)))
	#define virt_addr_valid(kaddr)  pfn_valid(PFN_DOWN(virt_to_phys(kaddr)))

arch/mips/include/asm/io.h
static inline unsigned long virt_to_phys(volatile const void *address)

Signature · 1 line
1.6.2.1
#3 lore raw

PATCH 3/27 fix-error: incompatiable argument type of clear_user

In reply to [email protected]

From: Wu Zhangjin <[email protected]>

there are lots of warnings about the macro: clear_user in linux-mips.

the type of the second argument of access_ok should be (void __user *), but there is an un-needed (unsigned long) conversion before __cl_addr, so, remove the (unsigned long) will fix this problem.

Signature · 1 line
1.6.2.1
#4 lore raw

PATCH 4/27 change the naming methods

In reply to [email protected]

From: Wu Zhangjin <[email protected]>

to support loongson-based machines made by non-lemote companies, some lemote* names should be changed to loongson* names, and to support the future loongson2f-based fulong machines, the current fulong's name should be fuloong-2e or fuloong2e, and also, FULONG to FULOONG2E, lm2e to fuloong2e, LEMOTE to LOONGSON.

at the same time, tons of lines have been cleaned up with the help of scripts/checkpatch.pl

arch/mips/include/asm/mach-loongson/loongson.h:14: ends with blank lines.

Signature · 1 line
1.6.2.1
#5 lore raw

PATCH 5/27 remove reference to bonito64.h

In reply to [email protected]

From: Wu Zhangjin <[email protected]>

in loongson2e, there is an internal bonito64 compatiable north bridge, but in loongson2f and the later loongson revisions, this will change a lot, so, remove reference from bonito64.h and create a new loongson.h is better.

arch/mips/include/asm/mach-loongson/loongson.h:206: ends with blank lines.

Signature · 1 line
1.6.2.1
#6 lore raw

PATCH 6/27 divide the files to the smallest logic unit

In reply to [email protected]

From: Wu Zhangjin <[email protected]>

to enhance the maintainability and scalability of the source code, there is a need to divide the files to the smallest logic function unit.

at the same time, the header files references are cleaned up, and some loongson2e* names are changed to loongson* for future source code sharing between loongson-2e and loongson-2f

Signature · 1 line
1.6.2.1
#9 lore raw

PATCH 9/27 enable Real Time Clock Support for fuloong(2e)

In reply to [email protected]

From: Wu Zhangjin <[email protected]>

by default, RTC_LIB is selected by MIPS, but if RTC_LIB is enabled, Enhanced Real Time Clock Support(RTC) will be disabled, so, to enable it, not select RTC_LIB in LEMOTE_FULOONG2E will fix this problem.

RTC support is needed by some tools like hwclock, if you want hwclock work well, these two jobs need to do:

kernel configuration:

Device Drivers --->
Character devices --->
<*> Enhanced Real Time Clock Support (legacy PC RTC driver)

user-space configuration:

$ mknod /dev/rtc c 10 135

and there is another RTC support in linux, whose kernel option is RTC_CLASS, it should be fixed for fuloong(2e) via enabling the binary mode in driver/rtc/rtc-cmos.c and register the RTC device resource in a machine specific rtc.c

to make hwclock work with it normally, please do:

kernel configuration:

Device Drivers --->
<*> Real Time Clock --->

	<*>   PC-style 'CMOS'

user-space configuration:

$ mknod /dev/rtc0 c 254 0

/dev/rtc0 is the default RTC device file.

Signature · 1 line
1.6.2.1
#10 lore raw

PATCH 10/27 add loongson-specific cpu-feature-overrides.h

In reply to [email protected]

From: Wu Zhangjin <[email protected]>

This file will obviously reduce the size of kernel image file, reduce tons of branches and enhance the performance.

$ wc -c vmlinux		// before
8054849 vmlinux
$ wc -c vmlinux		// after
7626936 vmlinux
$ echo $(((8054849-7626936)/1024))	// kb
417
$ echo "(8054849-7626936)/8054849" | bc -l
.05312489408553779220
Signature · 1 line
1.6.2.1
#12 lore raw
In reply to [email protected]

hi, all

sorry for sending the EMPTY patches(use the wrong option of format-patch and without a content check) to you, forgive me :-)

please ignore the E-mails, and i will add a -v1 in the subject to sending the normal one.

sorry again!!!

best regards,
Wu Zhangjin

Quoted 397 lines · On Thu, 2009-05-21 at 05:21 +0800, [email protected] wrote:

From: Wu Zhangjin <[email protected]>

Dear all,

I have cleaned up the source code of loongson-based machines support and updated it to linux-2.6.29.3, the latest result is put to the following git repository:

   git://dev.lemote.com/rt4ls.git  to-ralf
	or
   http://dev.lemote.com/cgit/rt4ls.git/log/?h=to-ralf

this job is based on the to-mips branch of Yanhua's
git://dev.lemote.com/linux_loongson.git and the lm2e-fixes branch of Philippe's
git://git.linux-cisco.org/linux-mips.git. thanks goes to them.

and also, thanks goes to Erwen and heihaier for testing the latest branch, and thanks ralf, zhangLe, john and the other guyes for reviewing the old branch and giving good suggestions.

the most differences between this branch and the old branch include:

* all of these patches are checked by script/checkpatch.pl, only a few warnings left.

* the cs5536 part have been cleaned up deeply. the old pcireg.h is removed via using the include/linux/pci_regs.h instead. and the old cs5536_vsm.c is divided to several modules, one file one module.

* the source code in driver/video/smi in cleaned up a lot, two trashy header files are removed, and several trashy functions are removed, lots of coding style errors and warnings are cleaned up.

* gcc 4.4 support, including 32bit and 64bit, and also it is gcc 4.3 compatiable

I have tested it in 32bit and 64bit with gcc 4.3 on fuloong(2e), fuloong(2f), yeeloong(2f), all of them work well, and also test it in 32bit and 64bit with gcc 4.4 on fuloong(2f), works normally. Erwen and heihaier have tested it in 64bit with gcc 4.4 on a yeeloong laptop.

* the current source code architecture

$ tree arch/mips/loongson/
arch/mips/loongson/
|-- Kconfig
|-- Makefile
|-- common
|   |-- Makefile
|   |-- bonito-irq.c
|   |-- clock.c
|   |-- cmdline.c
|   |-- cs5536
|   |   |-- Makefile
|   |   |-- cs5536_acc.c
|   |   |-- cs5536_ehci.c
|   |   |-- cs5536_flash.c
|   |   |-- cs5536_ide.c
|   |   |-- cs5536_isa.c 
|   |   |-- cs5536_mfgpt.c  --> cs5536 mfgpt timer
|   |   |-- cs5536_ohci.c
|   |   |-- cs5536_otg.c
|   |   |-- cs5536_pci.c    --> cs5536_pci_conf_read4/write4
|   |   `-- cs5536_udc.c
|   |-- early_printk.c
|   |-- init.c
|   |-- irq.c
|   |-- mem.c
|   |-- misc.c
|   |-- pci.c
|   |-- reset.c
|   |-- rtc.c
|   |-- serial.c
|   |-- setup.c
|   `-- time.c
|-- fuloong-2e
|   |-- Makefile
|   |-- irq.c
|   `-- reset.c
|-- fuloong-2f
|   |-- Makefile
|   |-- irq.c
|   `-- reset.c
`-- yeeloong-2f
    |-- Makefile
    |-- init.c
    |-- irq.c
    `-- reset.c
$ tree arch/mips/include/asm/mach-loongson/
arch/mips/include/asm/mach-loongson/
|-- cmdline.h
|-- cpu-feature-overrides.h
|-- cs5536
|   |-- cs5536.h
|   |-- cs5536_mfgpt.h
|   |-- cs5536_pci.h
|   `-- cs5536_vsm.h
|-- dma-coherence.h
|-- loongson.h
|-- machine.h    --> merged from the old board-name/machine.h
|-- mc146818rtc.h
|-- mem.h
|-- pci.h
`-- war.h

* PCI relative files:

arch/mips/pci/fixup-fuloong2e.c arch/mips/pci/fixup-lemote2f.c
arch/mips/pci/ops-loongson2.c ^^^^^^^^|

		  |^^^^^^^	        fuloong2f & yeeloong2f
                  have preserved a position for gdium

* Video card Driver(SMI) for yeeloong2f

$ drivers/video/smi/
|-- Makefile
|-- smtc2d.c
|-- smtc2d.h
|-- smtcfb.c
`-- smtcfb.h

* STD support for MIPS

$ arch/mips/power/
|-- Makefile
|-- cpu.c
`-- hibernate.S

* Oprofile support for loongson2

arch/mips/oprofile/op_model_loongson2.c

* cpufrq support for loongson2f

arch/mips/kerenl/loongson2f_freq.c
arch/mips/loongson/common/clock.c

* gcc 4.4 support for MIPS

arch/mips/include/asm/compiler.h
arch/mips/include/asm/delay.h
arch/mips/include/asm/div64.h

* gcc 4.4 support for loongson2e/2f

arch/mips/Makefile

Wu Zhangjin (27):
fix-warning: incompatible argument type of pci_fixup_irqs
fix-warning: incompatible argument type of virt_to_phys
fix-error: incompatiable argument type of clear_user change the naming methods
remove reference to bonito64.h
divide the files to the smallest logic unit replace tons of magic numbers by understandable symbols clean up the early printk support for fuloong(2e) enable Real Time Clock Support for fuloong(2e) add loongson-specific cpu-feature-overrides.h split the loongson-specific part out
add basic loongson-2f support
add basic fuloong(2f) support
enable serial port support of loongson-based machines add basic yeeloong(2f) laptop support
Add Siliconmotion 712 framebuffer driver
define Loongson2F arch specific phys prot access Loongson2 specific OProfile driver
flush posted write to irq
CS5536 MFGPT as system clock source support Loongson2F cpufreq support
Hibernation Support in mips system
Alsa memory maps fixup on mips systems
fixup for FUJITSU disk
Flush RAS and BTB for CPU predictively execution add default kernel config file for loongson-based machines add gcc 4.4 support for MIPS and loongson

 .gitignore                                         |    1 +
 arch/mips/Kconfig                                  |   92 +-
 arch/mips/Makefile                                 |   21 +-
 arch/mips/configs/fulong_defconfig                 | 1912 --------------
 arch/mips/configs/fuloong2e_defconfig              | 1977 +++++++++++++++
 arch/mips/configs/fuloong2f_defconfig              | 2630 +++++++++++++++++++
 arch/mips/configs/yeeloong2f_defconfig             | 2641 ++++++++++++++++++++
 arch/mips/include/asm/clock.h                      |   64 +
 arch/mips/include/asm/compiler.h                   |   10 +
 arch/mips/include/asm/delay.h                      |   58 +-
 arch/mips/include/asm/div64.h                      |   24 +-
 arch/mips/include/asm/mach-lemote/dma-coherence.h  |   66 -
 arch/mips/include/asm/mach-lemote/mc146818rtc.h    |   36 -
 arch/mips/include/asm/mach-lemote/pci.h            |   30 -
 arch/mips/include/asm/mach-lemote/war.h            |   25 -
 arch/mips/include/asm/mach-loongson/cmdline.h      |    9 +
 .../asm/mach-loongson/cpu-feature-overrides.h      |   58 +
 .../mips/include/asm/mach-loongson/cs5536/cs5536.h |  382 +++
 .../asm/mach-loongson/cs5536/cs5536_mfgpt.h        |   26 +
 .../include/asm/mach-loongson/cs5536/cs5536_pci.h  |  174 ++
 .../include/asm/mach-loongson/cs5536/cs5536_vsm.h  |   59 +
 .../mips/include/asm/mach-loongson/dma-coherence.h |   70 +
 arch/mips/include/asm/mach-loongson/loongson.h     |  311 +++
 arch/mips/include/asm/mach-loongson/machine.h      |   87 +
 arch/mips/include/asm/mach-loongson/mc146818rtc.h  |   36 +
 arch/mips/include/asm/mach-loongson/mem.h          |   31 +
 arch/mips/include/asm/mach-loongson/pci.h          |   59 +
 arch/mips/include/asm/mach-loongson/war.h          |   25 +
 arch/mips/include/asm/mips-boards/bonito64.h       |    5 -
 arch/mips/include/asm/page.h                       |    5 +-
 arch/mips/include/asm/pci.h                        |    2 +-
 arch/mips/include/asm/pgtable.h                    |   13 +
 arch/mips/include/asm/stackframe.h                 |   14 +
 arch/mips/include/asm/suspend.h                    |    2 +
 arch/mips/include/asm/uaccess.h                    |    2 +-
 arch/mips/kernel/Makefile                          |    1 +
 arch/mips/kernel/asm-offsets.c                     |   13 +
 arch/mips/kernel/i8259.c                           |    2 +
 arch/mips/kernel/loongson2f_freq.c                 |  223 ++
 arch/mips/lemote/lm2e/Makefile                     |    7 -
 arch/mips/lemote/lm2e/bonito-irq.c                 |   74 -
 arch/mips/lemote/lm2e/dbg_io.c                     |  146 --
 arch/mips/lemote/lm2e/irq.c                        |  144 --
 arch/mips/lemote/lm2e/mem.c                        |   23 -
 arch/mips/lemote/lm2e/pci.c                        |   97 -
 arch/mips/lemote/lm2e/prom.c                       |   97 -
 arch/mips/lemote/lm2e/reset.c                      |   41 -
 arch/mips/lemote/lm2e/setup.c                      |  111 -
 arch/mips/loongson/Kconfig                         |  135 +
 arch/mips/loongson/Makefile                        |   23 +
 arch/mips/loongson/common/Makefile                 |   37 +
 arch/mips/loongson/common/bonito-irq.c             |   78 +
 arch/mips/loongson/common/clock.c                  |  166 ++
 arch/mips/loongson/common/cmdline.c                |   85 +
 arch/mips/loongson/common/cs5536/Makefile          |   25 +
 arch/mips/loongson/common/cs5536/cs5536_acc.c      |  155 ++
 arch/mips/loongson/common/cs5536/cs5536_ehci.c     |  165 ++
 arch/mips/loongson/common/cs5536/cs5536_flash.c    |  450 ++++
 arch/mips/loongson/common/cs5536/cs5536_ide.c      |  193 ++
 arch/mips/loongson/common/cs5536/cs5536_isa.c      |  376 +++
 arch/mips/loongson/common/cs5536/cs5536_mfgpt.c    |  258 ++
 arch/mips/loongson/common/cs5536/cs5536_ohci.c     |  167 ++
 arch/mips/loongson/common/cs5536/cs5536_otg.c      |  137 +
 arch/mips/loongson/common/cs5536/cs5536_pci.c      |  126 +
 arch/mips/loongson/common/cs5536/cs5536_udc.c      |  142 ++
 arch/mips/loongson/common/early_printk.c           |   28 +
 arch/mips/loongson/common/init.c                   |   57 +
 arch/mips/loongson/common/irq.c                    |  134 +
 arch/mips/loongson/common/mem.c                    |  116 +
 arch/mips/loongson/common/misc.c                   |   15 +
 arch/mips/loongson/common/pci.c                    |  109 +
 arch/mips/loongson/common/reset.c                  |   38 +
 arch/mips/loongson/common/rtc.c                    |   54 +
 arch/mips/loongson/common/serial.c                 |   64 +
 arch/mips/loongson/common/setup.c                  |   74 +
 arch/mips/loongson/common/time.c                   |   34 +
 arch/mips/loongson/fuloong-2e/Makefile             |    7 +
 arch/mips/loongson/fuloong-2e/irq.c                |   58 +
 arch/mips/loongson/fuloong-2e/reset.c              |   26 +
 arch/mips/loongson/fuloong-2f/Makefile             |    5 +
 arch/mips/loongson/fuloong-2f/irq.c                |   53 +
 arch/mips/loongson/fuloong-2f/reset.c              |   65 +
 arch/mips/loongson/yeeloong-2f/Makefile            |    5 +
 arch/mips/loongson/yeeloong-2f/init.c              |   71 +
 arch/mips/loongson/yeeloong-2f/irq.c               |   53 +
 arch/mips/loongson/yeeloong-2f/reset.c             |   40 +
 arch/mips/oprofile/Makefile                        |    1 +
 arch/mips/oprofile/common.c                        |    5 +
 arch/mips/oprofile/op_model_loongson2.c            |  186 ++
 arch/mips/pci/Makefile                             |    4 +-
 arch/mips/pci/fixup-au1000.c                       |    2 +-
 arch/mips/pci/fixup-capcella.c                     |    2 +-
 arch/mips/pci/fixup-cobalt.c                       |    2 +-
 arch/mips/pci/fixup-emma2rh.c                      |    2 +-
 arch/mips/pci/fixup-excite.c                       |    2 +-
 arch/mips/pci/fixup-fuloong2e.c                    |  243 ++
 arch/mips/pci/fixup-ip32.c                         |    2 +-
 arch/mips/pci/fixup-lemote2f.c                     |  171 ++
 arch/mips/pci/fixup-lm2e.c                         |  242 --
 arch/mips/pci/fixup-malta.c                        |    2 +-
 arch/mips/pci/fixup-mpc30x.c                       |    2 +-
 arch/mips/pci/fixup-pmcmsp.c                       |    2 +-
 arch/mips/pci/fixup-pnx8550.c                      |    2 +-
 arch/mips/pci/fixup-rc32434.c                      |    2 +-
 arch/mips/pci/fixup-sni.c                          |    2 +-
 arch/mips/pci/fixup-tb0219.c                       |    2 +-
 arch/mips/pci/fixup-tb0226.c                       |    2 +-
 arch/mips/pci/fixup-tb0287.c                       |    2 +-
 arch/mips/pci/fixup-wrppmc.c                       |    2 +-
 arch/mips/pci/fixup-yosemite.c                     |    2 +-
 arch/mips/pci/ops-bonito64.c                       |   19 +-
 arch/mips/pci/ops-loongson2.c                      |  213 ++
 arch/mips/pci/pci-bcm1480.c                        |    2 +-
 arch/mips/pci/pci-bcm47xx.c                        |    2 +-
 arch/mips/pci/pci-ip27.c                           |    2 +-
 arch/mips/pci/pci-lasat.c                          |    2 +-
 arch/mips/pci/pci-sb1250.c                         |    2 +-
 arch/mips/power/Makefile                           |    1 +
 arch/mips/power/cpu.c                              |   51 +
 arch/mips/power/hibernate.S                        |   78 +
 arch/mips/txx9/generic/pci.c                       |    2 +-
 drivers/ide/amd74xx.c                              |   19 +
 drivers/rtc/rtc-cmos.c                             |    8 +-
 drivers/video/Kconfig                              |   23 +
 drivers/video/Makefile                             |    1 +
 drivers/video/smi/Makefile                         |    8 +
 drivers/video/smi/smtc2d.c                         |  979 ++++++++
 drivers/video/smi/smtc2d.h                         |  530 ++++
 drivers/video/smi/smtcfb.c                         | 1141 +++++++++
 drivers/video/smi/smtcfb.h                         |  793 ++++++
 include/linux/suspend.h                            |    3 +-
 sound/core/pcm_native.c                            |    9 +
 sound/core/sgbuf.c                                 |    9 +
 sound/pci/Kconfig                                  |    1 -
 134 files changed, 17383 insertions(+), 3161 deletions(-)
 delete mode 100644 arch/mips/configs/fulong_defconfig
 create mode 100644 arch/mips/configs/fuloong2e_defconfig
 create mode 100644 arch/mips/configs/fuloong2f_defconfig
 create mode 100644 arch/mips/configs/yeeloong2f_defconfig
 create mode 100644 arch/mips/include/asm/clock.h
 delete mode 100644 arch/mips/include/asm/mach-lemote/dma-coherence.h
 delete mode 100644 arch/mips/include/asm/mach-lemote/mc146818rtc.h
 delete mode 100644 arch/mips/include/asm/mach-lemote/pci.h
 delete mode 100644 arch/mips/include/asm/mach-lemote/war.h
 create mode 100644 arch/mips/include/asm/mach-loongson/cmdline.h
 create mode 100644 arch/mips/include/asm/mach-loongson/cpu-feature-overrides.h
 create mode 100644 arch/mips/include/asm/mach-loongson/cs5536/cs5536.h
 create mode 100644 arch/mips/include/asm/mach-loongson/cs5536/cs5536_mfgpt.h
 create mode 100644 arch/mips/include/asm/mach-loongson/cs5536/cs5536_pci.h
 create mode 100644 arch/mips/include/asm/mach-loongson/cs5536/cs5536_vsm.h
 create mode 100644 arch/mips/include/asm/mach-loongson/dma-coherence.h
 create mode 100644 arch/mips/include/asm/mach-loongson/loongson.h
 create mode 100644 arch/mips/include/asm/mach-loongson/machine.h
 create mode 100644 arch/mips/include/asm/mach-loongson/mc146818rtc.h
 create mode 100644 arch/mips/include/asm/mach-loongson/mem.h
 create mode 100644 arch/mips/include/asm/mach-loongson/pci.h
 create mode 100644 arch/mips/include/asm/mach-loongson/war.h
 create mode 100644 arch/mips/kernel/loongson2f_freq.c
 delete mode 100644 arch/mips/lemote/lm2e/Makefile
 delete mode 100644 arch/mips/lemote/lm2e/bonito-irq.c
 delete mode 100644 arch/mips/lemote/lm2e/dbg_io.c
 delete mode 100644 arch/mips/lemote/lm2e/irq.c
 delete mode 100644 arch/mips/lemote/lm2e/mem.c
 delete mode 100644 arch/mips/lemote/lm2e/pci.c
 delete mode 100644 arch/mips/lemote/lm2e/prom.c
 delete mode 100644 arch/mips/lemote/lm2e/reset.c
 delete mode 100644 arch/mips/lemote/lm2e/setup.c
 create mode 100644 arch/mips/loongson/Kconfig
 create mode 100644 arch/mips/loongson/Makefile
 create mode 100644 arch/mips/loongson/common/Makefile
 create mode 100644 arch/mips/loongson/common/bonito-irq.c
 create mode 100644 arch/mips/loongson/common/clock.c
 create mode 100644 arch/mips/loongson/common/cmdline.c
 create mode 100644 arch/mips/loongson/common/cs5536/Makefile
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_acc.c
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_ehci.c
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_flash.c
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_ide.c
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_isa.c
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_mfgpt.c
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_ohci.c
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_otg.c
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_pci.c
 create mode 100644 arch/mips/loongson/common/cs5536/cs5536_udc.c
 create mode 100644 arch/mips/loongson/common/early_printk.c
 create mode 100644 arch/mips/loongson/common/init.c
 create mode 100644 arch/mips/loongson/common/irq.c
 create mode 100644 arch/mips/loongson/common/mem.c
 create mode 100644 arch/mips/loongson/common/misc.c
 create mode 100644 arch/mips/loongson/common/pci.c
 create mode 100644 arch/mips/loongson/common/reset.c
 create mode 100644 arch/mips/loongson/common/rtc.c
 create mode 100644 arch/mips/loongson/common/serial.c
 create mode 100644 arch/mips/loongson/common/setup.c
 create mode 100644 arch/mips/loongson/common/time.c
 create mode 100644 arch/mips/loongson/fuloong-2e/Makefile
 create mode 100644 arch/mips/loongson/fuloong-2e/irq.c
 create mode 100644 arch/mips/loongson/fuloong-2e/reset.c
 create mode 100644 arch/mips/loongson/fuloong-2f/Makefile
 create mode 100644 arch/mips/loongson/fuloong-2f/irq.c
 create mode 100644 arch/mips/loongson/fuloong-2f/reset.c
 create mode 100644 arch/mips/loongson/yeeloong-2f/Makefile
 create mode 100644 arch/mips/loongson/yeeloong-2f/init.c
 create mode 100644 arch/mips/loongson/yeeloong-2f/irq.c
 create mode 100644 arch/mips/loongson/yeeloong-2f/reset.c
 create mode 100644 arch/mips/oprofile/op_model_loongson2.c
 create mode 100644 arch/mips/pci/fixup-fuloong2e.c
 create mode 100644 arch/mips/pci/fixup-lemote2f.c
 delete mode 100644 arch/mips/pci/fixup-lm2e.c
 create mode 100644 arch/mips/pci/ops-loongson2.c
 create mode 100644 arch/mips/power/Makefile
 create mode 100644 arch/mips/power/cpu.c
 create mode 100644 arch/mips/power/hibernate.S
 create mode 100644 drivers/video/smi/Makefile
 create mode 100644 drivers/video/smi/smtc2d.c
 create mode 100644 drivers/video/smi/smtc2d.h
 create mode 100644 drivers/video/smi/smtcfb.c
 create mode 100644 drivers/video/smi/smtcfb.h
#13 lore raw
In reply to [email protected]
Quoted 33 lines · [email protected] wrote:

From: Wu Zhangjin <[email protected]>

Dear all,

I have cleaned up the source code of loongson-based machines support and updated it to linux-2.6.29.3, the latest result is put to the following git repository:

   git://dev.lemote.com/rt4ls.git  to-ralf
	or
   http://dev.lemote.com/cgit/rt4ls.git/log/?h=to-ralf

this job is based on the to-mips branch of Yanhua's
git://dev.lemote.com/linux_loongson.git and the lm2e-fixes branch of Philippe's
git://git.linux-cisco.org/linux-mips.git. thanks goes to them.

and also, thanks goes to Erwen and heihaier for testing the latest branch, and thanks ralf, zhangLe, john and the other guyes for reviewing the old branch and giving good suggestions.

the most differences between this branch and the old branch include:

* all of these patches are checked by script/checkpatch.pl, only a few warnings left.

* the cs5536 part have been cleaned up deeply. the old pcireg.h is removed via using the include/linux/pci_regs.h instead. and the old cs5536_vsm.c is divided to several modules, one file one module.

* the source code in driver/video/smi in cleaned up a lot, two trashy header files are removed, and several trashy functions are removed, lots of coding style errors and warnings are cleaned up.

Quoted 7 lines

* gcc 4.4 support, including 32bit and 64bit, and also it is gcc 4.3 compatiable

I have tested it in 32bit and 64bit with gcc 4.3 on fuloong(2e), fuloong(2f), yeeloong(2f), all of them work well, and also test it in 32bit and 64bit with gcc 4.4 on fuloong(2f), works normally. Erwen and heihaier have tested it in 64bit with gcc 4.4 on a yeeloong laptop.

Wow this is great. Does this branch also include the suspend-to-disk / resume-from-disk code from the lemote 2.6.27 STD branch?

From a user's perspective, what are the loongson-oriented improvements of this branch over the existing 2.6.27 branch?

I'd also like to know if:

(a) the ec-modules and

(b) the rtl8187b code

that is currently separate from the main lemote linux 2.6.27 git (the former in a git repository, the later only in a .tar.gz file as far as I know) is included in the 2.6.29.3 branch now.

I can of course check this via git when I have internet access next, but I'm guessing you would be able to provide context beyond just the code changes to the answers of these questions :-)

Oh, and one last thing - is compilation with the lemote-patched binutils / "-mfix-gs2f-kernel" "-mfix-ls2f-kernel" (I'm told these did the same things, the name just changed for some reason - currently I'm using a binutils / as that understands the "-mfix-ls2f-kernel" option) still needed? Without this in the 2.6.27 branch, and esp. with the ec-modules, there were very frequent hard linux crashes (sysrq keys not working).

BTW for me, this is interesting in the context of
http://config.fsf.org/trac/public/wiki/RmsLinuxForYou , which I have several people helping me test at the moment - currently the biggest issue is hard crashes every day or other day, or more frequently if there is a lot of disk or usb I/O.

Thanks,

Signature · 2 lines
Daniel JB Clark   | Sys Admin, Free Software Foundation
pobox.com/~dclark | http://www.fsf.org/about/staff#danny
#14 lore raw
Quoted 37 lines · Daniel Clark
Quoted 36 lines · [email protected] wrote:

From: Wu Zhangjin <[email protected]>

Dear all,

I have cleaned up the source code of loongson-based machines support and updated it to linux-2.6.29.3, the latest result is put to the following git repository:

   git://dev.lemote.com/rt4ls.git  to-ralf
	or
   http://dev.lemote.com/cgit/rt4ls.git/log/?h=to-ralf

this job is based on the to-mips branch of Yanhua's
git://dev.lemote.com/linux_loongson.git and the lm2e-fixes branch of Philippe's
git://git.linux-cisco.org/linux-mips.git. thanks goes to them.

and also, thanks goes to Erwen and heihaier for testing the latest branch, and thanks ralf, zhangLe, john and the other guyes for reviewing the old branch and giving good suggestions.

the most differences between this branch and the old branch include:

* all of these patches are checked by script/checkpatch.pl, only a few warnings left.

* the cs5536 part have been cleaned up deeply. the old pcireg.h is removed via using the include/linux/pci_regs.h instead. and the old cs5536_vsm.c is divided to several modules, one file one module.

* the source code in driver/video/smi in cleaned up a lot, two trashy header files are removed, and several trashy functions are removed, lots of coding style errors and warnings are cleaned up.

* gcc 4.4 support, including 32bit and 64bit, and also it is gcc 4.3 compatiable

Quoted 8 lines
Quoted 4 lines

I have tested it in 32bit and 64bit with gcc 4.3 on fuloong(2e), fuloong(2f), yeeloong(2f), all of them work well, and also test it in 32bit and 64bit with gcc 4.4 on fuloong(2f), works normally. Erwen and heihaier have tested it in 64bit with gcc 4.4 on a yeeloong laptop.

Wow this is great. Does this branch also include the suspend-to-disk / resume-from-disk code from the lemote 2.6.27 STD branch?

yeap, you can find it in the PATCH:

[loongson-PATCH-v1 22/27]
Hibernation Support in mips system

Quoted 3 lines

From a user's perspective, what are the loongson-oriented improvements of this branch over the existing 2.6.27 branch?

seems no obvious improvements to users, but a few:

* smaller kernel image,

several different changes will influence this part.

1. [loongson-PATCH-v1 10/27] add loongson-specific
cpu-feature-overrides.h

     $ wc -c vmlinux             // before
    8054849 vmlinux
    $ wc -c vmlinux             // after
    7626936 vmlinux
    $ echo $(((8054849-7626936)/1024))  // kb
    417
    $ echo "(8054849-7626936)/8054849" | bc -l
    .05312489408553779220

2. tons of source code lines have been cleaned up

the most important parts include cs5536 and smi video card driver.

* higher performance(maybe not easily feel it)

1. the added cpu-feature-overrides will remove tons of branches
2. tons of low-level cs5536 support is cleaned up, some trashy
source code lines are removed, so, the low-level response may be quicker.

but i think the change in this branch is more important to the
developers, the current organization is more scalable than the old one, and tons of duplications have bee removed, magic numbers have been substituted to understandable symbols ...

Quoted 10 lines

I'd also like to know if:

(a) the ec-modules and

(b) the rtl8187b code

that is currently separate from the main lemote linux 2.6.27 git (the former in a git repository, the later only in a .tar.gz file as far as I know) is included in the 2.6.29.3 branch now.

not yet, since the main aim of this branch is pushing the basic loongson2f-based machines' support to the mainline linux. so, these two parts are not included in yet. after the basic support is pushed in, we will try to push the other parts.

Quoted 11 lines

I can of course check this via git when I have internet access next, but I'm guessing you would be able to provide context beyond just the code changes to the answers of these questions :-)

Oh, and one last thing - is compilation with the lemote-patched binutils / "-mfix-gs2f-kernel" "-mfix-ls2f-kernel" (I'm told these did the same things, the name just changed for some reason - currently I'm using a binutils / as that understands the "-mfix-ls2f-kernel" option) still needed? Without this in the 2.6.27 branch, and esp. with the ec-modules, there were very frequent hard linux crashes (sysrq keys not working).

yes, the -mfix-ls2f-kernel is needed if no other solutions for fixing the crashes problems come out. but since the -mfix-ls2f-kernel option is not merged in the mainline 'as' tool, so, this option will not be used in this branch.

sysrq keys really not work, but NMI works :-)

Quoted 6 lines

BTW for me, this is interesting in the context of
http://config.fsf.org/trac/public/wiki/RmsLinuxForYou , which I have several people helping me test at the moment - currently the biggest issue is hard crashes every day or other day, or more frequently if there is a lot of disk or usb I/O.

perhaps Yan hua<[email protected]> can give some help on this problem.

did you compile the kernel with -mfix-ls2f-kernel option? if not, please use it. it may give some help on reducing the hard crashes.

Best Wishes,
Wu Zhangjin

Quoted 1 line

Thanks,

#15 lore raw
Quoted 11 lines · Wu Zhangjin
Quoted 6 lines

BTW for me, this is interesting in the context of
http://config.fsf.org/trac/public/wiki/RmsLinuxForYou , which I have several people helping me test at the moment - currently the biggest issue is hard crashes every day or other day, or more frequently if there is a lot of disk or usb I/O.

perhaps Yan hua<[email protected]> can give some help on this problem.

did you compile the kernel with -mfix-ls2f-kernel option? if not, please use it. it may give some help on reducing the hard crashes.

I am compiling with:

cflags-$(CONFIG_MACH_LM2F) += -Wa,-mfix-ls2f-kernel -Wa,--no-warn (in arch/mips/Makefile)

I think that was at yanh's suggestion; it was from someone at lemote.

I am compiling on a gnewsense-mipsel-l distribution, with the addition of the lemote binutils from dev.lemote.com, currently at:

binutils_2.18.1~cvs20080103-7.loongson.r03_mipsel.deb

The source and binary debs for that I also have up at:
http://config.fsf.org/packages/dists/gnewsense-mipsel-l/lemote-dev-binutils/

I am planning on compiling a 2.6.29.3-based linux (eg the tip of the git tree you pointed at) for rms, since it seems like it includes the suspend-resume support we want to test, and is what hackers are currently working on. If there is a specific git tag you think it would be good to test, please name it :-)

I will post to [email protected] when that's ready and confirmed to boot and not crash really quickly (and stop posting to this really long set of lists / people ...)

Signature · 2 lines
Daniel JB Clark   | Sys Admin, Free Software Foundation
pobox.com/~dclark | http://www.fsf.org/about/staff#danny
#16 lore raw
In reply to Daniel Clark
Quoted 50 lines · 在 2009-05-20三的 18:30 -0400,Daniel Clark写道:
Quoted 33 lines · [email protected] wrote:

From: Wu Zhangjin <[email protected]>

Dear all,

I have cleaned up the source code of loongson-based machines support and updated it to linux-2.6.29.3, the latest result is put to the following git repository:

   git://dev.lemote.com/rt4ls.git  to-ralf
	or
   http://dev.lemote.com/cgit/rt4ls.git/log/?h=to-ralf

this job is based on the to-mips branch of Yanhua's
git://dev.lemote.com/linux_loongson.git and the lm2e-fixes branch of Philippe's
git://git.linux-cisco.org/linux-mips.git. thanks goes to them.

and also, thanks goes to Erwen and heihaier for testing the latest branch, and thanks ralf, zhangLe, john and the other guyes for reviewing the old branch and giving good suggestions.

the most differences between this branch and the old branch include:

* all of these patches are checked by script/checkpatch.pl, only a few warnings left.

* the cs5536 part have been cleaned up deeply. the old pcireg.h is removed via using the include/linux/pci_regs.h instead. and the old cs5536_vsm.c is divided to several modules, one file one module.

* the source code in driver/video/smi in cleaned up a lot, two trashy header files are removed, and several trashy functions are removed, lots of coding style errors and warnings are cleaned up.

Quoted 7 lines

* gcc 4.4 support, including 32bit and 64bit, and also it is gcc 4.3 compatiable

I have tested it in 32bit and 64bit with gcc 4.3 on fuloong(2e), fuloong(2f), yeeloong(2f), all of them work well, and also test it in 32bit and 64bit with gcc 4.4 on fuloong(2f), works normally. Erwen and heihaier have tested it in 64bit with gcc 4.4 on a yeeloong laptop.

Wow this is great. Does this branch also include the suspend-to-disk / resume-from-disk code from the lemote 2.6.27 STD branch?

From a user's perspective, what are the loongson-oriented improvements of this branch over the existing 2.6.27 branch?

I'd also like to know if:

Quoted 7 lines

(a) the ec-modules and

(b) the rtl8187b code

that is currently separate from the main lemote linux 2.6.27 git (the former in a git repository, the later only in a .tar.gz file as far as I know) is included in the 2.6.29.3 branch now.

The ec-modules is firmware related. We think it would be more difficult to enter into mainline.
The rtl8187b is included in 2.6.27 kernel, however, there are many issues in it(even in the 2.6.29 or 2.6.30). Some known isuses are below:
1. very hard to connect, and very poor performance.
2. may cause system crash(now this can be fixed)
issue 1 is the main reason that we stick to use the realtek providing
driver.

Quoted 11 lines

I can of course check this via git when I have internet access next, but I'm guessing you would be able to provide context beyond just the code changes to the answers of these questions :-)

Oh, and one last thing - is compilation with the lemote-patched binutils / "-mfix-gs2f-kernel" "-mfix-ls2f-kernel" (I'm told these did the same things, the name just changed for some reason - currently I'm using a binutils / as that understands the "-mfix-ls2f-kernel" option) still needed? Without this in the 2.6.27 branch, and esp. with the ec-modules, there were very frequent hard linux crashes (sysrq keys not working).

this patch add a option into 'as'. Previously, it's named -mfix-gs2f-kernel, later it is named as -mfix-ls2f-kernel

Any way this patch is not formal, and I prefer it not enter into mainline kernel.

Quoted 6 lines

BTW for me, this is interesting in the context of
http://config.fsf.org/trac/public/wiki/RmsLinuxForYou , which I have several people helping me test at the moment - currently the biggest issue is hard crashes every day or other day, or more frequently if there is a lot of disk or usb I/O.

This issue is caused by the CPU host bridge and CS5536 co-work. currently, we need this patch to work around this issue. Later CPUs design will handle it properly.

Quoted 2 lines

Thanks,

#17 lore raw
Quoted 6 lines · yanh

The rtl8187b is included in 2.6.27 kernel, however, there are many issues in it(even in the 2.6.29 or 2.6.30). Some known isuses are below:
1. very hard to connect, and very poor performance.
2. may cause system crash(now this can be fixed)
issue 1 is the main reason that we stick to use the realtek providing
driver.

Is the code at:

http://www.lemote.com/upfiles/wifi/rtl8187B_linux_26.1049.1215.2008_release2.tar.gz

The latest driver provided by realtek?

If not, where is the latest driver kept?

Thanks,

Signature · 2 lines
Daniel JB Clark   | Sys Admin, Free Software Foundation
pobox.com/~dclark | http://www.fsf.org/about/staff#danny
#18 lore raw
In reply to [email protected]
Quoted 4 lines · [email protected] wrote:

From: Wu Zhangjin <[email protected]>
git://dev.lemote.com/rt4ls.git to-ralf
or
http://dev.lemote.com/cgit/rt4ls.git/log/?h=to-ralf

BTW git to dev.lemote.com at least from some networks in the US is really, really slow (like a few kb per second) - I have a mirror of some other lemote stuff at:

http://not.freedsoftware.org/

and am putting a tarball of the most recent tag as of this moment up at:

http://not.freedsoftware.org/lemote-misc/suspend-linux/git-snapshot/rt4ls-02fd45578db2c88fcd03643e904cc0bffd8ef952.tar.bz2

I'd also be happy to mirror more git repositories, but so far no one has been able to give me the right set of commands to do so. What I am doing currently is in this file:

http://not.freedsoftware.org/CONTROL/gitmirror

The contents of which are:

#!/bin/sh

# I have no idea if this actually does the right thing. Google and

# friend who knows a lot about git were both unable to help.
# If you are a git-fu master, please contact [email protected]
# http://opensysadmin.com/images/i-love-git-so-much.jpg

cd /srv/mirror/DIST/lemote-misc/git-mirror/linux_loongson git checkout -f
git fetch origin
git reset --hard origin
git pull

Signature · 2 lines
Daniel JB Clark   | Sys Admin, Free Software Foundation
pobox.com/~dclark | http://www.fsf.org/about/staff#danny