mirror of
https://github.com/torvalds/linux.git
synced 2024-09-21 15:33:19 +00:00
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 <gnaygnil@gmail.com> Cc: keguang.zhang@gmail.com Cc: linux-mips@linux-mips.org Cc: linux-kernel@vger.kernel.org Patchwork: https://patchwork.linux-mips.org/patch/14214/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
9f3b8081a4
commit
60219c563c
|
@ -30,5 +30,6 @@ void __init ls1x_clk_init(void);
|
||||||
void __init ls1x_dma_set_platdata(struct plat_ls1x_dma *pdata);
|
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_nand_set_platdata(struct plat_ls1x_nand *pdata);
|
||||||
void __init ls1x_serial_set_uartclk(struct platform_device *pdev);
|
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 */
|
#endif /* __ASM_MACH_LOONGSON32_PLATFORM_H */
|
||||||
|
|
|
@ -23,6 +23,10 @@
|
||||||
#include <dma.h>
|
#include <dma.h>
|
||||||
#include <nand.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 */
|
/* 8250/16550 compatible UART */
|
||||||
#define LS1X_UART(_id) \
|
#define LS1X_UART(_id) \
|
||||||
{ \
|
{ \
|
||||||
|
@ -66,6 +70,15 @@ void __init ls1x_serial_set_uartclk(struct platform_device *pdev)
|
||||||
p->uartclk = clk_get_rate(clk);
|
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 */
|
/* CPUFreq */
|
||||||
static struct plat_ls1x_cpufreq ls1x_cpufreq_pdata = {
|
static struct plat_ls1x_cpufreq ls1x_cpufreq_pdata = {
|
||||||
.clk_name = "cpu_clk",
|
.clk_name = "cpu_clk",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# Makefile for loongson1B based machines.
|
# Makefile for loongson1C based machines.
|
||||||
#
|
#
|
||||||
|
|
||||||
obj-y += board.o
|
obj-y += board.o
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2016 Ling Yang <gnaygnil@gmail.com>
|
* Copyright (c) 2016 Yang Ling <gnaygnil@gmail.com>
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify it
|
* 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
|
* 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 = {
|
static struct platform_device *ls1c_platform_devices[] __initdata = {
|
||||||
&ls1x_uart_pdev,
|
&ls1x_uart_pdev,
|
||||||
&ls1x_eth0_pdev,
|
&ls1x_eth0_pdev,
|
||||||
|
&ls1x_rtc_pdev,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int __init ls1c_platform_init(void)
|
static int __init ls1c_platform_init(void)
|
||||||
{
|
{
|
||||||
int err;
|
|
||||||
|
|
||||||
ls1x_serial_set_uartclk(&ls1x_uart_pdev);
|
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));
|
ARRAY_SIZE(ls1c_platform_devices));
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
arch_initcall(ls1c_platform_init);
|
arch_initcall(ls1c_platform_init);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user