proc: move /proc/hardware to m68k-specific code
authorAlexey Dobriyan <adobriyan@gmail.com>
Fri, 3 Oct 2008 18:42:36 +0000 (22:42 +0400)
committerAlexey Dobriyan <adobriyan@gmail.com>
Thu, 23 Oct 2008 10:24:03 +0000 (14:24 +0400)
Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
arch/m68k/amiga/config.c
arch/m68k/atari/config.c
arch/m68k/bvme6000/config.c
arch/m68k/kernel/setup.c
arch/m68k/mvme147/config.c
arch/m68k/mvme16x/config.c
arch/m68k/q40/config.c
arch/m68k/sun3/config.c
arch/m68k/sun3x/config.c
fs/proc/proc_misc.c
include/asm-m68k/machdep.h

index 0a3f9e8ebde0db468365abf2a429a11a04c1e934..ab9862c3a136f4bc49f744b04bd2feae51912e83 100644 (file)
@@ -15,6 +15,7 @@
 #include <linux/types.h>
 #include <linux/kernel.h>
 #include <linux/mm.h>
+#include <linux/seq_file.h>
 #include <linux/tty.h>
 #include <linux/console.h>
 #include <linux/rtc.h>
@@ -93,7 +94,7 @@ static char amiga_model_name[13] = "Amiga ";
 
 static void amiga_sched_init(irq_handler_t handler);
 static void amiga_get_model(char *model);
-static int amiga_get_hardware_list(char *buffer);
+static void amiga_get_hardware_list(struct seq_file *m);
 /* amiga specific timer functions */
 static unsigned long amiga_gettimeoffset(void);
 static int a3000_hwclk(int, struct rtc_time *);
@@ -911,13 +912,11 @@ static void amiga_get_model(char *model)
 }
 
 
-static int amiga_get_hardware_list(char *buffer)
+static void amiga_get_hardware_list(struct seq_file *m)
 {
-       int len = 0;
-
        if (AMIGAHW_PRESENT(CHIP_RAM))
-               len += sprintf(buffer+len, "Chip RAM:\t%ldK\n", amiga_chip_size>>10);
-       len += sprintf(buffer+len, "PS Freq:\t%dHz\nEClock Freq:\t%ldHz\n",
+               seq_printf(m, "Chip RAM:\t%ldK\n", amiga_chip_size>>10);
+       seq_printf(m, "PS Freq:\t%dHz\nEClock Freq:\t%ldHz\n",
                        amiga_psfreq, amiga_eclock);
        if (AMIGAHW_PRESENT(AMI_VIDEO)) {
                char *type;
@@ -935,14 +934,14 @@ static int amiga_get_hardware_list(char *buffer)
                        type = "Old or Unknown";
                        break;
                }
-               len += sprintf(buffer+len, "Graphics:\t%s\n", type);
+               seq_printf(m, "Graphics:\t%s\n", type);
        }
 
 #define AMIGAHW_ANNOUNCE(name, str)                    \
        if (AMIGAHW_PRESENT(name))                      \
-               len += sprintf (buffer+len, "\t%s\n", str)
+               seq_printf (m, "\t%s\n", str)
 
-       len += sprintf (buffer + len, "Detected hardware:\n");
+       seq_printf (m, "Detected hardware:\n");
 
        AMIGAHW_ANNOUNCE(AMI_VIDEO, "Amiga Video");
        AMIGAHW_ANNOUNCE(AMI_BLITTER, "Blitter");
@@ -975,15 +974,13 @@ static int amiga_get_hardware_list(char *buffer)
        AMIGAHW_ANNOUNCE(PCMCIA, "PCMCIA Slot");
 #ifdef CONFIG_ZORRO
        if (AMIGAHW_PRESENT(ZORRO))
-               len += sprintf(buffer+len, "\tZorro II%s AutoConfig: %d Expansion "
+               seq_printf(m, "\tZorro II%s AutoConfig: %d Expansion "
                                "Device%s\n",
                                AMIGAHW_PRESENT(ZORRO3) ? "I" : "",
                                zorro_num_autocon, zorro_num_autocon == 1 ? "" : "s");
 #endif /* CONFIG_ZORRO */
 
 #undef AMIGAHW_ANNOUNCE
-
-       return len;
 }
 
 /*
index af031855f796f4b61bd716f092d5065c97d1bc12..49c28cdbea5c5bf6cc89d00be99eee339900838c 100644 (file)
@@ -26,6 +26,7 @@
 
 #include <linux/types.h>
 #include <linux/mm.h>
+#include <linux/seq_file.h>
 #include <linux/console.h>
 #include <linux/init.h>
 #include <linux/delay.h>
@@ -63,7 +64,7 @@ int atari_rtc_year_offset;
 /* local function prototypes */
 static void atari_reset(void);
 static void atari_get_model(char *model);
-static int atari_get_hardware_list(char *buffer);
+static void atari_get_hardware_list(struct seq_file *m);
 
 /* atari specific irq functions */
 extern void atari_init_IRQ (void);
@@ -611,21 +612,21 @@ static void atari_get_model(char *model)
 }
 
 
-static int atari_get_hardware_list(char *buffer)
+static void atari_get_hardware_list(struct seq_file *m)
 {
-       int len = 0, i;
+       int i;
 
        for (i = 0; i < m68k_num_memory; i++)
-               len += sprintf(buffer+len, "\t%3ld MB at 0x%08lx (%s)\n",
+               seq_printf(m, "\t%3ld MB at 0x%08lx (%s)\n",
                                m68k_memory[i].size >> 20, m68k_memory[i].addr,
                                (m68k_memory[i].addr & 0xff000000 ?
                                 "alternate RAM" : "ST-RAM"));
 
 #define ATARIHW_ANNOUNCE(name, str)                    \
        if (ATARIHW_PRESENT(name))                      \
-               len += sprintf(buffer + len, "\t%s\n", str)
+               seq_printf(m, "\t%s\n", str)
 
-       len += sprintf(buffer + len, "Detected hardware:\n");
+       seq_printf(m, "Detected hardware:\n");
        ATARIHW_ANNOUNCE(STND_SHIFTER, "ST Shifter");
        ATARIHW_ANNOUNCE(EXTD_SHIFTER, "STe Shifter");
        ATARIHW_ANNOUNCE(TT_SHIFTER, "TT Shifter");
@@ -654,6 +655,4 @@ static int atari_get_hardware_list(char *buffer)
        ATARIHW_ANNOUNCE(BLITTER, "Blitter");
        ATARIHW_ANNOUNCE(VME, "VME Bus");
        ATARIHW_ANNOUNCE(DSP56K, "DSP56001 processor");
-
-       return len;
 }
index 65c9204ab9ac626aaec3066967bdce9b1792ea60..c072595928c06d0496df7ec0b9a197b763709925 100644 (file)
@@ -38,7 +38,6 @@
 #include <asm/bvme6000hw.h>
 
 static void bvme6000_get_model(char *model);
-static int  bvme6000_get_hardware_list(char *buffer);
 extern void bvme6000_sched_init(irq_handler_t handler);
 extern unsigned long bvme6000_gettimeoffset (void);
 extern int bvme6000_hwclk (int, struct rtc_time *);
@@ -82,15 +81,6 @@ static void bvme6000_get_model(char *model)
     sprintf(model, "BVME%d000", m68k_cputype == CPU_68060 ? 6 : 4);
 }
 
-
-/* No hardware options on BVME6000? */
-
-static int bvme6000_get_hardware_list(char *buffer)
-{
-    *buffer = '\0';
-    return 0;
-}
-
 /*
  * This function is called during kernel startup to initialize
  * the bvme6000 IRQ handling routines.
@@ -127,7 +117,6 @@ void __init config_bvme6000(void)
     mach_set_clock_mmss         = bvme6000_set_clock_mmss;
     mach_reset          = bvme6000_reset;
     mach_get_model       = bvme6000_get_model;
-    mach_get_hardware_list = bvme6000_get_hardware_list;
 
     printk ("Board is %sconfigured as a System Controller\n",
                *config_reg_ptr & BVME_CONFIG_SW1 ? "" : "not ");
index ea1e44da19b9145a2cccd159488b0d427902f10e..4d97bd2bd573845db42d11b8b03c096b5148eac9 100644 (file)
@@ -20,6 +20,7 @@
 #include <linux/string.h>
 #include <linux/init.h>
 #include <linux/bootmem.h>
+#include <linux/proc_fs.h>
 #include <linux/seq_file.h>
 #include <linux/module.h>
 #include <linux/initrd.h>
@@ -80,7 +81,7 @@ void (*mach_sched_init) (irq_handler_t handler) __initdata = NULL;
 /* machine dependent irq functions */
 void (*mach_init_IRQ) (void) __initdata = NULL;
 void (*mach_get_model) (char *model);
-int (*mach_get_hardware_list) (char *buffer);
+void (*mach_get_hardware_list) (struct seq_file *m);
 /* machine dependent timer functions */
 unsigned long (*mach_gettimeoffset) (void);
 int (*mach_hwclk) (int, struct rtc_time*);
@@ -467,9 +468,9 @@ const struct seq_operations cpuinfo_op = {
        .show   = show_cpuinfo,
 };
 
-int get_hardware_list(char *buffer)
+#ifdef CONFIG_PROC_HARDWARE
+static int hardware_proc_show(struct seq_file *m, void *v)
 {
-       int len = 0;
        char model[80];
        unsigned long mem;
        int i;
@@ -479,17 +480,37 @@ int get_hardware_list(char *buffer)
        else
                strcpy(model, "Unknown m68k");
 
-       len += sprintf(buffer + len, "Model:\t\t%s\n", model);
+       seq_printf(m, "Model:\t\t%s\n", model);
        for (mem = 0, i = 0; i < m68k_num_memory; i++)
                mem += m68k_memory[i].size;
-       len += sprintf(buffer + len, "System Memory:\t%ldK\n", mem >> 10);
+       seq_printf(m, "System Memory:\t%ldK\n", mem >> 10);
 
        if (mach_get_hardware_list)
-               len += mach_get_hardware_list(buffer + len);
+               mach_get_hardware_list(m);
 
-       return len;
+       return 0;
+}
+
+static int hardware_proc_open(struct inode *inode, struct file *file)
+{
+       return single_open(file, hardware_proc_show, NULL);
 }
 
+static const struct file_operations hardware_proc_fops = {
+       .open           = hardware_proc_open,
+       .read           = seq_read,
+       .llseek         = seq_lseek,
+       .release        = single_release,
+};
+
+static int __init proc_hardware_init(void)
+{
+       proc_create("hardware", 0, NULL, &hardware_proc_fops);
+       return 0;
+}
+module_init(proc_hardware_init);
+#endif
+
 void check_bugs(void)
 {
 #ifndef CONFIG_M68KFPU_EMU
index 92fe507141126fd566973e9598c86dd31e9eb389..43cdf476ffab17cd690b1bb8e8abba98082755a4 100644 (file)
@@ -37,7 +37,6 @@
 
 
 static void mvme147_get_model(char *model);
-static int  mvme147_get_hardware_list(char *buffer);
 extern void mvme147_sched_init(irq_handler_t handler);
 extern unsigned long mvme147_gettimeoffset (void);
 extern int mvme147_hwclk (int, struct rtc_time *);
@@ -76,14 +75,6 @@ static void mvme147_get_model(char *model)
        sprintf(model, "Motorola MVME147");
 }
 
-
-static int mvme147_get_hardware_list(char *buffer)
-{
-       *buffer = '\0';
-
-       return 0;
-}
-
 /*
  * This function is called during kernel startup to initialize
  * the mvme147 IRQ handling routines.
@@ -104,7 +95,6 @@ void __init config_mvme147(void)
        mach_set_clock_mmss     = mvme147_set_clock_mmss;
        mach_reset              = mvme147_reset;
        mach_get_model          = mvme147_get_model;
-       mach_get_hardware_list  = mvme147_get_hardware_list;
 
        /* Board type is only set by newer versions of vmelilo/tftplilo */
        if (!vme_brdtype)
index 24cbc3030454aed4a76e847cfed91f415d8fc33b..1521826fc3c7caef9a62935a2bde21f0f6135378 100644 (file)
@@ -17,6 +17,7 @@
 #include <linux/types.h>
 #include <linux/kernel.h>
 #include <linux/mm.h>
+#include <linux/seq_file.h>
 #include <linux/tty.h>
 #include <linux/console.h>
 #include <linux/linkage.h>
@@ -42,7 +43,6 @@ extern t_bdid mvme_bdid;
 static MK48T08ptr_t volatile rtc = (MK48T08ptr_t)MVME_RTC_BASE;
 
 static void mvme16x_get_model(char *model);
-static int  mvme16x_get_hardware_list(char *buffer);
 extern void mvme16x_sched_init(irq_handler_t handler);
 extern unsigned long mvme16x_gettimeoffset (void);
 extern int mvme16x_hwclk (int, struct rtc_time *);
@@ -93,26 +93,21 @@ static void mvme16x_get_model(char *model)
 }
 
 
-static int mvme16x_get_hardware_list(char *buffer)
+static void mvme16x_get_hardware_list(struct seq_file *m)
 {
     p_bdid p = &mvme_bdid;
-    int len = 0;
 
     if (p->brdno == 0x0162 || p->brdno == 0x0172)
     {
        unsigned char rev = *(unsigned char *)MVME162_VERSION_REG;
 
-       len += sprintf (buffer+len, "VMEchip2        %spresent\n",
+       seq_printf (m, "VMEchip2        %spresent\n",
                        rev & MVME16x_CONFIG_NO_VMECHIP2 ? "NOT " : "");
-       len += sprintf (buffer+len, "SCSI interface  %spresent\n",
+       seq_printf (m, "SCSI interface  %spresent\n",
                        rev & MVME16x_CONFIG_NO_SCSICHIP ? "NOT " : "");
-       len += sprintf (buffer+len, "Ethernet i/f    %spresent\n",
+       seq_printf (m, "Ethernet i/f    %spresent\n",
                        rev & MVME16x_CONFIG_NO_ETHERNET ? "NOT " : "");
     }
-    else
-       *buffer = '\0';
-
-    return (len);
 }
 
 /*
index 9c7eefa3f98a133bd53d767b0edbf3f622993416..7110546e3c00f412dcc88c7ad69111feb890d339 100644 (file)
@@ -39,7 +39,6 @@
 extern irqreturn_t q40_process_int(int level, struct pt_regs *regs);
 extern void q40_init_IRQ(void);
 static void q40_get_model(char *model);
-static int  q40_get_hardware_list(char *buffer);
 extern void q40_sched_init(irq_handler_t handler);
 
 static unsigned long q40_gettimeoffset(void);
@@ -153,14 +152,6 @@ static void q40_get_model(char *model)
        sprintf(model, "Q40");
 }
 
-/* No hardware options on Q40? */
-
-static int q40_get_hardware_list(char *buffer)
-{
-       *buffer = '\0';
-       return 0;
-}
-
 static unsigned int serports[] =
 {
        0x3f8,0x2f8,0x3e8,0x2e8,0
@@ -191,7 +182,6 @@ void __init config_q40(void)
 
        mach_reset = q40_reset;
        mach_get_model = q40_get_model;
-       mach_get_hardware_list = q40_get_hardware_list;
 
 #if defined(CONFIG_INPUT_M68K_BEEP) || defined(CONFIG_INPUT_M68K_BEEP_MODULE)
        mach_beep = q40_mksound;
index 732087d0735cf53d02e80d9f18fa63e24208429a..8dfaa201342e142726fc7d4671649da57148040a 100644 (file)
@@ -11,6 +11,7 @@
 #include <linux/types.h>
 #include <linux/kernel.h>
 #include <linux/mm.h>
+#include <linux/seq_file.h>
 #include <linux/tty.h>
 #include <linux/console.h>
 #include <linux/init.h>
@@ -46,16 +47,9 @@ extern volatile unsigned char* sun3_intreg;
 extern unsigned long availmem;
 unsigned long num_pages;
 
-static int sun3_get_hardware_list(char *buffer)
+static void sun3_get_hardware_list(struct seq_file *m)
 {
-
-       int len = 0;
-
-       len += sprintf(buffer + len, "PROM Revision:\t%s\n",
-                      romvec->pv_monid);
-
-       return len;
-
+       seq_printf(m, "PROM Revision:\t%s\n", romvec->pv_monid);
 }
 
 void __init sun3_init(void)
index 987891783a472f64662ba93b2093639aebcd0960..2b1ca2db070fc429e25cfb9ae9140c5b26f8cbe9 100644 (file)
@@ -8,6 +8,7 @@
 
 #include <linux/types.h>
 #include <linux/mm.h>
+#include <linux/seq_file.h>
 #include <linux/console.h>
 #include <linux/init.h>
 
@@ -31,16 +32,9 @@ void sun3_leds(unsigned int i)
 
 }
 
-static int sun3x_get_hardware_list(char *buffer)
+static void sun3x_get_hardware_list(struct seq_file *m)
 {
-
-       int len = 0;
-
-       len += sprintf(buffer + len, "PROM Revision:\t%s\n",
-                      romvec->pv_monid);
-
-       return len;
-
+       seq_printf(m, "PROM Revision:\t%s\n", romvec->pv_monid);
 }
 
 /*
index 4814b111d836ee382e28ea8d45635c99acfd0b2f..542527f6630f523e64a4151a90f6319d4b439d84 100644 (file)
@@ -63,7 +63,6 @@
  * have a way to deal with that gracefully. Right now I used straightforward
  * wrappers, but this needs further analysis wrt potential overflows.
  */
-extern int get_hardware_list(char *);
 extern int get_stram_list(char *);
 extern int get_exec_domain_list(char *);
 
@@ -198,15 +197,6 @@ static const struct file_operations proc_vmstat_file_operations = {
        .release        = seq_release,
 };
 
-#ifdef CONFIG_PROC_HARDWARE
-static int hardware_read_proc(char *page, char **start, off_t off,
-                                int count, int *eof, void *data)
-{
-       int len = get_hardware_list(page);
-       return proc_calc_metrics(page, start, off, count, eof, len);
-}
-#endif
-
 #ifdef CONFIG_STRAM_PROC
 static int stram_read_proc(char *page, char **start, off_t off,
                                 int count, int *eof, void *data)
@@ -668,9 +658,6 @@ void __init proc_misc_init(void)
                char *name;
                int (*read_proc)(char*,char**,off_t,int,int*,void*);
        } *p, simple_ones[] = {
-#ifdef CONFIG_PROC_HARDWARE
-               {"hardware",    hardware_read_proc},
-#endif
 #ifdef CONFIG_STRAM_PROC
                {"stram",       stram_read_proc},
 #endif
index 26d2b91209c5e9f701341865300b0a9cccf2a952..5637dcef314ec2c85ba65f98d8013d117486ed1b 100644 (file)
@@ -14,7 +14,7 @@ extern void (*mach_sched_init) (irq_handler_t handler);
 /* machine dependent irq functions */
 extern void (*mach_init_IRQ) (void);
 extern void (*mach_get_model) (char *model);
-extern int (*mach_get_hardware_list) (char *buffer);
+extern void (*mach_get_hardware_list) (struct seq_file *m);
 /* machine dependent timer functions */
 extern unsigned long (*mach_gettimeoffset)(void);
 extern int (*mach_hwclk)(int, struct rtc_time*);