Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
ab17ed70
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 4 年多
通知
15
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
ab17ed70
编写于
3月 24, 2018
作者:
W
Wim Van Sebroeck
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'v4.17-rc1'
上级
2e8ebed6
2e62c498
变更
33
隐藏空白更改
内联
并排
Showing
33 changed file
with
329 addition
and
210 deletion
+329
-210
Documentation/devicetree/bindings/watchdog/nuvoton,npcm-wdt.txt
...ntation/devicetree/bindings/watchdog/nuvoton,npcm-wdt.txt
+28
-0
drivers/watchdog/Kconfig
drivers/watchdog/Kconfig
+11
-0
drivers/watchdog/Makefile
drivers/watchdog/Makefile
+1
-0
drivers/watchdog/ar7_wdt.c
drivers/watchdog/ar7_wdt.c
+1
-13
drivers/watchdog/aspeed_wdt.c
drivers/watchdog/aspeed_wdt.c
+4
-0
drivers/watchdog/at91rm9200_wdt.c
drivers/watchdog/at91rm9200_wdt.c
+1
-4
drivers/watchdog/at91sam9_wdt.c
drivers/watchdog/at91sam9_wdt.c
+1
-4
drivers/watchdog/at91sam9_wdt.h
drivers/watchdog/at91sam9_wdt.h
+1
-4
drivers/watchdog/bcm2835_wdt.c
drivers/watchdog/bcm2835_wdt.c
+1
-4
drivers/watchdog/bcm47xx_wdt.c
drivers/watchdog/bcm47xx_wdt.c
+1
-4
drivers/watchdog/bcm63xx_wdt.c
drivers/watchdog/bcm63xx_wdt.c
+1
-4
drivers/watchdog/bcm7038_wdt.c
drivers/watchdog/bcm7038_wdt.c
+2
-10
drivers/watchdog/bcm_kona_wdt.c
drivers/watchdog/bcm_kona_wdt.c
+1
-8
drivers/watchdog/cadence_wdt.c
drivers/watchdog/cadence_wdt.c
+1
-4
drivers/watchdog/da9052_wdt.c
drivers/watchdog/da9052_wdt.c
+1
-5
drivers/watchdog/da9055_wdt.c
drivers/watchdog/da9055_wdt.c
+1
-5
drivers/watchdog/da9062_wdt.c
drivers/watchdog/da9062_wdt.c
+1
-9
drivers/watchdog/da9063_wdt.c
drivers/watchdog/da9063_wdt.c
+1
-4
drivers/watchdog/digicolor_wdt.c
drivers/watchdog/digicolor_wdt.c
+1
-4
drivers/watchdog/ebc-c384_wdt.c
drivers/watchdog/ebc-c384_wdt.c
+1
-0
drivers/watchdog/mei_wdt.c
drivers/watchdog/mei_wdt.c
+2
-10
drivers/watchdog/mena21_wdt.c
drivers/watchdog/mena21_wdt.c
+1
-3
drivers/watchdog/meson_gxbb_wdt.c
drivers/watchdog/meson_gxbb_wdt.c
+1
-49
drivers/watchdog/mtk_wdt.c
drivers/watchdog/mtk_wdt.c
+1
-10
drivers/watchdog/mtx-1_wdt.c
drivers/watchdog/mtx-1_wdt.c
+1
-10
drivers/watchdog/npcm_wdt.c
drivers/watchdog/npcm_wdt.c
+254
-0
drivers/watchdog/of_xilinx_wdt.c
drivers/watchdog/of_xilinx_wdt.c
+2
-6
drivers/watchdog/st_lpc_wdt.c
drivers/watchdog/st_lpc_wdt.c
+1
-5
drivers/watchdog/tangox_wdt.c
drivers/watchdog/tangox_wdt.c
+1
-5
drivers/watchdog/tegra_wdt.c
drivers/watchdog/tegra_wdt.c
+1
-9
drivers/watchdog/uniphier_wdt.c
drivers/watchdog/uniphier_wdt.c
+1
-9
drivers/watchdog/wm831x_wdt.c
drivers/watchdog/wm831x_wdt.c
+1
-4
drivers/watchdog/wm8350_wdt.c
drivers/watchdog/wm8350_wdt.c
+1
-4
未找到文件。
Documentation/devicetree/bindings/watchdog/nuvoton,npcm-wdt.txt
0 → 100644
浏览文件 @
ab17ed70
Nuvoton NPCM Watchdog
Nuvoton NPCM timer module provides five 24-bit timer counters, and a watchdog.
The watchdog supports a pre-timeout interrupt that fires 10ms before the
expiry.
Required properties:
- compatible : "nuvoton,npcm750-wdt" for NPCM750 (Poleg).
- reg : Offset and length of the register set for the device.
- interrupts : Contain the timer interrupt with flags for
falling edge.
Required clocking property, have to be one of:
- clocks : phandle of timer reference clock.
- clock-frequency : The frequency in Hz of the clock that drives the NPCM7xx
timer (usually 25000000).
Optional properties:
- timeout-sec : Contains the watchdog timeout in seconds
Example:
timer@f000801c {
compatible = "nuvoton,npcm750-wdt";
interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
reg = <0xf000801c 0x4>;
clocks = <&clk NPCM7XX_CLK_TIMER>;
};
drivers/watchdog/Kconfig
浏览文件 @
ab17ed70
...
@@ -514,6 +514,17 @@ config COH901327_WATCHDOG
...
@@ -514,6 +514,17 @@ config COH901327_WATCHDOG
This watchdog is used to reset the system and thus cannot be
This watchdog is used to reset the system and thus cannot be
compiled as a module.
compiled as a module.
config NPCM7XX_WATCHDOG
bool "Nuvoton NPCM750 watchdog"
depends on ARCH_NPCM || COMPILE_TEST
default y if ARCH_NPCM750
select WATCHDOG_CORE
help
Say Y here to include Watchdog timer support for the
watchdog embedded into the NPCM7xx.
This watchdog is used to reset the system and thus cannot be
compiled as a module.
config TWL4030_WATCHDOG
config TWL4030_WATCHDOG
tristate "TWL4030 Watchdog"
tristate "TWL4030 Watchdog"
depends on TWL4030_CORE
depends on TWL4030_CORE
...
...
drivers/watchdog/Makefile
浏览文件 @
ab17ed70
...
@@ -61,6 +61,7 @@ obj-$(CONFIG_ORION_WATCHDOG) += orion_wdt.o
...
@@ -61,6 +61,7 @@ obj-$(CONFIG_ORION_WATCHDOG) += orion_wdt.o
obj-$(CONFIG_SUNXI_WATCHDOG)
+=
sunxi_wdt.o
obj-$(CONFIG_SUNXI_WATCHDOG)
+=
sunxi_wdt.o
obj-$(CONFIG_RN5T618_WATCHDOG)
+=
rn5t618_wdt.o
obj-$(CONFIG_RN5T618_WATCHDOG)
+=
rn5t618_wdt.o
obj-$(CONFIG_COH901327_WATCHDOG)
+=
coh901327_wdt.o
obj-$(CONFIG_COH901327_WATCHDOG)
+=
coh901327_wdt.o
obj-$(CONFIG_NPCM7XX_WATCHDOG)
+=
npcm_wdt.o
obj-$(CONFIG_STMP3XXX_RTC_WATCHDOG)
+=
stmp3xxx_rtc_wdt.o
obj-$(CONFIG_STMP3XXX_RTC_WATCHDOG)
+=
stmp3xxx_rtc_wdt.o
obj-$(CONFIG_NUC900_WATCHDOG)
+=
nuc900_wdt.o
obj-$(CONFIG_NUC900_WATCHDOG)
+=
nuc900_wdt.o
obj-$(CONFIG_TS4800_WATCHDOG)
+=
ts4800_wdt.o
obj-$(CONFIG_TS4800_WATCHDOG)
+=
ts4800_wdt.o
...
...
drivers/watchdog/ar7_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* drivers/watchdog/ar7_wdt.c
* drivers/watchdog/ar7_wdt.c
*
*
...
@@ -8,19 +9,6 @@
...
@@ -8,19 +9,6 @@
* National Semiconductor SCx200 Watchdog support
* National Semiconductor SCx200 Watchdog support
* Copyright (c) 2001,2002 Christer Weinigel <wingel@nano-system.com>
* Copyright (c) 2001,2002 Christer Weinigel <wingel@nano-system.com>
*
*
* 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
*/
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
...
...
drivers/watchdog/aspeed_wdt.c
浏览文件 @
ab17ed70
...
@@ -46,6 +46,7 @@ MODULE_DEVICE_TABLE(of, aspeed_wdt_of_table);
...
@@ -46,6 +46,7 @@ MODULE_DEVICE_TABLE(of, aspeed_wdt_of_table);
#define WDT_RELOAD_VALUE 0x04
#define WDT_RELOAD_VALUE 0x04
#define WDT_RESTART 0x08
#define WDT_RESTART 0x08
#define WDT_CTRL 0x0C
#define WDT_CTRL 0x0C
#define WDT_CTRL_BOOT_SECONDARY BIT(7)
#define WDT_CTRL_RESET_MODE_SOC (0x00 << 5)
#define WDT_CTRL_RESET_MODE_SOC (0x00 << 5)
#define WDT_CTRL_RESET_MODE_FULL_CHIP (0x01 << 5)
#define WDT_CTRL_RESET_MODE_FULL_CHIP (0x01 << 5)
#define WDT_CTRL_RESET_MODE_ARM_CPU (0x10 << 5)
#define WDT_CTRL_RESET_MODE_ARM_CPU (0x10 << 5)
...
@@ -158,6 +159,7 @@ static int aspeed_wdt_restart(struct watchdog_device *wdd,
...
@@ -158,6 +159,7 @@ static int aspeed_wdt_restart(struct watchdog_device *wdd,
{
{
struct
aspeed_wdt
*
wdt
=
to_aspeed_wdt
(
wdd
);
struct
aspeed_wdt
*
wdt
=
to_aspeed_wdt
(
wdd
);
wdt
->
ctrl
&=
~
WDT_CTRL_BOOT_SECONDARY
;
aspeed_wdt_enable
(
wdt
,
128
*
WDT_RATE_1MHZ
/
1000
);
aspeed_wdt_enable
(
wdt
,
128
*
WDT_RATE_1MHZ
/
1000
);
mdelay
(
1000
);
mdelay
(
1000
);
...
@@ -245,6 +247,8 @@ static int aspeed_wdt_probe(struct platform_device *pdev)
...
@@ -245,6 +247,8 @@ static int aspeed_wdt_probe(struct platform_device *pdev)
}
}
if
(
of_property_read_bool
(
np
,
"aspeed,external-signal"
))
if
(
of_property_read_bool
(
np
,
"aspeed,external-signal"
))
wdt
->
ctrl
|=
WDT_CTRL_WDT_EXT
;
wdt
->
ctrl
|=
WDT_CTRL_WDT_EXT
;
if
(
of_property_read_bool
(
np
,
"aspeed,alt-boot"
))
wdt
->
ctrl
|=
WDT_CTRL_BOOT_SECONDARY
;
if
(
readl
(
wdt
->
base
+
WDT_CTRL
)
&
WDT_CTRL_ENABLE
)
{
if
(
readl
(
wdt
->
base
+
WDT_CTRL
)
&
WDT_CTRL_ENABLE
)
{
/*
/*
...
...
drivers/watchdog/at91rm9200_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* Watchdog driver for Atmel AT91RM9200 (Thunder)
* Watchdog driver for Atmel AT91RM9200 (Thunder)
*
*
* Copyright (C) 2003 SAN People (Pty) Ltd
* Copyright (C) 2003 SAN People (Pty) Ltd
*
*
* 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.
*/
*/
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
...
...
drivers/watchdog/at91sam9_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* Watchdog driver for Atmel AT91SAM9x processors.
* Watchdog driver for Atmel AT91SAM9x processors.
*
*
* Copyright (C) 2008 Renaud CERRATO r.cerrato@til-technologies.fr
* Copyright (C) 2008 Renaud CERRATO r.cerrato@til-technologies.fr
*
*
* 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.
*/
*/
/*
/*
...
...
drivers/watchdog/at91sam9_wdt.h
浏览文件 @
ab17ed70
/* SPDX-License-Identifier: GPL-2.0+ */
/*
/*
* drivers/watchdog/at91sam9_wdt.h
* drivers/watchdog/at91sam9_wdt.h
*
*
...
@@ -7,10 +8,6 @@
...
@@ -7,10 +8,6 @@
* Watchdog Timer (WDT) - System peripherals regsters.
* Watchdog Timer (WDT) - System peripherals regsters.
* Based on AT91SAM9261 datasheet revision D.
* Based on AT91SAM9261 datasheet revision D.
*
*
* 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.
*/
*/
#ifndef AT91_WDT_H
#ifndef AT91_WDT_H
...
...
drivers/watchdog/bcm2835_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* Watchdog driver for Broadcom BCM2835
* Watchdog driver for Broadcom BCM2835
*
*
...
@@ -7,10 +8,6 @@
...
@@ -7,10 +8,6 @@
*
*
* Copyright (C) 2013 Lubomir Rintel <lkundrak@v3.sk>
* Copyright (C) 2013 Lubomir Rintel <lkundrak@v3.sk>
*
*
* 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/delay.h>
#include <linux/delay.h>
...
...
drivers/watchdog/bcm47xx_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* Watchdog driver for Broadcom BCM47XX
* Watchdog driver for Broadcom BCM47XX
*
*
...
@@ -5,10 +6,6 @@
...
@@ -5,10 +6,6 @@
* Copyright (C) 2009 Matthieu CASTET <castet.matthieu@free.fr>
* Copyright (C) 2009 Matthieu CASTET <castet.matthieu@free.fr>
* Copyright (C) 2012-2013 Hauke Mehrtens <hauke@hauke-m.de>
* Copyright (C) 2012-2013 Hauke Mehrtens <hauke@hauke-m.de>
*
*
* 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.
*/
*/
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
...
...
drivers/watchdog/bcm63xx_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* Broadcom BCM63xx SoC watchdog driver
* Broadcom BCM63xx SoC watchdog driver
*
*
* Copyright (C) 2007, Miguel Gaio <miguel.gaio@efixo.com>
* Copyright (C) 2007, Miguel Gaio <miguel.gaio@efixo.com>
* Copyright (C) 2008, Florian Fainelli <florian@openwrt.org>
* Copyright (C) 2008, Florian Fainelli <florian@openwrt.org>
*
*
* 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.
*/
*/
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
...
...
drivers/watchdog/bcm7038_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* Copyright (C) 2015 Broadcom Corporation
* Copyright (C) 2015 Broadcom Corporation
*
*
* 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
*/
#include <linux/clk.h>
#include <linux/clk.h>
...
@@ -235,6 +227,6 @@ module_platform_driver(bcm7038_wdt_driver);
...
@@ -235,6 +227,6 @@ module_platform_driver(bcm7038_wdt_driver);
module_param
(
nowayout
,
bool
,
0
);
module_param
(
nowayout
,
bool
,
0
);
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default="
MODULE_PARM_DESC
(
nowayout
,
"Watchdog cannot be stopped once started (default="
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
")"
);
__MODULE_STRING
(
WATCHDOG_NOWAYOUT
)
")"
);
MODULE_LICENSE
(
"GPL
v2
"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_DESCRIPTION
(
"Driver for Broadcom 7038 SoCs Watchdog"
);
MODULE_DESCRIPTION
(
"Driver for Broadcom 7038 SoCs Watchdog"
);
MODULE_AUTHOR
(
"Justin Chen"
);
MODULE_AUTHOR
(
"Justin Chen"
);
drivers/watchdog/bcm_kona_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0
/*
/*
* Copyright (C) 2013 Broadcom Corporation
* Copyright (C) 2013 Broadcom Corporation
*
*
* 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 version 2.
*
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
* kind, whether express or implied; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
*/
#include <linux/debugfs.h>
#include <linux/debugfs.h>
...
...
drivers/watchdog/cadence_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* Cadence WDT driver - Used by Xilinx Zynq
* Cadence WDT driver - Used by Xilinx Zynq
*
*
* Copyright (C) 2010 - 2014 Xilinx, Inc.
* Copyright (C) 2010 - 2014 Xilinx, Inc.
*
*
* 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/clk.h>
#include <linux/clk.h>
...
...
drivers/watchdog/da9052_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* System monitoring driver for DA9052 PMICs.
* System monitoring driver for DA9052 PMICs.
*
*
...
@@ -5,11 +6,6 @@
...
@@ -5,11 +6,6 @@
*
*
* Author: Anthony Olech <Anthony.Olech@diasemi.com>
* Author: Anthony Olech <Anthony.Olech@diasemi.com>
*
*
* 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/module.h>
#include <linux/module.h>
...
...
drivers/watchdog/da9055_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* System monitoring driver for DA9055 PMICs.
* System monitoring driver for DA9055 PMICs.
*
*
...
@@ -5,11 +6,6 @@
...
@@ -5,11 +6,6 @@
*
*
* Author: David Dajun Chen <dchen@diasemi.com>
* Author: David Dajun Chen <dchen@diasemi.com>
*
*
* 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/module.h>
#include <linux/module.h>
...
...
drivers/watchdog/da9062_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* Watchdog device driver for DA9062 and DA9061 PMICs
* Watchdog device driver for DA9062 and DA9061 PMICs
* Copyright (C) 2015 Dialog Semiconductor Ltd.
* Copyright (C) 2015 Dialog Semiconductor Ltd.
*
*
* 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
*/
#include <linux/kernel.h>
#include <linux/kernel.h>
...
...
drivers/watchdog/da9063_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* Watchdog driver for DA9063 PMICs.
* Watchdog driver for DA9063 PMICs.
*
*
...
@@ -5,10 +6,6 @@
...
@@ -5,10 +6,6 @@
*
*
* Author: Mariusz Wojtasik <mariusz.wojtasik@diasemi.com>
* Author: Mariusz Wojtasik <mariusz.wojtasik@diasemi.com>
*
*
* 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/kernel.h>
#include <linux/kernel.h>
...
...
drivers/watchdog/digicolor_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* Watchdog driver for Conexant Digicolor
* Watchdog driver for Conexant Digicolor
*
*
* Copyright (C) 2015 Paradox Innovation Ltd.
* Copyright (C) 2015 Paradox Innovation Ltd.
*
*
* 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/types.h>
#include <linux/types.h>
...
...
drivers/watchdog/ebc-c384_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0
/*
/*
* Watchdog timer driver for the WinSystems EBC-C384
* Watchdog timer driver for the WinSystems EBC-C384
* Copyright (C) 2016 William Breathitt Gray
* Copyright (C) 2016 William Breathitt Gray
...
...
drivers/watchdog/mei_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0
/*
/*
* Intel Management Engine Interface (Intel MEI) Linux driver
* Intel Management Engine Interface (Intel MEI) Linux driver
* Copyright (c) 2015, Intel Corporation.
* Copyright (c) 2015, Intel Corporation.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
*/
#include <linux/module.h>
#include <linux/module.h>
...
@@ -687,5 +679,5 @@ static struct mei_cl_driver mei_wdt_driver = {
...
@@ -687,5 +679,5 @@ static struct mei_cl_driver mei_wdt_driver = {
module_mei_cl_driver
(
mei_wdt_driver
);
module_mei_cl_driver
(
mei_wdt_driver
);
MODULE_AUTHOR
(
"Intel Corporation"
);
MODULE_AUTHOR
(
"Intel Corporation"
);
MODULE_LICENSE
(
"GPL"
);
MODULE_LICENSE
(
"GPL
v2
"
);
MODULE_DESCRIPTION
(
"Device driver for Intel MEI iAMT watchdog"
);
MODULE_DESCRIPTION
(
"Device driver for Intel MEI iAMT watchdog"
);
drivers/watchdog/mena21_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* Watchdog driver for the A21 VME CPU Boards
* Watchdog driver for the A21 VME CPU Boards
*
*
* Copyright (C) 2013 MEN Mikro Elektronik Nuernberg GmbH
* Copyright (C) 2013 MEN Mikro Elektronik Nuernberg GmbH
*
*
* 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
*/
*/
#include <linux/module.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/moduleparam.h>
...
...
drivers/watchdog/meson_gxbb_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
/*
/*
* This file is provided under a dual BSD/GPLv2 license. When using or
* redistributing this file, you may do so under either license.
*
* GPL LICENSE SUMMARY
*
* Copyright (c) 2016 BayLibre, SAS.
* Copyright (c) 2016 BayLibre, SAS.
* Author: Neil Armstrong <narmstrong@baylibre.com>
* Author: Neil Armstrong <narmstrong@baylibre.com>
*
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of version 2 of the GNU General Public License as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <http://www.gnu.org/licenses/>.
* The full GNU General Public License is included in this distribution
* in the file called COPYING.
*
* BSD LICENSE
*
* Copyright (c) 2016 BayLibre, SAS.
* Author: Neil Armstrong <narmstrong@baylibre.com>
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
*/
#include <linux/clk.h>
#include <linux/clk.h>
#include <linux/err.h>
#include <linux/err.h>
...
...
drivers/watchdog/mtk_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* Mediatek Watchdog Driver
* Mediatek Watchdog Driver
*
*
...
@@ -5,16 +6,6 @@
...
@@ -5,16 +6,6 @@
*
*
* Matthias Brugger <matthias.bgg@gmail.com>
* Matthias Brugger <matthias.bgg@gmail.com>
*
*
* 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.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* Based on sunxi_wdt.c
* Based on sunxi_wdt.c
*/
*/
...
...
drivers/watchdog/mtx-1_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* Driver for the MTX-1 Watchdog.
* Driver for the MTX-1 Watchdog.
*
*
...
@@ -6,16 +7,6 @@
...
@@ -6,16 +7,6 @@
* http://www.4g-systems.biz
* http://www.4g-systems.biz
*
*
* (C) Copyright 2007 OpenWrt.org, Florian Fainelli <florian@openwrt.org>
* (C) Copyright 2007 OpenWrt.org, Florian Fainelli <florian@openwrt.org>
*
* 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.
*
* Neither Michael Stickel nor 4G Systems admit liability nor provide
* warranty for any of this software. This material is provided
* "AS-IS" and at no charge.
*
* (c) Copyright 2005 4G Systems <info@4g-systems.biz>
* (c) Copyright 2005 4G Systems <info@4g-systems.biz>
*
*
* Release 0.01.
* Release 0.01.
...
...
drivers/watchdog/npcm_wdt.c
0 → 100644
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0
// Copyright (c) 2018 Nuvoton Technology corporation.
// Copyright (c) 2018 IBM Corp.
#include <linux/bitops.h>
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of_irq.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <linux/watchdog.h>
#define NPCM_WTCR 0x1C
#define NPCM_WTCLK (BIT(10) | BIT(11))
/* Clock divider */
#define NPCM_WTE BIT(7)
/* Enable */
#define NPCM_WTIE BIT(6)
/* Enable irq */
#define NPCM_WTIS (BIT(4) | BIT(5))
/* Interval selection */
#define NPCM_WTIF BIT(3)
/* Interrupt flag*/
#define NPCM_WTRF BIT(2)
/* Reset flag */
#define NPCM_WTRE BIT(1)
/* Reset enable */
#define NPCM_WTR BIT(0)
/* Reset counter */
/*
* Watchdog timeouts
*
* 170 msec: WTCLK=01 WTIS=00 VAL= 0x400
* 670 msec: WTCLK=01 WTIS=01 VAL= 0x410
* 1360 msec: WTCLK=10 WTIS=00 VAL= 0x800
* 2700 msec: WTCLK=01 WTIS=10 VAL= 0x420
* 5360 msec: WTCLK=10 WTIS=01 VAL= 0x810
* 10700 msec: WTCLK=01 WTIS=11 VAL= 0x430
* 21600 msec: WTCLK=10 WTIS=10 VAL= 0x820
* 43000 msec: WTCLK=11 WTIS=00 VAL= 0xC00
* 85600 msec: WTCLK=10 WTIS=11 VAL= 0x830
* 172000 msec: WTCLK=11 WTIS=01 VAL= 0xC10
* 687000 msec: WTCLK=11 WTIS=10 VAL= 0xC20
* 2750000 msec: WTCLK=11 WTIS=11 VAL= 0xC30
*/
struct
npcm_wdt
{
struct
watchdog_device
wdd
;
void
__iomem
*
reg
;
};
static
inline
struct
npcm_wdt
*
to_npcm_wdt
(
struct
watchdog_device
*
wdd
)
{
return
container_of
(
wdd
,
struct
npcm_wdt
,
wdd
);
}
static
int
npcm_wdt_ping
(
struct
watchdog_device
*
wdd
)
{
struct
npcm_wdt
*
wdt
=
to_npcm_wdt
(
wdd
);
u32
val
;
val
=
readl
(
wdt
->
reg
);
writel
(
val
|
NPCM_WTR
,
wdt
->
reg
);
return
0
;
}
static
int
npcm_wdt_start
(
struct
watchdog_device
*
wdd
)
{
struct
npcm_wdt
*
wdt
=
to_npcm_wdt
(
wdd
);
u32
val
;
if
(
wdd
->
timeout
<
2
)
val
=
0x800
;
else
if
(
wdd
->
timeout
<
3
)
val
=
0x420
;
else
if
(
wdd
->
timeout
<
6
)
val
=
0x810
;
else
if
(
wdd
->
timeout
<
11
)
val
=
0x430
;
else
if
(
wdd
->
timeout
<
22
)
val
=
0x820
;
else
if
(
wdd
->
timeout
<
44
)
val
=
0xC00
;
else
if
(
wdd
->
timeout
<
87
)
val
=
0x830
;
else
if
(
wdd
->
timeout
<
173
)
val
=
0xC10
;
else
if
(
wdd
->
timeout
<
688
)
val
=
0xC20
;
else
val
=
0xC30
;
val
|=
NPCM_WTRE
|
NPCM_WTE
|
NPCM_WTR
|
NPCM_WTIE
;
writel
(
val
,
wdt
->
reg
);
return
0
;
}
static
int
npcm_wdt_stop
(
struct
watchdog_device
*
wdd
)
{
struct
npcm_wdt
*
wdt
=
to_npcm_wdt
(
wdd
);
writel
(
0
,
wdt
->
reg
);
return
0
;
}
static
int
npcm_wdt_set_timeout
(
struct
watchdog_device
*
wdd
,
unsigned
int
timeout
)
{
if
(
timeout
<
2
)
wdd
->
timeout
=
1
;
else
if
(
timeout
<
3
)
wdd
->
timeout
=
2
;
else
if
(
timeout
<
6
)
wdd
->
timeout
=
5
;
else
if
(
timeout
<
11
)
wdd
->
timeout
=
10
;
else
if
(
timeout
<
22
)
wdd
->
timeout
=
21
;
else
if
(
timeout
<
44
)
wdd
->
timeout
=
43
;
else
if
(
timeout
<
87
)
wdd
->
timeout
=
86
;
else
if
(
timeout
<
173
)
wdd
->
timeout
=
172
;
else
if
(
timeout
<
688
)
wdd
->
timeout
=
687
;
else
wdd
->
timeout
=
2750
;
if
(
watchdog_active
(
wdd
))
npcm_wdt_start
(
wdd
);
return
0
;
}
static
irqreturn_t
npcm_wdt_interrupt
(
int
irq
,
void
*
data
)
{
struct
npcm_wdt
*
wdt
=
data
;
watchdog_notify_pretimeout
(
&
wdt
->
wdd
);
return
IRQ_HANDLED
;
}
static
int
npcm_wdt_restart
(
struct
watchdog_device
*
wdd
,
unsigned
long
action
,
void
*
data
)
{
struct
npcm_wdt
*
wdt
=
to_npcm_wdt
(
wdd
);
writel
(
NPCM_WTR
|
NPCM_WTRE
|
NPCM_WTE
,
wdt
->
reg
);
udelay
(
1000
);
return
0
;
}
static
bool
npcm_is_running
(
struct
watchdog_device
*
wdd
)
{
struct
npcm_wdt
*
wdt
=
to_npcm_wdt
(
wdd
);
return
readl
(
wdt
->
reg
)
&
NPCM_WTE
;
}
static
const
struct
watchdog_info
npcm_wdt_info
=
{
.
identity
=
KBUILD_MODNAME
,
.
options
=
WDIOF_SETTIMEOUT
|
WDIOF_KEEPALIVEPING
|
WDIOF_MAGICCLOSE
,
};
static
const
struct
watchdog_ops
npcm_wdt_ops
=
{
.
owner
=
THIS_MODULE
,
.
start
=
npcm_wdt_start
,
.
stop
=
npcm_wdt_stop
,
.
ping
=
npcm_wdt_ping
,
.
set_timeout
=
npcm_wdt_set_timeout
,
.
restart
=
npcm_wdt_restart
,
};
static
int
npcm_wdt_probe
(
struct
platform_device
*
pdev
)
{
struct
device
*
dev
=
&
pdev
->
dev
;
struct
npcm_wdt
*
wdt
;
struct
resource
*
res
;
int
irq
;
int
ret
;
wdt
=
devm_kzalloc
(
&
pdev
->
dev
,
sizeof
(
*
wdt
),
GFP_KERNEL
);
if
(
!
wdt
)
return
-
ENOMEM
;
res
=
platform_get_resource
(
pdev
,
IORESOURCE_MEM
,
0
);
wdt
->
reg
=
devm_ioremap_resource
(
dev
,
res
);
if
(
IS_ERR
(
wdt
->
reg
))
return
PTR_ERR
(
wdt
->
reg
);
irq
=
platform_get_irq
(
pdev
,
0
);
if
(
irq
<
0
)
return
irq
;
wdt
->
wdd
.
info
=
&
npcm_wdt_info
;
wdt
->
wdd
.
ops
=
&
npcm_wdt_ops
;
wdt
->
wdd
.
min_timeout
=
1
;
wdt
->
wdd
.
max_timeout
=
2750
;
wdt
->
wdd
.
parent
=
dev
;
wdt
->
wdd
.
timeout
=
86
;
watchdog_init_timeout
(
&
wdt
->
wdd
,
0
,
dev
);
/* Ensure timeout is able to be represented by the hardware */
npcm_wdt_set_timeout
(
&
wdt
->
wdd
,
wdt
->
wdd
.
timeout
);
if
(
npcm_is_running
(
&
wdt
->
wdd
))
{
/* Restart with the default or device-tree specified timeout */
npcm_wdt_start
(
&
wdt
->
wdd
);
set_bit
(
WDOG_HW_RUNNING
,
&
wdt
->
wdd
.
status
);
}
ret
=
devm_request_irq
(
dev
,
irq
,
npcm_wdt_interrupt
,
0
,
"watchdog"
,
wdt
);
if
(
ret
)
return
ret
;
ret
=
devm_watchdog_register_device
(
dev
,
&
wdt
->
wdd
);
if
(
ret
)
{
dev_err
(
dev
,
"failed to register watchdog
\n
"
);
return
ret
;
}
dev_info
(
dev
,
"NPCM watchdog driver enabled
\n
"
);
return
0
;
}
#ifdef CONFIG_OF
static
const
struct
of_device_id
npcm_wdt_match
[]
=
{
{.
compatible
=
"nuvoton,npcm750-wdt"
},
{},
};
MODULE_DEVICE_TABLE
(
of
,
npcm_wdt_match
);
#endif
static
struct
platform_driver
npcm_wdt_driver
=
{
.
probe
=
npcm_wdt_probe
,
.
driver
=
{
.
name
=
"npcm-wdt"
,
.
of_match_table
=
of_match_ptr
(
npcm_wdt_match
),
},
};
module_platform_driver
(
npcm_wdt_driver
);
MODULE_AUTHOR
(
"Joel Stanley"
);
MODULE_DESCRIPTION
(
"Watchdog driver for NPCM"
);
MODULE_LICENSE
(
"GPL v2"
);
drivers/watchdog/of_xilinx_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* Watchdog Device Driver for Xilinx axi/xps_timebase_wdt
* Watchdog Device Driver for Xilinx axi/xps_timebase_wdt
*
*
* (C) Copyright 2013 - 2014 Xilinx, Inc.
* (C) Copyright 2013 - 2014 Xilinx, Inc.
* (C) Copyright 2011 (Alejandro Cabrera <aldaya@gmail.com>)
* (C) Copyright 2011 (Alejandro Cabrera <aldaya@gmail.com>)
*
* 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/clk.h>
#include <linux/clk.h>
...
@@ -323,4 +319,4 @@ module_platform_driver(xwdt_driver);
...
@@ -323,4 +319,4 @@ module_platform_driver(xwdt_driver);
MODULE_AUTHOR
(
"Alejandro Cabrera <aldaya@gmail.com>"
);
MODULE_AUTHOR
(
"Alejandro Cabrera <aldaya@gmail.com>"
);
MODULE_DESCRIPTION
(
"Xilinx Watchdog driver"
);
MODULE_DESCRIPTION
(
"Xilinx Watchdog driver"
);
MODULE_LICENSE
(
"GPL
v2
"
);
MODULE_LICENSE
(
"GPL"
);
drivers/watchdog/st_lpc_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* ST's LPC Watchdog
* ST's LPC Watchdog
*
*
...
@@ -5,11 +6,6 @@
...
@@ -5,11 +6,6 @@
*
*
* Author: David Paris <david.paris@st.com> for STMicroelectronics
* Author: David Paris <david.paris@st.com> for STMicroelectronics
* Lee Jones <lee.jones@linaro.org> for STMicroelectronics
* Lee Jones <lee.jones@linaro.org> for STMicroelectronics
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public Licence
* as published by the Free Software Foundation; either version
* 2 of the Licence, or (at your option) any later version.
*/
*/
#include <linux/clk.h>
#include <linux/clk.h>
...
...
drivers/watchdog/tangox_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* Copyright (C) 2015 Mans Rullgard <mans@mansr.com>
* Copyright (C) 2015 Mans Rullgard <mans@mansr.com>
* SMP86xx/SMP87xx Watchdog driver
* SMP86xx/SMP87xx Watchdog driver
*
* 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/bitops.h>
#include <linux/bitops.h>
...
...
drivers/watchdog/tegra_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0
/*
/*
* Copyright (c) 2014, NVIDIA CORPORATION. All rights reserved.
* Copyright (c) 2014, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
*
* This program is distributed in the hope it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*/
*/
#include <linux/kernel.h>
#include <linux/kernel.h>
...
...
drivers/watchdog/uniphier_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0
/*
/*
* Watchdog driver for the UniPhier watchdog timer
* Watchdog driver for the UniPhier watchdog timer
*
*
* (c) Copyright 2014 Panasonic Corporation
* (c) Copyright 2014 Panasonic Corporation
* (c) Copyright 2016 Socionext Inc.
* (c) Copyright 2016 Socionext Inc.
* All rights reserved.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
*/
#include <linux/bitops.h>
#include <linux/bitops.h>
...
...
drivers/watchdog/wm831x_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* Watchdog driver for the wm831x PMICs
* Watchdog driver for the wm831x PMICs
*
*
* Copyright (C) 2009 Wolfson Microelectronics
* Copyright (C) 2009 Wolfson Microelectronics
*
* 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
*/
*/
#include <linux/module.h>
#include <linux/module.h>
...
...
drivers/watchdog/wm8350_wdt.c
浏览文件 @
ab17ed70
// SPDX-License-Identifier: GPL-2.0+
/*
/*
* Watchdog driver for the wm8350
* Watchdog driver for the wm8350
*
*
* Copyright (C) 2007, 2008 Wolfson Microelectronics <linux@wolfsonmicro.com>
* Copyright (C) 2007, 2008 Wolfson Microelectronics <linux@wolfsonmicro.com>
*
* 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
*/
*/
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录