cregit-Linux how code gets into the kernel

Release 4.11 arch/m68k/mvme147/config.c

/*
 *  arch/m68k/mvme147/config.c
 *
 *  Copyright (C) 1996 Dave Frascone [chaos@mindspring.com]
 *  Cloned from        Richard Hirst [richard@sleepie.demon.co.uk]
 *
 * Based on:
 *
 *  Copyright (C) 1993 Hamish Macdonald
 *
 * This file is subject to the terms and conditions of the GNU General Public
 * License.  See the file README.legal in the main directory of this archive
 * for more details.
 */

#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/mm.h>
#include <linux/tty.h>
#include <linux/console.h>
#include <linux/linkage.h>
#include <linux/init.h>
#include <linux/major.h>
#include <linux/genhd.h>
#include <linux/rtc.h>
#include <linux/interrupt.h>

#include <asm/bootinfo.h>
#include <asm/bootinfo-vme.h>
#include <asm/byteorder.h>
#include <asm/pgtable.h>
#include <asm/setup.h>
#include <asm/irq.h>
#include <asm/traps.h>
#include <asm/machdep.h>
#include <asm/mvme147hw.h>


static void mvme147_get_model(char *model);
extern void mvme147_sched_init(irq_handler_t handler);
extern u32 mvme147_gettimeoffset(void);
extern int mvme147_hwclk (int, struct rtc_time *);
extern int mvme147_set_clock_mmss (unsigned long);
extern void mvme147_reset (void);


static int bcd2int (unsigned char b);

/* Save tick handler routine pointer, will point to xtime_update() in
 * kernel/time/timekeeping.c, called via mvme147_process_int() */


irq_handler_t tick_handler;



int __init mvme147_parse_bootinfo(const struct bi_record *bi) { uint16_t tag = be16_to_cpu(bi->tag); if (tag == BI_VME_TYPE || tag == BI_VME_BRDINFO) return 0; else return 1; }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)2871.79%133.33%
Geert Uytterhoeven1128.21%266.67%
Total39100.00%3100.00%


void mvme147_reset(void) { pr_info("\r\n\nCalled mvme147_reset\r\n"); m147_pcc->watchdog = 0x0a; /* Clear timer */ m147_pcc->watchdog = 0xa5; /* Enable watchdog - 100ms to reset */ while (1) ; }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)2787.10%133.33%
Geert Uytterhoeven412.90%266.67%
Total31100.00%3100.00%


static void mvme147_get_model(char *model) { sprintf(model, "Motorola MVME147"); }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)17100.00%1100.00%
Total17100.00%1100.00%

/* * This function is called during kernel startup to initialize * the mvme147 IRQ handling routines. */
void __init mvme147_init_IRQ(void) { m68k_setup_user_interrupt(VEC_USER, 192); }

Contributors

PersonTokensPropCommitsCommitProp
Roman Zippel1493.33%150.00%
Al Viro16.67%150.00%
Total15100.00%2100.00%


void __init config_mvme147(void) { mach_max_dma_address = 0x01000000; mach_sched_init = mvme147_sched_init; mach_init_IRQ = mvme147_init_IRQ; arch_gettimeoffset = mvme147_gettimeoffset; mach_hwclk = mvme147_hwclk; mach_set_clock_mmss = mvme147_set_clock_mmss; mach_reset = mvme147_reset; mach_get_model = mvme147_get_model; /* Board type is only set by newer versions of vmelilo/tftplilo */ if (!vme_brdtype) vme_brdtype = VME_TYPE_MVME147; }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)4998.00%480.00%
Stephen Warren12.00%120.00%
Total50100.00%5100.00%

/* Using pcc tick timer 1 */
static irqreturn_t mvme147_timer_int (int irq, void *dev_id) { m147_pcc->t1_int_cntrl = PCC_TIMER_INT_CLR; m147_pcc->t1_int_cntrl = PCC_INT_ENAB|PCC_LEVEL_TIMER1; return tick_handler(irq, dev_id); }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)3291.43%150.00%
Geert Uytterhoeven38.57%150.00%
Total35100.00%2100.00%


void mvme147_sched_init (irq_handler_t timer_routine) { tick_handler = timer_routine; if (request_irq(PCC_IRQ_TIMER1, mvme147_timer_int, 0, "timer 1", NULL)) pr_err("Couldn't register timer interrupt\n"); /* Init the clock with a value */ /* our clock goes off every 6.25us */ m147_pcc->t1_preload = PCC_TIMER_PRELOAD; m147_pcc->t1_cntrl = 0x0; /* clear timer */ m147_pcc->t1_cntrl = 0x3; /* start timer */ m147_pcc->t1_int_cntrl = PCC_TIMER_INT_CLR; /* clear pending ints */ m147_pcc->t1_int_cntrl = PCC_INT_ENAB|PCC_LEVEL_TIMER1; }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)6086.96%125.00%
Geert Uytterhoeven811.59%250.00%
David Howells11.45%125.00%
Total69100.00%4100.00%

/* This is always executed with interrupts disabled. */ /* XXX There are race hazards in this code XXX */
u32 mvme147_gettimeoffset(void) { volatile unsigned short *cp = (volatile unsigned short *)0xfffe1012; unsigned short n; n = *cp; while (n != *cp) n = *cp; n -= PCC_TIMER_PRELOAD; return ((unsigned long)n * 25 / 4) * 1000; }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)5691.80%150.00%
Stephen Warren58.20%150.00%
Total61100.00%2100.00%


static int bcd2int (unsigned char b) { return ((b>>4)*10 + (b&15)); }

Contributors

PersonTokensPropCommitsCommitProp
Roman Zippel2696.30%150.00%
Linus Torvalds (pre-git)13.70%150.00%
Total27100.00%2100.00%


int mvme147_hwclk(int op, struct rtc_time *t) { #warning check me! if (!op) { m147_rtc->ctrl = RTC_READ; t->tm_year = bcd2int (m147_rtc->bcd_year); t->tm_mon = bcd2int (m147_rtc->bcd_mth); t->tm_mday = bcd2int (m147_rtc->bcd_dom); t->tm_hour = bcd2int (m147_rtc->bcd_hr); t->tm_min = bcd2int (m147_rtc->bcd_min); t->tm_sec = bcd2int (m147_rtc->bcd_sec); m147_rtc->ctrl = 0; } return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)7168.27%150.00%
Roman Zippel3331.73%150.00%
Total104100.00%2100.00%


int mvme147_set_clock_mmss (unsigned long nowtime) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)12100.00%1100.00%
Total12100.00%1100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)45978.06%420.00%
Roman Zippel7512.76%210.00%
Geert Uytterhoeven416.97%1050.00%
Stephen Warren71.19%15.00%
David Howells40.68%15.00%
Al Viro10.17%15.00%
Torben Hohn10.17%15.00%
Total588100.00%20100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.