MIPS: Add RTC support for Loongson1C board
Subsystems (2)
PATCH 1/1 MIPS: Add RTC support for Loongson1C board
The patch adds RTC support for Loongson1C board, and enable the external crystal when the RTC is first powered up.
Signed-off-by Yang Ling <[email protected]>
--- arch/mips/include/asm/mach-loongson32/platform.h | 1 + arch/mips/loongson32/common/platform.c | 13 +++++++++++++ arch/mips/loongson32/ls1c/Makefile | 2 +- arch/mips/loongson32/ls1c/board.c | 9 ++++----- 4 files changed, 19 insertions(+), 6 deletions(-)
arch/mips/include/asm/mach-loongson32/platform.h +1 -0
@@ -30,5 +30,6 @@ void __init ls1x_clk_init(void);void __init ls1x_dma_set_platdata (struct plat_ls1x_dma *pdata);void __init ls1x_nand_set_platdata (struct plat_ls1x_nand *pdata);void __init ls1x_serial_set_uartclk (struct platform_device *pdev); +void __init ls1x_rtc_set_extclk (struct platform_device *pdev);#endif /* __ASM_MACH_LOONGSON32_PLATFORM_H */
arch/mips/loongson32/common/platform.c +13 -0
@@ -23,6 +23,10 @@#include <dma.h> #include <nand.h> +#define LS1X_RTC_CTRL ((void __iomem *)KSEG1ADDR(LS1X_RTC_BASE + 0x40)) +#define RTC_EXTCLK_OK (BIT(5) | BIT(8)) +#define RTC_EXTCLK_EN BIT(8) +/* 8250/16550 compatible UART */ #define LS1X_UART (_id) \ { \
@@ -66,6 +70,15 @@ void __init ls1x_serial_set_uartclk(struct platform_device *pdev) p->uartclk =clk_get_rate (clk); } +void __init ls1x_rtc_set_extclk (struct platform_device *pdev) +{ +u32 val; + + val =__raw_readl (LS1X_RTC_CTRL ); +if (!(val &RTC_EXTCLK_OK )) +__raw_writel (val |RTC_EXTCLK_EN ,LS1X_RTC_CTRL ); +} +/* CPUFreq */ static struct plat_ls1x_cpufreq ls1x_cpufreq_pdata = { .clk_name ="cpu_clk" ,
arch/mips/loongson32/ls1c/Makefile +1 -1
@@ -1,5 +1,5 @@ # -# Makefile for loongson1B based machines. +# Makefile for loongson1C based machines. # obj-y += board.o
arch/mips/loongson32/ls1c/board.c +4 -5
@@ -1,5 +1,5 @@/* -* Copyright (c) 2016 Ling Yang <[email protected]> +* Copyright (c) 2016 Yang Ling <[email protected]> * * 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
@@ -12,17 +12,16 @@static struct platform_device *ls1c_platform_devices[]__initdata = { &ls1x_uart_pdev, &ls1x_eth0_pdev, + &ls1x_rtc_pdev, };static int __init ls1c_platform_init (void ) { -int err; -ls1x_serial_set_uartclk (&ls1x_uart_pdev); +ls1x_rtc_set_extclk (&ls1x_rtc_pdev); - err =platform_add_devices (ls1c_platform_devices, +return platform_add_devices (ls1c_platform_devices,ARRAY_SIZE (ls1c_platform_devices)); -return err; }arch_initcall (ls1c_platform_init);
Signature · 1 line
1.9.1