From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753067AbbGLKpz (ORCPT ); Sun, 12 Jul 2015 06:45:55 -0400 Received: from kvm5.telegraphics.com.au ([98.124.60.144]:58230 "EHLO kvm5.telegraphics.com.au" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751693AbbGLKkj (ORCPT ); Sun, 12 Jul 2015 06:40:39 -0400 Message-Id: <20150712102530.055904859@telegraphics.com.au> User-Agent: quilt/0.50-1 Date: Sun, 12 Jul 2015 20:25:38 +1000 From: Finn Thain To: , , , Geert Uytterhoeven , Arnd Bergmann , Greg Kroah-Hartman Subject: [RFC v4 11/25] m68k/atari: Implement arch_nvram_ops methods and enable CONFIG_HAVE_ARCH_NVRAM_OPS References: <20150712102527.356151908@telegraphics.com.au> Content-Disposition: inline; filename=atari-hook-up-misc-device Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Atari RTC NVRAM has a checksum so implement the remaining arch_nvram_ops methods for the set_checksum and initialize ioctls. Enable CONFIG_HAVE_ARCH_NVRAM_OPS. Signed-off-by: Finn Thain --- This re-enables the nvram module for Atari. Changes since v3: - Use bool (and select) instead of def_bool in the definition of the HAVE_ARCH_NVRAM_OPS Kconfig symbol, as requested by Geert. --- arch/m68k/Kconfig | 3 +++ arch/m68k/Kconfig.machine | 1 + arch/m68k/atari/nvram.c | 24 ++++++++++++++++++++++++ drivers/char/Kconfig | 2 +- 4 files changed, 29 insertions(+), 1 deletion(-) Index: linux/arch/m68k/atari/nvram.c =================================================================== --- linux.orig/arch/m68k/atari/nvram.c 2015-07-12 20:24:58.000000000 +1000 +++ linux/arch/m68k/atari/nvram.c 2015-07-12 20:25:05.000000000 +1000 @@ -73,6 +73,26 @@ static void __nvram_set_checksum(void) __nvram_write_byte(sum, ATARI_CKS_LOC + 1); } +static long nvram_set_checksum(void) +{ + spin_lock_irq(&rtc_lock); + __nvram_set_checksum(); + spin_unlock_irq(&rtc_lock); + return 0; +} + +static long nvram_initialize(void) +{ + loff_t i; + + spin_lock_irq(&rtc_lock); + for (i = 0; i < NVRAM_BYTES; ++i) + __nvram_write_byte(0, i); + __nvram_set_checksum(); + spin_unlock_irq(&rtc_lock); + return 0; +} + static ssize_t nvram_read(char *buf, size_t count, loff_t *ppos) { char *p = buf; @@ -119,6 +139,8 @@ static ssize_t nvram_write(char *buf, si static ssize_t nvram_get_size(void) { + if (!MACH_IS_ATARI) + return -ENODEV; return NVRAM_BYTES; } @@ -126,6 +148,8 @@ const struct nvram_ops arch_nvram_ops = .read = nvram_read, .write = nvram_write, .get_size = nvram_get_size, + .set_checksum = nvram_set_checksum, + .initialize = nvram_initialize, }; EXPORT_SYMBOL(arch_nvram_ops); Index: linux/drivers/char/Kconfig =================================================================== --- linux.orig/drivers/char/Kconfig 2015-07-12 20:24:54.000000000 +1000 +++ linux/drivers/char/Kconfig 2015-07-12 20:25:05.000000000 +1000 @@ -247,7 +247,7 @@ source "drivers/char/hw_random/Kconfig" config NVRAM tristate "/dev/nvram support" - depends on X86 || (ARM && RTC_DRV_CMOS) || GENERIC_NVRAM + depends on X86 || (ARM && RTC_DRV_CMOS) || GENERIC_NVRAM || HAVE_ARCH_NVRAM_OPS ---help--- If you say Y here and create a character special file /dev/nvram with major number 10 and minor number 144 using mknod ("man mknod"), Index: linux/arch/m68k/Kconfig =================================================================== --- linux.orig/arch/m68k/Kconfig 2015-07-12 20:24:53.000000000 +1000 +++ linux/arch/m68k/Kconfig 2015-07-12 20:25:05.000000000 +1000 @@ -71,6 +71,9 @@ config PGTABLE_LEVELS default 2 if SUN3 || COLDFIRE default 3 +config HAVE_ARCH_NVRAM_OPS + bool + source "init/Kconfig" source "kernel/Kconfig.freezer" Index: linux/arch/m68k/Kconfig.machine =================================================================== --- linux.orig/arch/m68k/Kconfig.machine 2015-07-12 20:24:53.000000000 +1000 +++ linux/arch/m68k/Kconfig.machine 2015-07-12 20:25:05.000000000 +1000 @@ -15,6 +15,7 @@ config ATARI bool "Atari support" depends on MMU select MMU_MOTOROLA if MMU + select HAVE_ARCH_NVRAM_OPS help This option enables support for the 68000-based Atari series of computers (including the TT, Falcon and Medusa). If you plan to use From mboxrd@z Thu Jan 1 00:00:00 1970 From: Finn Thain Subject: [RFC v4 11/25] m68k/atari: Implement arch_nvram_ops methods and enable CONFIG_HAVE_ARCH_NVRAM_OPS Date: Sun, 12 Jul 2015 20:25:38 +1000 Message-ID: <20150712102530.055904859@telegraphics.com.au> References: <20150712102527.356151908@telegraphics.com.au> Return-path: Content-Disposition: inline; filename=atari-hook-up-misc-device Sender: linux-kernel-owner@vger.kernel.org To: linux-kernel@vger.kernel.org, linux-m68k@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Geert Uytterhoeven , Arnd Bergmann , Greg Kroah-Hartman List-Id: linux-m68k@vger.kernel.org Atari RTC NVRAM has a checksum so implement the remaining arch_nvram_ops methods for the set_checksum and initialize ioctls. Enable CONFIG_HAVE_ARCH_NVRAM_OPS. Signed-off-by: Finn Thain --- This re-enables the nvram module for Atari. Changes since v3: - Use bool (and select) instead of def_bool in the definition of the HAVE_ARCH_NVRAM_OPS Kconfig symbol, as requested by Geert. --- arch/m68k/Kconfig | 3 +++ arch/m68k/Kconfig.machine | 1 + arch/m68k/atari/nvram.c | 24 ++++++++++++++++++++++++ drivers/char/Kconfig | 2 +- 4 files changed, 29 insertions(+), 1 deletion(-) Index: linux/arch/m68k/atari/nvram.c =================================================================== --- linux.orig/arch/m68k/atari/nvram.c 2015-07-12 20:24:58.000000000 +1000 +++ linux/arch/m68k/atari/nvram.c 2015-07-12 20:25:05.000000000 +1000 @@ -73,6 +73,26 @@ static void __nvram_set_checksum(void) __nvram_write_byte(sum, ATARI_CKS_LOC + 1); } +static long nvram_set_checksum(void) +{ + spin_lock_irq(&rtc_lock); + __nvram_set_checksum(); + spin_unlock_irq(&rtc_lock); + return 0; +} + +static long nvram_initialize(void) +{ + loff_t i; + + spin_lock_irq(&rtc_lock); + for (i = 0; i < NVRAM_BYTES; ++i) + __nvram_write_byte(0, i); + __nvram_set_checksum(); + spin_unlock_irq(&rtc_lock); + return 0; +} + static ssize_t nvram_read(char *buf, size_t count, loff_t *ppos) { char *p = buf; @@ -119,6 +139,8 @@ static ssize_t nvram_write(char *buf, si static ssize_t nvram_get_size(void) { + if (!MACH_IS_ATARI) + return -ENODEV; return NVRAM_BYTES; } @@ -126,6 +148,8 @@ const struct nvram_ops arch_nvram_ops = .read = nvram_read, .write = nvram_write, .get_size = nvram_get_size, + .set_checksum = nvram_set_checksum, + .initialize = nvram_initialize, }; EXPORT_SYMBOL(arch_nvram_ops); Index: linux/drivers/char/Kconfig =================================================================== --- linux.orig/drivers/char/Kconfig 2015-07-12 20:24:54.000000000 +1000 +++ linux/drivers/char/Kconfig 2015-07-12 20:25:05.000000000 +1000 @@ -247,7 +247,7 @@ source "drivers/char/hw_random/Kconfig" config NVRAM tristate "/dev/nvram support" - depends on X86 || (ARM && RTC_DRV_CMOS) || GENERIC_NVRAM + depends on X86 || (ARM && RTC_DRV_CMOS) || GENERIC_NVRAM || HAVE_ARCH_NVRAM_OPS ---help--- If you say Y here and create a character special file /dev/nvram with major number 10 and minor number 144 using mknod ("man mknod"), Index: linux/arch/m68k/Kconfig =================================================================== --- linux.orig/arch/m68k/Kconfig 2015-07-12 20:24:53.000000000 +1000 +++ linux/arch/m68k/Kconfig 2015-07-12 20:25:05.000000000 +1000 @@ -71,6 +71,9 @@ config PGTABLE_LEVELS default 2 if SUN3 || COLDFIRE default 3 +config HAVE_ARCH_NVRAM_OPS + bool + source "init/Kconfig" source "kernel/Kconfig.freezer" Index: linux/arch/m68k/Kconfig.machine =================================================================== --- linux.orig/arch/m68k/Kconfig.machine 2015-07-12 20:24:53.000000000 +1000 +++ linux/arch/m68k/Kconfig.machine 2015-07-12 20:25:05.000000000 +1000 @@ -15,6 +15,7 @@ config ATARI bool "Atari support" depends on MMU select MMU_MOTOROLA if MMU + select HAVE_ARCH_NVRAM_OPS help This option enables support for the 68000-based Atari series of computers (including the TT, Falcon and Medusa). If you plan to use From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from kvm5.telegraphics.com.au (kvm5.telegraphics.com.au [98.124.60.144]) by lists.ozlabs.org (Postfix) with ESMTP id DC86D1A0CFC for ; Sun, 12 Jul 2015 20:40:40 +1000 (AEST) Message-Id: <20150712102530.055904859@telegraphics.com.au> Date: Sun, 12 Jul 2015 20:25:38 +1000 From: Finn Thain To: , , , Geert Uytterhoeven , Arnd Bergmann , Greg Kroah-Hartman Subject: [RFC v4 11/25] m68k/atari: Implement arch_nvram_ops methods and enable CONFIG_HAVE_ARCH_NVRAM_OPS References: <20150712102527.356151908@telegraphics.com.au> List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Atari RTC NVRAM has a checksum so implement the remaining arch_nvram_ops methods for the set_checksum and initialize ioctls. Enable CONFIG_HAVE_ARCH_NVRAM_OPS. Signed-off-by: Finn Thain --- This re-enables the nvram module for Atari. Changes since v3: - Use bool (and select) instead of def_bool in the definition of the HAVE_ARCH_NVRAM_OPS Kconfig symbol, as requested by Geert. --- arch/m68k/Kconfig | 3 +++ arch/m68k/Kconfig.machine | 1 + arch/m68k/atari/nvram.c | 24 ++++++++++++++++++++++++ drivers/char/Kconfig | 2 +- 4 files changed, 29 insertions(+), 1 deletion(-) Index: linux/arch/m68k/atari/nvram.c =================================================================== --- linux.orig/arch/m68k/atari/nvram.c 2015-07-12 20:24:58.000000000 +1000 +++ linux/arch/m68k/atari/nvram.c 2015-07-12 20:25:05.000000000 +1000 @@ -73,6 +73,26 @@ static void __nvram_set_checksum(void) __nvram_write_byte(sum, ATARI_CKS_LOC + 1); } +static long nvram_set_checksum(void) +{ + spin_lock_irq(&rtc_lock); + __nvram_set_checksum(); + spin_unlock_irq(&rtc_lock); + return 0; +} + +static long nvram_initialize(void) +{ + loff_t i; + + spin_lock_irq(&rtc_lock); + for (i = 0; i < NVRAM_BYTES; ++i) + __nvram_write_byte(0, i); + __nvram_set_checksum(); + spin_unlock_irq(&rtc_lock); + return 0; +} + static ssize_t nvram_read(char *buf, size_t count, loff_t *ppos) { char *p = buf; @@ -119,6 +139,8 @@ static ssize_t nvram_write(char *buf, si static ssize_t nvram_get_size(void) { + if (!MACH_IS_ATARI) + return -ENODEV; return NVRAM_BYTES; } @@ -126,6 +148,8 @@ const struct nvram_ops arch_nvram_ops = .read = nvram_read, .write = nvram_write, .get_size = nvram_get_size, + .set_checksum = nvram_set_checksum, + .initialize = nvram_initialize, }; EXPORT_SYMBOL(arch_nvram_ops); Index: linux/drivers/char/Kconfig =================================================================== --- linux.orig/drivers/char/Kconfig 2015-07-12 20:24:54.000000000 +1000 +++ linux/drivers/char/Kconfig 2015-07-12 20:25:05.000000000 +1000 @@ -247,7 +247,7 @@ source "drivers/char/hw_random/Kconfig" config NVRAM tristate "/dev/nvram support" - depends on X86 || (ARM && RTC_DRV_CMOS) || GENERIC_NVRAM + depends on X86 || (ARM && RTC_DRV_CMOS) || GENERIC_NVRAM || HAVE_ARCH_NVRAM_OPS ---help--- If you say Y here and create a character special file /dev/nvram with major number 10 and minor number 144 using mknod ("man mknod"), Index: linux/arch/m68k/Kconfig =================================================================== --- linux.orig/arch/m68k/Kconfig 2015-07-12 20:24:53.000000000 +1000 +++ linux/arch/m68k/Kconfig 2015-07-12 20:25:05.000000000 +1000 @@ -71,6 +71,9 @@ config PGTABLE_LEVELS default 2 if SUN3 || COLDFIRE default 3 +config HAVE_ARCH_NVRAM_OPS + bool + source "init/Kconfig" source "kernel/Kconfig.freezer" Index: linux/arch/m68k/Kconfig.machine =================================================================== --- linux.orig/arch/m68k/Kconfig.machine 2015-07-12 20:24:53.000000000 +1000 +++ linux/arch/m68k/Kconfig.machine 2015-07-12 20:25:05.000000000 +1000 @@ -15,6 +15,7 @@ config ATARI bool "Atari support" depends on MMU select MMU_MOTOROLA if MMU + select HAVE_ARCH_NVRAM_OPS help This option enables support for the 68000-based Atari series of computers (including the TT, Falcon and Medusa). If you plan to use