2010-12-14 15:09:55

by Hans Ulli Kroll

[permalink] [raw]
Subject: [PATCH 0/2] ARM: Gemini: add RTC support for Gemini SoC

This patch adds the driver for the rtc chip on the Gemini SoC

I divided this patch into two parts.
One for the core rtc-driver in /drivers/rtc
and one for the needed platform bindings in /arch/arm/mach-gemini

MAINTAINERS | 1 +
arch/arm/mach-gemini/board-nas4220b.c | 1 +
arch/arm/mach-gemini/board-rut1xx.c | 1 +
arch/arm/mach-gemini/board-wbd111.c | 1 +
arch/arm/mach-gemini/board-wbd222.c | 1 +
arch/arm/mach-gemini/common.h | 1 +
arch/arm/mach-gemini/devices.c | 26 ++++
drivers/rtc/Kconfig | 9 ++
drivers/rtc/Makefile | 1 +
drivers/rtc/rtc-gemini.c | 206 +++++++++++++++++++++++++++++++++
10 files changed, 248 insertions(+), 0 deletions(-)


2010-12-14 15:10:05

by Hans Ulli Kroll

[permalink] [raw]
Subject: [PATCH 1/2] RTC: Add core rtc support for Gemini Soc devices

driver for the rtc device
on Cortina Systems CS3516 or StormlinkSemi SL3516 aka Gemini SoC

Signed-off-by: Hans Ulli Kroll <[email protected]>
---
MAINTAINERS | 1 +
drivers/rtc/Kconfig | 9 ++
drivers/rtc/Makefile | 1 +
drivers/rtc/rtc-gemini.c | 206 ++++++++++++++++++++++++++++++++++++++++++++++
4 files changed, 217 insertions(+), 0 deletions(-)
create mode 100644 drivers/rtc/rtc-gemini.c

diff --git a/MAINTAINERS b/MAINTAINERS
index 0094224..1987d46 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -619,6 +619,7 @@ L: [email protected] (moderated for non-subscribers)
T: git git://git.berlios.de/gemini-board
S: Maintained
F: arch/arm/mach-gemini/
+F: drivers/rtc/rtc-gemini.c

ARM/EBSA110 MACHINE SUPPORT
M: Russell King <[email protected]>
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
index 2883428..da14253 100644
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -839,6 +839,15 @@ config RTC_DRV_BFIN
This driver can also be built as a module. If so, the module
will be called rtc-bfin.

+config RTC_DRV_GEMINI
+ tristate "Gemini SoC RTC"
+ help
+ If you say Y here you will get support for the
+ RTC found on Gemini SoC's.
+
+ This driver can also be built as a module. If so, the module
+ will be called rtc-gemini.
+
config RTC_DRV_RS5C313
tristate "Ricoh RS5C313"
depends on SH_LANDISK
diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile
index 4c2832d..779e42c 100644
--- a/drivers/rtc/Makefile
+++ b/drivers/rtc/Makefile
@@ -46,6 +46,7 @@ obj-$(CONFIG_RTC_DRV_DS3234) += rtc-ds3234.o
obj-$(CONFIG_RTC_DRV_EFI) += rtc-efi.o
obj-$(CONFIG_RTC_DRV_EP93XX) += rtc-ep93xx.o
obj-$(CONFIG_RTC_DRV_FM3130) += rtc-fm3130.o
+obj-$(CONFIG_RTC_DRV_GEMINI) += rtc-gemini.o
obj-$(CONFIG_RTC_DRV_GENERIC) += rtc-generic.o
obj-$(CONFIG_RTC_DRV_IMXDI) += rtc-imxdi.o
obj-$(CONFIG_RTC_DRV_ISL1208) += rtc-isl1208.o
diff --git a/drivers/rtc/rtc-gemini.c b/drivers/rtc/rtc-gemini.c
new file mode 100644
index 0000000..111bb67
--- /dev/null
+++ b/drivers/rtc/rtc-gemini.c
@@ -0,0 +1,206 @@
+/*
+ * Gemini OnChip RTC
+ *
+ * Copyright (C) 2009 Janos Laube <[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 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 Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Original code for older kernel 2.6.15 are form Stormlinksemi
+ * first update from Janos Laube for > 2.6.29 kernels
+ *
+ * checkpatch fixes and usage off rtc-lib code
+ * Hans Ulli Kroll <[email protected]>
+ */
+
+#include <linux/rtc.h>
+#include <linux/io.h>
+#include <linux/slab.h>
+#include <linux/platform_device.h>
+
+#include <mach/hardware.h>
+
+#define DRV_NAME "rtc-gemini"
+#define DRV_VERSION "0.2"
+
+struct gemini_rtc {
+ struct rtc_device *rtc_dev;
+ void __iomem *rtc_base;
+ int rtc_irq;
+};
+
+enum gemini_rtc_offsets {
+ GEMINI_RTC_SECOND = 0x00,
+ GEMINI_RTC_MINUTE = 0x04,
+ GEMINI_RTC_HOUR = 0x08,
+ GEMINI_RTC_DAYS = 0x0C,
+ GEMINI_RTC_ALARM_SECOND = 0x10,
+ GEMINI_RTC_ALARM_MINUTE = 0x14,
+ GEMINI_RTC_ALARM_HOUR = 0x18,
+ GEMINI_RTC_RECORD = 0x1C,
+ GEMINI_RTC_CR = 0x20
+};
+
+static irqreturn_t gemini_rtc_interrupt(int irq, void *dev)
+{
+ return IRQ_HANDLED;
+}
+
+/*
+ * Looks like the RTC in the Gemini SoC is (totaly) broken
+ * We can't read/write directly the time from RTC registers.
+ * We must do some "offset" calculation to get the real time
+ *
+ * This FIX works pretty fine and Stormlinksemi aka Cortina-Networks does
+ * the same thing, without the rtc-lib.c calls.
+ */
+
+static int gemini_rtc_read_time(struct device *dev, struct rtc_time *tm)
+{
+ struct gemini_rtc *rtc = dev_get_drvdata(dev);
+
+ unsigned int days, hour, min, sec;
+ unsigned long offset, time;
+
+ sec = ioread32(rtc->rtc_base + GEMINI_RTC_SECOND);
+ min = ioread32(rtc->rtc_base + GEMINI_RTC_MINUTE);
+ hour = ioread32(rtc->rtc_base + GEMINI_RTC_HOUR);
+ days = ioread32(rtc->rtc_base + GEMINI_RTC_DAYS);
+ offset = ioread32(rtc->rtc_base + GEMINI_RTC_RECORD);
+
+ time = offset + days * 86400 + hour * 3600 + min * 60 + sec;
+
+ rtc_time_to_tm(time, tm);
+
+ return 0;
+}
+
+static int gemini_rtc_set_time(struct device *dev, struct rtc_time *tm)
+{
+ struct gemini_rtc *rtc = dev_get_drvdata(dev);
+ unsigned int sec, min, hour, day;
+ unsigned long offset, time;
+
+ if (tm->tm_year >= 2148) /* EPOCH Year + 179 */
+ return -EINVAL;
+
+ rtc_tm_to_time(tm , &time);
+
+ sec = ioread32(rtc->rtc_base + GEMINI_RTC_SECOND);
+ min = ioread32(rtc->rtc_base + GEMINI_RTC_MINUTE);
+ hour = ioread32(rtc->rtc_base + GEMINI_RTC_HOUR);
+ day = ioread32(rtc->rtc_base + GEMINI_RTC_DAYS);
+
+ offset = time - (day*86400 + hour*3600 + min*60 + sec);
+
+ iowrite32(offset, rtc->rtc_base + GEMINI_RTC_RECORD);
+ iowrite32(0x01, rtc->rtc_base + GEMINI_RTC_CR);
+
+ return 0;
+}
+
+static struct rtc_class_ops gemini_rtc_ops = {
+ .read_time = gemini_rtc_read_time,
+ .set_time = gemini_rtc_set_time,
+};
+
+static int __devinit gemini_rtc_probe(struct platform_device *pdev)
+{
+ struct gemini_rtc *rtc;
+ struct device *dev = &pdev->dev;
+ struct resource *res;
+ int ret;
+
+ rtc = kzalloc(sizeof(*rtc), GFP_KERNEL);
+ if (unlikely(!rtc))
+ return -ENOMEM;
+ platform_set_drvdata(pdev, rtc);
+
+ res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
+ if (!res) {
+ ret = -ENODEV;
+ goto err_mem;
+ }
+ rtc->rtc_irq = res->start;
+
+ res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+ if (!res) {
+ ret = -ENODEV;
+ goto err_mem;
+ }
+ rtc->rtc_base = devm_ioremap(&pdev->dev, res->start,
+ res->end - res->start + 1);
+
+ ret = request_irq(rtc->rtc_irq, gemini_rtc_interrupt,
+ IRQF_SHARED, pdev->name, dev);
+ if (unlikely(ret))
+ goto err_mem;
+
+ rtc->rtc_dev = rtc_device_register(pdev->name, dev,
+ &gemini_rtc_ops, THIS_MODULE);
+ if (unlikely(IS_ERR(rtc->rtc_dev))) {
+ ret = PTR_ERR(rtc->rtc_dev);
+ goto err_irq;
+ }
+ return 0;
+
+err_irq:
+ free_irq(rtc->rtc_irq, dev);
+
+err_mem:
+ kfree(rtc);
+ return ret;
+}
+
+static int __devexit gemini_rtc_remove(struct platform_device *pdev)
+{
+ struct gemini_rtc *rtc = platform_get_drvdata(pdev);
+ struct device *dev = &pdev->dev;
+
+ free_irq(rtc->rtc_irq, dev);
+ rtc_device_unregister(rtc->rtc_dev);
+ platform_set_drvdata(pdev, NULL);
+ kfree(rtc);
+
+ return 0;
+}
+
+static struct platform_driver gemini_rtc_driver = {
+ .driver = {
+ .name = "rtc-gemini",
+ .owner = THIS_MODULE,
+ },
+ .probe = gemini_rtc_probe,
+ .remove = __devexit_p(gemini_rtc_remove),
+};
+
+static int __init gemini_rtc_init(void)
+{
+ return platform_driver_register(&gemini_rtc_driver);
+}
+
+static void __exit gemini_rtc_exit(void)
+{
+ platform_driver_unregister(&gemini_rtc_driver);
+}
+
+module_init(gemini_rtc_init);
+module_exit(gemini_rtc_exit);
+
+MODULE_AUTHOR("Hans Ulli Kroll <[email protected]>");
+MODULE_DESCRIPTION("RTC driver for Gemini SoC");
+MODULE_LICENSE("GPL");
+MODULE_VERSION(DRV_VERSION);
+MODULE_ALIAS("platform:" DRV_NAME);
+
--
1.7.3.2

2010-12-14 15:10:12

by Hans Ulli Kroll

[permalink] [raw]
Subject: [PATCH 2/2] ARM: Gemini: add platform support for Gemini RTC

adds rtc support for all Gemini SoC boards
nas4220b, rut1xx, wbd111, wbd222

Signed-off-by: Hans Ulli Kroll <[email protected]>
---
arch/arm/mach-gemini/board-nas4220b.c | 1 +
arch/arm/mach-gemini/board-rut1xx.c | 1 +
arch/arm/mach-gemini/board-wbd111.c | 1 +
arch/arm/mach-gemini/board-wbd222.c | 1 +
arch/arm/mach-gemini/common.h | 1 +
arch/arm/mach-gemini/devices.c | 26 ++++++++++++++++++++++++++
6 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-gemini/board-nas4220b.c b/arch/arm/mach-gemini/board-nas4220b.c
index 2ba096d..0cf7a07 100644
--- a/arch/arm/mach-gemini/board-nas4220b.c
+++ b/arch/arm/mach-gemini/board-nas4220b.c
@@ -98,6 +98,7 @@ static void __init ib4220b_init(void)
platform_register_pflash(SZ_16M, NULL, 0);
platform_device_register(&ib4220b_led_device);
platform_device_register(&ib4220b_key_device);
+ platform_register_rtc();
}

MACHINE_START(NAS4220B, "Raidsonic NAS IB-4220-B")
diff --git a/arch/arm/mach-gemini/board-rut1xx.c b/arch/arm/mach-gemini/board-rut1xx.c
index a9a0d8b..4fa09af 100644
--- a/arch/arm/mach-gemini/board-rut1xx.c
+++ b/arch/arm/mach-gemini/board-rut1xx.c
@@ -82,6 +82,7 @@ static void __init rut1xx_init(void)
platform_register_pflash(SZ_8M, NULL, 0);
platform_device_register(&rut1xx_leds);
platform_device_register(&rut1xx_keys_device);
+ platform_register_rtc();
}

MACHINE_START(RUT100, "Teltonika RUT100")
diff --git a/arch/arm/mach-gemini/board-wbd111.c b/arch/arm/mach-gemini/board-wbd111.c
index 8b88d50..af7b68a 100644
--- a/arch/arm/mach-gemini/board-wbd111.c
+++ b/arch/arm/mach-gemini/board-wbd111.c
@@ -130,6 +130,7 @@ static void __init wbd111_init(void)
wbd111_num_partitions);
platform_device_register(&wbd111_leds_device);
platform_device_register(&wbd111_keys_device);
+ platform_register_rtc();
}

MACHINE_START(WBD111, "Wiliboard WBD-111")
diff --git a/arch/arm/mach-gemini/board-wbd222.c b/arch/arm/mach-gemini/board-wbd222.c
index 1eebcec..99e5bbe 100644
--- a/arch/arm/mach-gemini/board-wbd222.c
+++ b/arch/arm/mach-gemini/board-wbd222.c
@@ -130,6 +130,7 @@ static void __init wbd222_init(void)
wbd222_num_partitions);
platform_device_register(&wbd222_leds_device);
platform_device_register(&wbd222_keys_device);
+ platform_register_rtc();
}

MACHINE_START(WBD222, "Wiliboard WBD-222")
diff --git a/arch/arm/mach-gemini/common.h b/arch/arm/mach-gemini/common.h
index 9392834..7670c39 100644
--- a/arch/arm/mach-gemini/common.h
+++ b/arch/arm/mach-gemini/common.h
@@ -18,6 +18,7 @@ extern void gemini_map_io(void);
extern void gemini_init_irq(void);
extern void gemini_timer_init(void);
extern void gemini_gpio_init(void);
+extern void platform_register_rtc(void);

/* Common platform devices registration functions */
extern int platform_register_uart(void);
diff --git a/arch/arm/mach-gemini/devices.c b/arch/arm/mach-gemini/devices.c
index 6b52525..5cff298 100644
--- a/arch/arm/mach-gemini/devices.c
+++ b/arch/arm/mach-gemini/devices.c
@@ -90,3 +90,29 @@ int platform_register_pflash(unsigned int size, struct mtd_partition *parts,

return platform_device_register(&pflash_device);
}
+
+static struct resource gemini_rtc_resources[] = {
+ [0] = {
+ .start = GEMINI_RTC_BASE,
+ .end = GEMINI_RTC_BASE + 0x24,
+ .flags = IORESOURCE_MEM,
+ },
+ [1] = {
+ .start = IRQ_RTC,
+ .end = IRQ_RTC,
+ .flags = IORESOURCE_IRQ,
+ },
+};
+
+static struct platform_device gemini_rtc_device = {
+ .name = "rtc-gemini",
+ .id = 0,
+ .num_resources = ARRAY_SIZE(gemini_rtc_resources),
+ .resource = gemini_rtc_resources,
+};
+
+int __init platform_register_rtc(void)
+{
+ return platform_device_register(&gemini_rtc_device);
+}
+
--
1.7.3.2

2015-05-01 23:42:20

by Alexandre Belloni

[permalink] [raw]
Subject: Re: [1/2] RTC: Add core rtc support for Gemini Soc devices

Hi,

On 14/12/2010 at 16:08:26 +0100, Hans Ulli Kroll wrote :
> driver for the rtc device
> on Cortina Systems CS3516 or StormlinkSemi SL3516 aka Gemini SoC
>
> Signed-off-by: Hans Ulli Kroll <[email protected]>

This driver has never been merged and the platform doesn't seem to be
active anymore. Is there still any interest in getting this driver
mainlined?

Only tree wide cleanups happened in mach-gemini since end of 2010, the
listed git repository (git://git.berlios.de/gemini-board) was on berliOS
(closed since 2011) and the sourceforge mirror seems empty. Is there
still interest in keeping that platform in the mainline?

> ---
> MAINTAINERS | 1 +
> drivers/rtc/Kconfig | 9 ++
> drivers/rtc/Makefile | 1 +
> drivers/rtc/rtc-gemini.c | 206 ++++++++++++++++++++++++++++++++++++++++++++++
> 4 files changed, 217 insertions(+), 0 deletions(-)
> create mode 100644 drivers/rtc/rtc-gemini.c
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 0094224..1987d46 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -619,6 +619,7 @@ L: [email protected] (moderated for non-subscribers)
> T: git git://git.berlios.de/gemini-board
> S: Maintained
> F: arch/arm/mach-gemini/
> +F: drivers/rtc/rtc-gemini.c
>
> ARM/EBSA110 MACHINE SUPPORT
> M: Russell King <[email protected]>
> diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
> index 2883428..da14253 100644
> --- a/drivers/rtc/Kconfig
> +++ b/drivers/rtc/Kconfig
> @@ -839,6 +839,15 @@ config RTC_DRV_BFIN
> This driver can also be built as a module. If so, the module
> will be called rtc-bfin.
>
> +config RTC_DRV_GEMINI
> + tristate "Gemini SoC RTC"
> + help
> + If you say Y here you will get support for the
> + RTC found on Gemini SoC's.
> +
> + This driver can also be built as a module. If so, the module
> + will be called rtc-gemini.
> +
> config RTC_DRV_RS5C313
> tristate "Ricoh RS5C313"
> depends on SH_LANDISK
> diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile
> index 4c2832d..779e42c 100644
> --- a/drivers/rtc/Makefile
> +++ b/drivers/rtc/Makefile
> @@ -46,6 +46,7 @@ obj-$(CONFIG_RTC_DRV_DS3234) += rtc-ds3234.o
> obj-$(CONFIG_RTC_DRV_EFI) += rtc-efi.o
> obj-$(CONFIG_RTC_DRV_EP93XX) += rtc-ep93xx.o
> obj-$(CONFIG_RTC_DRV_FM3130) += rtc-fm3130.o
> +obj-$(CONFIG_RTC_DRV_GEMINI) += rtc-gemini.o
> obj-$(CONFIG_RTC_DRV_GENERIC) += rtc-generic.o
> obj-$(CONFIG_RTC_DRV_IMXDI) += rtc-imxdi.o
> obj-$(CONFIG_RTC_DRV_ISL1208) += rtc-isl1208.o
> diff --git a/drivers/rtc/rtc-gemini.c b/drivers/rtc/rtc-gemini.c
> new file mode 100644
> index 0000000..111bb67
> --- /dev/null
> +++ b/drivers/rtc/rtc-gemini.c
> @@ -0,0 +1,206 @@
> +/*
> + * Gemini OnChip RTC
> + *
> + * Copyright (C) 2009 Janos Laube <[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 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 Street, Fifth Floor, Boston, MA 02110-1301 USA.
> + *
> + * Original code for older kernel 2.6.15 are form Stormlinksemi
> + * first update from Janos Laube for > 2.6.29 kernels
> + *
> + * checkpatch fixes and usage off rtc-lib code
> + * Hans Ulli Kroll <[email protected]>
> + */
> +
> +#include <linux/rtc.h>
> +#include <linux/io.h>
> +#include <linux/slab.h>
> +#include <linux/platform_device.h>
> +
> +#include <mach/hardware.h>
> +
> +#define DRV_NAME "rtc-gemini"
> +#define DRV_VERSION "0.2"
> +
> +struct gemini_rtc {
> + struct rtc_device *rtc_dev;
> + void __iomem *rtc_base;
> + int rtc_irq;
> +};
> +
> +enum gemini_rtc_offsets {
> + GEMINI_RTC_SECOND = 0x00,
> + GEMINI_RTC_MINUTE = 0x04,
> + GEMINI_RTC_HOUR = 0x08,
> + GEMINI_RTC_DAYS = 0x0C,
> + GEMINI_RTC_ALARM_SECOND = 0x10,
> + GEMINI_RTC_ALARM_MINUTE = 0x14,
> + GEMINI_RTC_ALARM_HOUR = 0x18,
> + GEMINI_RTC_RECORD = 0x1C,
> + GEMINI_RTC_CR = 0x20
> +};
> +
> +static irqreturn_t gemini_rtc_interrupt(int irq, void *dev)
> +{
> + return IRQ_HANDLED;
> +}
> +
> +/*
> + * Looks like the RTC in the Gemini SoC is (totaly) broken
> + * We can't read/write directly the time from RTC registers.
> + * We must do some "offset" calculation to get the real time
> + *
> + * This FIX works pretty fine and Stormlinksemi aka Cortina-Networks does
> + * the same thing, without the rtc-lib.c calls.
> + */
> +
> +static int gemini_rtc_read_time(struct device *dev, struct rtc_time *tm)
> +{
> + struct gemini_rtc *rtc = dev_get_drvdata(dev);
> +
> + unsigned int days, hour, min, sec;
> + unsigned long offset, time;
> +
> + sec = ioread32(rtc->rtc_base + GEMINI_RTC_SECOND);
> + min = ioread32(rtc->rtc_base + GEMINI_RTC_MINUTE);
> + hour = ioread32(rtc->rtc_base + GEMINI_RTC_HOUR);
> + days = ioread32(rtc->rtc_base + GEMINI_RTC_DAYS);
> + offset = ioread32(rtc->rtc_base + GEMINI_RTC_RECORD);
> +
> + time = offset + days * 86400 + hour * 3600 + min * 60 + sec;
> +
> + rtc_time_to_tm(time, tm);
> +
> + return 0;
> +}
> +
> +static int gemini_rtc_set_time(struct device *dev, struct rtc_time *tm)
> +{
> + struct gemini_rtc *rtc = dev_get_drvdata(dev);
> + unsigned int sec, min, hour, day;
> + unsigned long offset, time;
> +
> + if (tm->tm_year >= 2148) /* EPOCH Year + 179 */
> + return -EINVAL;
> +
> + rtc_tm_to_time(tm , &time);
> +
> + sec = ioread32(rtc->rtc_base + GEMINI_RTC_SECOND);
> + min = ioread32(rtc->rtc_base + GEMINI_RTC_MINUTE);
> + hour = ioread32(rtc->rtc_base + GEMINI_RTC_HOUR);
> + day = ioread32(rtc->rtc_base + GEMINI_RTC_DAYS);
> +
> + offset = time - (day*86400 + hour*3600 + min*60 + sec);
> +
> + iowrite32(offset, rtc->rtc_base + GEMINI_RTC_RECORD);
> + iowrite32(0x01, rtc->rtc_base + GEMINI_RTC_CR);
> +
> + return 0;
> +}
> +
> +static struct rtc_class_ops gemini_rtc_ops = {
> + .read_time = gemini_rtc_read_time,
> + .set_time = gemini_rtc_set_time,
> +};
> +
> +static int __devinit gemini_rtc_probe(struct platform_device *pdev)
> +{
> + struct gemini_rtc *rtc;
> + struct device *dev = &pdev->dev;
> + struct resource *res;
> + int ret;
> +
> + rtc = kzalloc(sizeof(*rtc), GFP_KERNEL);
> + if (unlikely(!rtc))
> + return -ENOMEM;
> + platform_set_drvdata(pdev, rtc);
> +
> + res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
> + if (!res) {
> + ret = -ENODEV;
> + goto err_mem;
> + }
> + rtc->rtc_irq = res->start;
> +
> + res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> + if (!res) {
> + ret = -ENODEV;
> + goto err_mem;
> + }
> + rtc->rtc_base = devm_ioremap(&pdev->dev, res->start,
> + res->end - res->start + 1);
> +
> + ret = request_irq(rtc->rtc_irq, gemini_rtc_interrupt,
> + IRQF_SHARED, pdev->name, dev);
> + if (unlikely(ret))
> + goto err_mem;
> +
> + rtc->rtc_dev = rtc_device_register(pdev->name, dev,
> + &gemini_rtc_ops, THIS_MODULE);
> + if (unlikely(IS_ERR(rtc->rtc_dev))) {
> + ret = PTR_ERR(rtc->rtc_dev);
> + goto err_irq;
> + }
> + return 0;
> +
> +err_irq:
> + free_irq(rtc->rtc_irq, dev);
> +
> +err_mem:
> + kfree(rtc);
> + return ret;
> +}
> +
> +static int __devexit gemini_rtc_remove(struct platform_device *pdev)
> +{
> + struct gemini_rtc *rtc = platform_get_drvdata(pdev);
> + struct device *dev = &pdev->dev;
> +
> + free_irq(rtc->rtc_irq, dev);
> + rtc_device_unregister(rtc->rtc_dev);
> + platform_set_drvdata(pdev, NULL);
> + kfree(rtc);
> +
> + return 0;
> +}
> +
> +static struct platform_driver gemini_rtc_driver = {
> + .driver = {
> + .name = "rtc-gemini",
> + .owner = THIS_MODULE,
> + },
> + .probe = gemini_rtc_probe,
> + .remove = __devexit_p(gemini_rtc_remove),
> +};
> +
> +static int __init gemini_rtc_init(void)
> +{
> + return platform_driver_register(&gemini_rtc_driver);
> +}
> +
> +static void __exit gemini_rtc_exit(void)
> +{
> + platform_driver_unregister(&gemini_rtc_driver);
> +}
> +
> +module_init(gemini_rtc_init);
> +module_exit(gemini_rtc_exit);
> +
> +MODULE_AUTHOR("Hans Ulli Kroll <[email protected]>");
> +MODULE_DESCRIPTION("RTC driver for Gemini SoC");
> +MODULE_LICENSE("GPL");
> +MODULE_VERSION(DRV_VERSION);
> +MODULE_ALIAS("platform:" DRV_NAME);
> +

--
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

2015-05-06 09:40:44

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [1/2] RTC: Add core rtc support for Gemini Soc devices

On Saturday 02 May 2015 01:42:14 Alexandre Belloni wrote:
> Hi,
>
> On 14/12/2010 at 16:08:26 +0100, Hans Ulli Kroll wrote :
> > driver for the rtc device
> > on Cortina Systems CS3516 or StormlinkSemi SL3516 aka Gemini SoC
> >
> > Signed-off-by: Hans Ulli Kroll <[email protected]>
>
> This driver has never been merged and the platform doesn't seem to be
> active anymore. Is there still any interest in getting this driver
> mainlined?
>
> Only tree wide cleanups happened in mach-gemini since end of 2010, the
> listed git repository (git://git.berlios.de/gemini-board) was on berliOS
> (closed since 2011) and the sourceforge mirror seems empty. Is there
> still interest in keeping that platform in the mainline?

As far as I know, the platform is still used by a number of people,
and is supported by OpenWRT. The reason we haven't seen updates is that
Ulli has been mostly absent from upstream development, and we haven't
had any other person step up as maintainer.

I have a patch to convert the platform to ARCH_MULTIPLATFORM, and
the code doesn't really get in the way otherwise.

As far as I'm concerned, we should just merge all the patches from
http://git.openwrt.org/?p=openwrt.git;a=tree;f=target/linux/gemini/patches-3.18

We should also try to find a maintainer that can respond to patches
in a timely manner. If Ulli has time for that again, that would be great,
otherwise I think we should find someone from OpenWRT to take over.

Arnd

2015-05-06 09:53:20

by Alexandre Belloni

[permalink] [raw]
Subject: Re: [1/2] RTC: Add core rtc support for Gemini Soc devices

On 06/05/2015 at 11:39:58 +0200, Arnd Bergmann wrote :
> On Saturday 02 May 2015 01:42:14 Alexandre Belloni wrote:
> > Hi,
> >
> > On 14/12/2010 at 16:08:26 +0100, Hans Ulli Kroll wrote :
> > > driver for the rtc device
> > > on Cortina Systems CS3516 or StormlinkSemi SL3516 aka Gemini SoC
> > >
> > > Signed-off-by: Hans Ulli Kroll <[email protected]>
> >
> > This driver has never been merged and the platform doesn't seem to be
> > active anymore. Is there still any interest in getting this driver
> > mainlined?
> >
> > Only tree wide cleanups happened in mach-gemini since end of 2010, the
> > listed git repository (git://git.berlios.de/gemini-board) was on berliOS
> > (closed since 2011) and the sourceforge mirror seems empty. Is there
> > still interest in keeping that platform in the mainline?
>
> As far as I know, the platform is still used by a number of people,
> and is supported by OpenWRT. The reason we haven't seen updates is that
> Ulli has been mostly absent from upstream development, and we haven't
> had any other person step up as maintainer.
>
> I have a patch to convert the platform to ARCH_MULTIPLATFORM, and
> the code doesn't really get in the way otherwise.
>
> As far as I'm concerned, we should just merge all the patches from
> http://git.openwrt.org/?p=openwrt.git;a=tree;f=target/linux/gemini/patches-3.18
>
> We should also try to find a maintainer that can respond to patches
> in a timely manner. If Ulli has time for that again, that would be great,
> otherwise I think we should find someone from OpenWRT to take over.
>

Thanks to point that, I'll merge that one which seems clean enough:
http://git.openwrt.org/?p=openwrt.git;a=blob;f=target/linux/gemini/files/drivers/rtc/rtc-gemini.c;h=587d8122b2fbb1230437eadcce4789a53aa60ee5;hb=4c637410a2a1ab45988e8ca6202554a502102039


--
Alexandre Belloni, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

2015-05-06 16:29:51

by Roman Yeryomin

[permalink] [raw]
Subject: Re: [1/2] RTC: Add core rtc support for Gemini Soc devices

On 2015-05-06 12:53, Alexandre Belloni wrote:
> On 06/05/2015 at 11:39:58 +0200, Arnd Bergmann wrote :
>> On Saturday 02 May 2015 01:42:14 Alexandre Belloni wrote:
>> > Hi,
>> >
>> > On 14/12/2010 at 16:08:26 +0100, Hans Ulli Kroll wrote :
>> > > driver for the rtc device
>> > > on Cortina Systems CS3516 or StormlinkSemi SL3516 aka Gemini SoC
>> > >
>> > > Signed-off-by: Hans Ulli Kroll <[email protected]>
>> >
>> > This driver has never been merged and the platform doesn't seem to be
>> > active anymore. Is there still any interest in getting this driver
>> > mainlined?
>> >
>> > Only tree wide cleanups happened in mach-gemini since end of 2010, the
>> > listed git repository (git://git.berlios.de/gemini-board) was on berliOS
>> > (closed since 2011) and the sourceforge mirror seems empty. Is there
>> > still interest in keeping that platform in the mainline?
>>
>> As far as I know, the platform is still used by a number of people,
>> and is supported by OpenWRT. The reason we haven't seen updates is
>> that
>> Ulli has been mostly absent from upstream development, and we haven't
>> had any other person step up as maintainer.
>>
>> I have a patch to convert the platform to ARCH_MULTIPLATFORM, and
>> the code doesn't really get in the way otherwise.
>>
>> As far as I'm concerned, we should just merge all the patches from
>> http://git.openwrt.org/?p=openwrt.git;a=tree;f=target/linux/gemini/patches-3.18
>>
>> We should also try to find a maintainer that can respond to patches
>> in a timely manner. If Ulli has time for that again, that would be
>> great,
>> otherwise I think we should find someone from OpenWRT to take over.
>>
>
> Thanks to point that, I'll merge that one which seems clean enough:
> http://git.openwrt.org/?p=openwrt.git;a=blob;f=target/linux/gemini/files/drivers/rtc/rtc-gemini.c;h=587d8122b2fbb1230437eadcce4789a53aa60ee5;hb=4c637410a2a1ab45988e8ca6202554a502102039

For 3.18 (and up) to work on gemini 160-gemini-timers.patch is vital.
Without that timers are broken and cpu is super slow.

Regards,
Roman

2015-05-06 19:23:11

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [1/2] RTC: Add core rtc support for Gemini Soc devices

On Wednesday 06 May 2015 19:21:21 Roman Yeryomin wrote:
>
> > Thanks to point that, I'll merge that one which seems clean enough:
> > http://git.openwrt.org/?p=openwrt.git;a=blob;f=target/linux/gemini/files/drivers/rtc/rtc-gemini.c;h=587d8122b2fbb1230437eadcce4789a53aa60ee5;hb=4c637410a2a1ab45988e8ca6202554a502102039
>
> For 3.18 (and up) to work on gemini 160-gemini-timers.patch is vital.
> Without that timers are broken and cpu is super slow.

Do you know what part of the patch is the actual bug fix? We should probably
merge that separately and mark it for stable backports, while the bulk of that
patch seems to just rearrange code.

Arnd

2015-05-07 03:01:30

by Hans Ulli Kroll

[permalink] [raw]
Subject: Re: [1/2] RTC: Add core rtc support for Gemini Soc devices

Hello

On Wed, 6 May 2015, Arnd Bergmann wrote:

> On Saturday 02 May 2015 01:42:14 Alexandre Belloni wrote:
> > Hi,
> >
> > On 14/12/2010 at 16:08:26 +0100, Hans Ulli Kroll wrote :
> > > driver for the rtc device
> > > on Cortina Systems CS3516 or StormlinkSemi SL3516 aka Gemini SoC
> > >
> > > Signed-off-by: Hans Ulli Kroll <[email protected]>
> >
> > This driver has never been merged and the platform doesn't seem to be
> > active anymore. Is there still any interest in getting this driver
> > mainlined?
> >
> > Only tree wide cleanups happened in mach-gemini since end of 2010, the
> > listed git repository (git://git.berlios.de/gemini-board) was on berliOS
> > (closed since 2011) and the sourceforge mirror seems empty. Is there
> > still interest in keeping that platform in the mainline?
>
> As far as I know, the platform is still used by a number of people,
> and is supported by OpenWRT. The reason we haven't seen updates is that
> Ulli has been mostly absent from upstream development, and we haven't
> had any other person step up as maintainer.
>
> I have a patch to convert the platform to ARCH_MULTIPLATFORM, and
> the code doesn't really get in the way otherwise.
>
> As far as I'm concerned, we should just merge all the patches from
> http://git.openwrt.org/?p=openwrt.git;a=tree;f=target/linux/gemini/patches-3.18
y>
> We should also try to find a maintainer that can respond to patches
> in a timely manner. If Ulli has time for that again, that would be great,
> otherwise I think we should find someone from OpenWRT to take over.
>
> Arnd
>

I'm back in busyness.
Currently me dev device is right next to me.
I moved some time ago and haav to find it in some 'hidden' box.


Ulli

2015-05-07 07:49:55

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [1/2] RTC: Add core rtc support for Gemini Soc devices

On Thursday 07 May 2015 05:00:03 Hans Ulli Kroll wrote:
> On Wed, 6 May 2015, Arnd Bergmann wrote:
> > As far as I'm concerned, we should just merge all the patches from
> > http://git.openwrt.org/?p=openwrt.git;a=tree;f=target/linux/gemini/patches-3.18
> >
> > We should also try to find a maintainer that can respond to patches
> > in a timely manner. If Ulli has time for that again, that would be great,
> > otherwise I think we should find someone from OpenWRT to take over.
>
> I'm back in busyness.
> Currently me dev device is right next to me.
> I moved some time ago and haav to find it in some 'hidden' box.

Awesome, welcome back!

Are you able to look at the patches I mentioned above and submit them
to [email protected], cc [email protected] with proper
patch descriptions?

Arnd

2015-05-07 09:03:33

by Roman Yeryomin

[permalink] [raw]
Subject: Re: [1/2] RTC: Add core rtc support for Gemini Soc devices

On 2015-05-06 22:22, Arnd Bergmann wrote:
> On Wednesday 06 May 2015 19:21:21 Roman Yeryomin wrote:
>>
>> > Thanks to point that, I'll merge that one which seems clean enough:
>> > http://git.openwrt.org/?p=openwrt.git;a=blob;f=target/linux/gemini/files/drivers/rtc/rtc-gemini.c;h=587d8122b2fbb1230437eadcce4789a53aa60ee5;hb=4c637410a2a1ab45988e8ca6202554a502102039
>>
>> For 3.18 (and up) to work on gemini 160-gemini-timers.patch is vital.
>> Without that timers are broken and cpu is super slow.
>
> Do you know what part of the patch is the actual bug fix? We should
> probably
> merge that separately and mark it for stable backports, while the bulk
> of that
> patch seems to just rearrange code.
>
> Arnd

Sorry, didn't try to extract the exact lines it but I guess it's that
part which touches the scheduler clock code.
Because without that patch sched clock runs at 100Hz instead of 25MHz.
I can dive into this deeper if you want, I just didn't see the need.

Regards,
Roman

2015-05-07 17:37:20

by Hans Ulli Kroll

[permalink] [raw]
Subject: Re: [1/2] RTC: Add core rtc support for Gemini Soc devices


Hi

On Thu, 7 May 2015, Roman Yeryomin wrote:

> On 2015-05-06 22:22, Arnd Bergmann wrote:
> > On Wednesday 06 May 2015 19:21:21 Roman Yeryomin wrote:
> > >
> > > > Thanks to point that, I'll merge that one which seems clean enough:
> > > > http://git.openwrt.org/?p=openwrt.git;a=blob;f=target/linux/gemini/files/drivers/rtc/rtc-gemini.c;h=587d8122b2fbb1230437eadcce4789a53aa60ee5;hb=4c637410a2a1ab45988e8ca6202554a502102039
> > >
> > > For 3.18 (and up) to work on gemini 160-gemini-timers.patch is vital.
> > > Without that timers are broken and cpu is super slow.
> >
> > Do you know what part of the patch is the actual bug fix? We should probably
> > merge that separately and mark it for stable backports, while the bulk of
> > that
> > patch seems to just rearrange code.
> >
> > Arnd
>
> Sorry, didn't try to extract the exact lines it but I guess it's that part
> which touches the scheduler clock code.
> Because without that patch sched clock runs at 100Hz instead of 25MHz.
> I can dive into this deeper if you want, I just didn't see the need.
>
> Regards,
> Roman
>
>

I've send the RTC driver for Gemini SoC upstream-

Ulli

2015-05-07 17:47:28

by Hans Ulli Kroll

[permalink] [raw]
Subject: Re: [1/2] RTC: Add core rtc support for Gemini Soc devices


Hi

On Thu, 7 May 2015, Arnd Bergmann wrote:

> On Thursday 07 May 2015 05:00:03 Hans Ulli Kroll wrote:
> > On Wed, 6 May 2015, Arnd Bergmann wrote:
> > > As far as I'm concerned, we should just merge all the patches from
> > > http://git.openwrt.org/?p=openwrt.git;a=tree;f=target/linux/gemini/patches-3.18
> > >
> > > We should also try to find a maintainer that can respond to patches
> > > in a timely manner. If Ulli has time for that again, that would be great,
> > > otherwise I think we should find someone from OpenWRT to take over.
> >
> > I'm back in busyness.
> > Currently me dev device is right next to me.
> > I moved some time ago and haav to find it in some 'hidden' box.
>
> Awesome, welcome back!
>
> Are you able to look at the patches I mentioned above and submit them
> to [email protected], cc [email protected] with proper
> patch descriptions?
>
> Arnd
>

Already done,
RTC driver send.
Compilder fix for MACH-RECORD send.
Maintainer Update send.

This device is a (very) bad design, to be polite !
I think they didn't test this properly.
And they fixed some software issues in hardware.
To be exact :
They switched the IDE channels in hardware, to get around the stupid
Sausalito software.

2015-05-07 21:31:25

by Roman Yeryomin

[permalink] [raw]
Subject: Re: [1/2] RTC: Add core rtc support for Gemini Soc devices

On 2015-05-07 20:35, Hans Ulli Kroll wrote:
> Hi
>
> On Thu, 7 May 2015, Roman Yeryomin wrote:
>
>> On 2015-05-06 22:22, Arnd Bergmann wrote:
>> > On Wednesday 06 May 2015 19:21:21 Roman Yeryomin wrote:
>> > >
>> > > > Thanks to point that, I'll merge that one which seems clean enough:
>> > > > http://git.openwrt.org/?p=openwrt.git;a=blob;f=target/linux/gemini/files/drivers/rtc/rtc-gemini.c;h=587d8122b2fbb1230437eadcce4789a53aa60ee5;hb=4c637410a2a1ab45988e8ca6202554a502102039
>> > >
>> > > For 3.18 (and up) to work on gemini 160-gemini-timers.patch is vital.
>> > > Without that timers are broken and cpu is super slow.
>> >
>> > Do you know what part of the patch is the actual bug fix? We should probably
>> > merge that separately and mark it for stable backports, while the bulk of
>> > that
>> > patch seems to just rearrange code.
>> >
>> > Arnd
>>
>> Sorry, didn't try to extract the exact lines it but I guess it's that
>> part
>> which touches the scheduler clock code.
>> Because without that patch sched clock runs at 100Hz instead of 25MHz.
>> I can dive into this deeper if you want, I just didn't see the need.
>>
>> Regards,
>> Roman
>>
>>
>
> I've send the RTC driver for Gemini SoC upstream-

I was talking about 160-gemini-timers.patch, not rtc driver.

Regards,
Roman

2015-05-07 21:35:25

by Roman Yeryomin

[permalink] [raw]
Subject: Re: [1/2] RTC: Add core rtc support for Gemini Soc devices

On 2015-05-07 20:46, Hans Ulli Kroll wrote:
> Hi
>
> On Thu, 7 May 2015, Arnd Bergmann wrote:
>
>> On Thursday 07 May 2015 05:00:03 Hans Ulli Kroll wrote:
>> > On Wed, 6 May 2015, Arnd Bergmann wrote:
>> > > As far as I'm concerned, we should just merge all the patches from
>> > > http://git.openwrt.org/?p=openwrt.git;a=tree;f=target/linux/gemini/patches-3.18
>> > >
>> > > We should also try to find a maintainer that can respond to patches
>> > > in a timely manner. If Ulli has time for that again, that would be great,
>> > > otherwise I think we should find someone from OpenWRT to take over.
>> >
>> > I'm back in busyness.
>> > Currently me dev device is right next to me.
>> > I moved some time ago and haav to find it in some 'hidden' box.
>>
>> Awesome, welcome back!
>>
>> Are you able to look at the patches I mentioned above and submit them
>> to [email protected], cc [email protected] with proper
>> patch descriptions?
>>
>> Arnd
>>
>
> Already done,
> RTC driver send.
> Compilder fix for MACH-RECORD send.
> Maintainer Update send.
>
> This device is a (very) bad design, to be polite !
> I think they didn't test this properly.
> And they fixed some software issues in hardware.
> To be exact :
> They switched the IDE channels in hardware, to get around the stupid
> Sausalito software.

AFAIK, ide channels are switchable in the driver.

Regards,
Roman

2015-05-08 16:09:01

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [1/2] RTC: Add core rtc support for Gemini Soc devices

On Thursday 07 May 2015 12:03:25 Roman Yeryomin wrote:
> On 2015-05-06 22:22, Arnd Bergmann wrote:
> > On Wednesday 06 May 2015 19:21:21 Roman Yeryomin wrote:
> >>
> >> > Thanks to point that, I'll merge that one which seems clean enough:
> >> > http://git.openwrt.org/?p=openwrt.git;a=blob;f=target/linux/gemini/files/drivers/rtc/rtc-gemini.c;h=587d8122b2fbb1230437eadcce4789a53aa60ee5;hb=4c637410a2a1ab45988e8ca6202554a502102039
> >>
> >> For 3.18 (and up) to work on gemini 160-gemini-timers.patch is vital.
> >> Without that timers are broken and cpu is super slow.
> >
> > Do you know what part of the patch is the actual bug fix? We should
> > probably
> > merge that separately and mark it for stable backports, while the bulk
> > of that
> > patch seems to just rearrange code.
> >
> > Arnd
>
> Sorry, didn't try to extract the exact lines it but I guess it's that
> part which touches the scheduler clock code.
> Because without that patch sched clock runs at 100Hz instead of 25MHz.
> I can dive into this deeper if you want, I just didn't see the need.

I think that would be helpful, yes.

Arnd

2015-05-08 18:30:10

by Hans Ulli Kroll

[permalink] [raw]
Subject: Re: [1/2] RTC: Add core rtc support for Gemini Soc devices


Hi

On Fri, 8 May 2015, Roman Yeryomin wrote:

> On 2015-05-07 20:46, Hans Ulli Kroll wrote:
> > Hi
> >
> > On Thu, 7 May 2015, Arnd Bergmann wrote:
> >
> > > On Thursday 07 May 2015 05:00:03 Hans Ulli Kroll wrote:
> > > > On Wed, 6 May 2015, Arnd Bergmann wrote:
> > > > > As far as I'm concerned, we should just merge all the patches from
> > > > > http://git.openwrt.org/?p=openwrt.git;a=tree;f=target/linux/gemini/patches-3.18
> > > > >
> > > > > We should also try to find a maintainer that can respond to patches
> > > > > in a timely manner. If Ulli has time for that again, that would be
> > > > > great,
> > > > > otherwise I think we should find someone from OpenWRT to take over.
> > > >
> > > > I'm back in busyness.
> > > > Currently me dev device is right next to me.
> > > > I moved some time ago and haav to find it in some 'hidden' box.
> > >
> > > Awesome, welcome back!
> > >
> > > Are you able to look at the patches I mentioned above and submit them
> > > to [email protected], cc [email protected] with proper
> > > patch descriptions?
> > >
> > > Arnd
> > >
> >
> > Already done,
> > RTC driver send.
> > Compilder fix for MACH-RECORD send.
> > Maintainer Update send.
> >
> > This device is a (very) bad design, to be polite !
> > I think they didn't test this properly.
> > And they fixed some software issues in hardware.
> > To be exact :
> > They switched the IDE channels in hardware, to get around the stupid
> > Sausalito software.
>
> AFAIK, ide channels are switchable in the driver.

Yes.
But there is a HW switch.
/* Values of IOMUX
* 26:24 bits is "IDE IO Select"
* 111:100 - Reserved
* 011 - ata0 <-> sata0, sata1; bring out ata1
* 010 - ata1 <-> sata1, sata0; bring out ata0
* 001 - ata0 <-> sata0, ata1 <-> sata1; bring out ata1
* 000 - ata0 <-> sata0, ata1 <-> sata1; bring out ata0
*/

This is from an email long time ago, with Paulius Zaleckas who has the
yoriginal documentation to this SoC.
I hacked some weeks (or months) to get this thing running.

Some HDD are working well, others don't. At this time, this was only one
manufacturer, who has only the "bad" devices.
Early this year, I got some report from one user. He has two hdd's from
the same manufacturer. One hdd is working well, the other don't.

At the end of this "session" I've taken this device to some hidden place.
;-)

Ulli

2015-07-08 22:37:29

by Roman Yeryomin

[permalink] [raw]
Subject: Re: [1/2] RTC: Add core rtc support for Gemini Soc devices

On 2015-05-08 19:08, Arnd Bergmann wrote:
> On Thursday 07 May 2015 12:03:25 Roman Yeryomin wrote:
>> On 2015-05-06 22:22, Arnd Bergmann wrote:
>> > On Wednesday 06 May 2015 19:21:21 Roman Yeryomin wrote:
>> >>
>> >> > Thanks to point that, I'll merge that one which seems clean enough:
>> >> > http://git.openwrt.org/?p=openwrt.git;a=blob;f=target/linux/gemini/files/drivers/rtc/rtc-gemini.c;h=587d8122b2fbb1230437eadcce4789a53aa60ee5;hb=4c637410a2a1ab45988e8ca6202554a502102039
>> >>
>> >> For 3.18 (and up) to work on gemini 160-gemini-timers.patch is vital.
>> >> Without that timers are broken and cpu is super slow.
>> >
>> > Do you know what part of the patch is the actual bug fix? We should
>> > probably
>> > merge that separately and mark it for stable backports, while the bulk
>> > of that
>> > patch seems to just rearrange code.
>> >
>> > Arnd
>>
>> Sorry, didn't try to extract the exact lines it but I guess it's that
>> part which touches the scheduler clock code.
>> Because without that patch sched clock runs at 100Hz instead of 25MHz.
>> I can dive into this deeper if you want, I just didn't see the need.
>
> I think that would be helpful, yes.
>

OK, here are the minimal changes required (see attachment). Tested on
4.1.1
Let me know if you want me to submit it in some other way.

Regards,
Roman


Attachments:
160-gemini-timers.patch (1.94 kB)

2015-07-09 08:05:06

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [1/2] RTC: Add core rtc support for Gemini Soc devices

On Thursday 09 July 2015 01:29:39 Roman Yeryomin wrote:
>
> OK, here are the minimal changes required (see attachment). Tested on
> 4.1.1
> Let me know if you want me to submit it in some other way.
>

The changes look ok to me. Please submit them as two separate
patches (1. set up and use timer3, 2. register sched_clock) according
to the Documentation/SubmittingPatches description.

Thanks,

Arnd

2015-07-09 11:58:40

by Hans Ulli Kroll

[permalink] [raw]
Subject: Re: [1/2] RTC: Add core rtc support for Gemini Soc devices

Hi

On Thu, 9 Jul 2015, Arnd Bergmann wrote:

> On Thursday 09 July 2015 01:29:39 Roman Yeryomin wrote:
> >
> > OK, here are the minimal changes required (see attachment). Tested on
> > 4.1.1
> > Let me know if you want me to submit it in some other way.
> >
>
> The changes look ok to me. Please submit them as two separate
> patches (1. set up and use timer3, 2. register sched_clock) according
> to the Documentation/SubmittingPatches description.
>
> Thanks,
>
> Arnd
>

have you seen this thread ...
[PATCH 00/18] ARM: Migrate clockevent drivers to 'set-state
http://permalink.gmane.org/gmane.linux.ports.arm.kernel/423992

arch/arm/mach-gemini/time.c | 69 ++++++++++++------------

Two or more weeks ago I send a patchset fixing this problem.
At this time Arnd was in holiday and until today I was very busy at work.

I can rework my patches on top of Viresh's patchset

and Roman please fix the subject.

Ulli

2015-07-09 13:02:53

by Roman Yeryomin

[permalink] [raw]
Subject: Gemini Soc timers

On 2015-07-09 14:58, Hans Ulli Kroll wrote:
> Hi
>
> On Thu, 9 Jul 2015, Arnd Bergmann wrote:
>
>> On Thursday 09 July 2015 01:29:39 Roman Yeryomin wrote:
>> >
>> > OK, here are the minimal changes required (see attachment). Tested on
>> > 4.1.1
>> > Let me know if you want me to submit it in some other way.
>> >
>>
>> The changes look ok to me. Please submit them as two separate
>> patches (1. set up and use timer3, 2. register sched_clock) according
>> to the Documentation/SubmittingPatches description.
>>
>> Thanks,
>>
>> Arnd
>>
>
> have you seen this thread ...
> [PATCH 00/18] ARM: Migrate clockevent drivers to 'set-state
> http://permalink.gmane.org/gmane.linux.ports.arm.kernel/423992
>
> arch/arm/mach-gemini/time.c | 69 ++++++++++++------------
>
> Two or more weeks ago I send a patchset fixing this problem.
> At this time Arnd was in holiday and until today I was very busy at
> work.

Sorry, I didn't see your patches.
Arnd requested minimal changes and until yesterday I was very busy too.

> I can rework my patches on top of Viresh's patchset

It looks that this patchset doesn't conflict with the fix needed.

> and Roman please fix the subject.

done


Regards,
Roman

2015-07-09 15:48:54

by Linus Walleij

[permalink] [raw]
Subject: Re: Gemini Soc timers

On Thu, Jul 9, 2015 at 3:02 PM, Roman Yeryomin <[email protected]> wrote:
> On 2015-07-09 14:58, Hans Ulli Kroll wrote:
>>
>> Hi
>>
>> On Thu, 9 Jul 2015, Arnd Bergmann wrote:
>>
>>> On Thursday 09 July 2015 01:29:39 Roman Yeryomin wrote:
>>> >
>>> > OK, here are the minimal changes required (see attachment). Tested on
>>> > 4.1.1
>>> > Let me know if you want me to submit it in some other way.
>>> >
>>>
>>> The changes look ok to me. Please submit them as two separate
>>> patches (1. set up and use timer3, 2. register sched_clock) according
>>> to the Documentation/SubmittingPatches description.
>>>
>>> Thanks,
>>>
>>> Arnd
>>>
>>
>> have you seen this thread ...
>> [PATCH 00/18] ARM: Migrate clockevent drivers to 'set-state
>> http://permalink.gmane.org/gmane.linux.ports.arm.kernel/423992
>>
>> arch/arm/mach-gemini/time.c | 69 ++++++++++++------------
>>
>> Two or more weeks ago I send a patchset fixing this problem.
>> At this time Arnd was in holiday and until today I was very busy at work.
>
>
> Sorry, I didn't see your patches.
> Arnd requested minimal changes and until yesterday I was very busy too.
>
>> I can rework my patches on top of Viresh's patchset
>
>
> It looks that this patchset doesn't conflict with the fix needed.

Can any of you guys just look at this thing from OpenWRT:
http://git.openwrt.org/?p=openwrt.git;a=blob;f=target/linux/gemini/patches-3.18/160-gemini-timers.patch;h=4b0edb45d162f751bfb7475f5b3158f28d69fe84;hb=HEAD

As usual they are just keeping it out of mainline, and this
is adding sched_clock() and other goodies so should
probably be upstreamed ASAP.

Yours,
Linus Walleij

2015-07-09 16:48:47

by Roman Yeryomin

[permalink] [raw]
Subject: Re: Gemini Soc timers

On 2015-07-09 18:48, Linus Walleij wrote:
> On Thu, Jul 9, 2015 at 3:02 PM, Roman Yeryomin <[email protected]> wrote:
>> On 2015-07-09 14:58, Hans Ulli Kroll wrote:
>>>
>>> Hi
>>>
>>> On Thu, 9 Jul 2015, Arnd Bergmann wrote:
>>>
>>>> On Thursday 09 July 2015 01:29:39 Roman Yeryomin wrote:
>>>> >
>>>> > OK, here are the minimal changes required (see attachment). Tested on
>>>> > 4.1.1
>>>> > Let me know if you want me to submit it in some other way.
>>>> >
>>>>
>>>> The changes look ok to me. Please submit them as two separate
>>>> patches (1. set up and use timer3, 2. register sched_clock)
>>>> according
>>>> to the Documentation/SubmittingPatches description.
>>>>
>>>> Thanks,
>>>>
>>>> Arnd
>>>>
>>>
>>> have you seen this thread ...
>>> [PATCH 00/18] ARM: Migrate clockevent drivers to 'set-state
>>> http://permalink.gmane.org/gmane.linux.ports.arm.kernel/423992
>>>
>>> arch/arm/mach-gemini/time.c | 69
>>> ++++++++++++------------
>>>
>>> Two or more weeks ago I send a patchset fixing this problem.
>>> At this time Arnd was in holiday and until today I was very busy at
>>> work.
>>
>>
>> Sorry, I didn't see your patches.
>> Arnd requested minimal changes and until yesterday I was very busy
>> too.
>>
>>> I can rework my patches on top of Viresh's patchset
>>
>>
>> It looks that this patchset doesn't conflict with the fix needed.
>
> Can any of you guys just look at this thing from OpenWRT:
> http://git.openwrt.org/?p=openwrt.git;a=blob;f=target/linux/gemini/patches-3.18/160-gemini-timers.patch;h=4b0edb45d162f751bfb7475f5b3158f28d69fe84;hb=HEAD
>
> As usual they are just keeping it out of mainline, and this
> is adding sched_clock() and other goodies so should
> probably be upstreamed ASAP.

This is what I initially submitted here.
But Arnd wanted to see a smaller patch which only fixes gemini timer
issue (t.i. shed clock being 100Hz instead of 25MHz).
Also I've submitted 4.1 support yesterday, but patches didn't change
much comparing to 3.18
I would love to see all those patches/drivers in mainline - tell me
where do I submit all that :)

Regards,
Roman

2015-07-09 16:51:35

by Roman Yeryomin

[permalink] [raw]
Subject: Re: [1/2] RTC: Add core rtc support for Gemini Soc devices

On 2015-07-09 11:04, Arnd Bergmann wrote:
> On Thursday 09 July 2015 01:29:39 Roman Yeryomin wrote:
>>
>> OK, here are the minimal changes required (see attachment). Tested on
>> 4.1.1
>> Let me know if you want me to submit it in some other way.
>>
>
> The changes look ok to me. Please submit them as two separate
> patches (1. set up and use timer3, 2. register sched_clock) according
> to the Documentation/SubmittingPatches description.
>

So what do we do?
Do you still want me to split this as you said and submit or you want
Hans's patches rebased/resubmitted?

Regards,
Roman

2015-07-10 08:48:40

by Linus Walleij

[permalink] [raw]
Subject: Re: Gemini Soc timers

On Thu, Jul 9, 2015 at 6:48 PM, Roman Yeryomin <[email protected]> wrote:
> [Me]
>> As usual they are just keeping it out of mainline, and this
>> is adding sched_clock() and other goodies so should
>> probably be upstreamed ASAP.
>
>
> This is what I initially submitted here.

Ah. I missed part of the start of the discussion it seems.

> But Arnd wanted to see a smaller patch which only fixes gemini timer issue
> (t.i. shed clock being 100Hz instead of 25MHz).
> Also I've submitted 4.1 support yesterday, but patches didn't change much
> comparing to 3.18

On the other hand I think the bigger patch is OK actually.

I rewrote the timer support some time back and did not get
anyone to test it properly at the time, so the patch went in
untested. So this is a fix.

I think this should be applied as-is since you can actually
test the whole thing on real hardware, and also add:

Fixes: f3372c01816e "ARM: gemini: convert to GENERIC_CLOCKEVENTS"
Reviewed-by: Linus Walleij <[email protected]>

> I would love to see all those patches/drivers in mainline - tell me where do
> I submit all that :)

I recently looked at some of the patch stacks in OpenWRT and
get a bit sad that the stuff did not go upstream, so I am ready
to help in any way I can.

Anything GPIO related I am ready to help in reviewing/applying
and I will also help out with ARM32 if I can. Sadly I do not have
a Gemini system.

Yours,
Linus Walleij

2015-07-12 21:06:36

by Arnd Bergmann

[permalink] [raw]
Subject: Re: Gemini Soc timers

On Friday 10 July 2015 10:48:26 Linus Walleij wrote:
> On Thu, Jul 9, 2015 at 6:48 PM, Roman Yeryomin <[email protected]> wrote:
> > [Me]
> >> As usual they are just keeping it out of mainline, and this
> >> is adding sched_clock() and other goodies so should
> >> probably be upstreamed ASAP.
> >
> >
> > This is what I initially submitted here.
>
> Ah. I missed part of the start of the discussion it seems.
>
> > But Arnd wanted to see a smaller patch which only fixes gemini timer issue
> > (t.i. shed clock being 100Hz instead of 25MHz).
> > Also I've submitted 4.1 support yesterday, but patches didn't change much
> > comparing to 3.18
>
> On the other hand I think the bigger patch is OK actually.
>
> I rewrote the timer support some time back and did not get
> anyone to test it properly at the time, so the patch went in
> untested. So this is a fix.

The bigger patch seemed a little too verbose to have it backported
to stable kernels, so I asked for a minimal fix that could be marked
as stable, with the other changes applied on top for the current
arm-soc tree.

I'm still on parental leave and not dealing with patches directly,
so whichever patch we want should get routed through Ulli to [email protected]

Arnd

2015-07-19 16:28:27

by Hans Ulli Kroll

[permalink] [raw]
Subject: Re: [1/2] RTC: Add core rtc support for Gemini Soc devices

Hi

On Thu, 9 Jul 2015, Roman Yeryomin wrote:

> On 2015-07-09 11:04, Arnd Bergmann wrote:
> > On Thursday 09 July 2015 01:29:39 Roman Yeryomin wrote:
> > >
> > > OK, here are the minimal changes required (see attachment). Tested on
> > > 4.1.1
> > > Let me know if you want me to submit it in some other way.
> > >
> >
> > The changes look ok to me. Please submit them as two separate
> > patches (1. set up and use timer3, 2. register sched_clock) according
> > to the Documentation/SubmittingPatches description.
> >
>
> So what do we do?
> Do you still want me to split this as you said and submit or you want Hans's
> patches rebased/resubmitted?
>
> Regards,
> Roman
>

can you rebase your patches againt my branch at

git://github.com/ulli-kroll/linux.git gemini/clockevents/4.3

I've added here the clockevents changes for 4.3 and patch fory
arch/arm/mach-gemini
This changes will then go [email protected].

Hans Ulli