cregit-Linux how code gets into the kernel

Release 4.14 arch/sh/cchips/hd6446x/hd64461.c

// SPDX-License-Identifier: GPL-2.0
/*
 *      Copyright (C) 2000 YAEGASHI Takeshi
 *      Hitachi HD64461 companion chip support
 */

#include <linux/sched.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/param.h>
#include <linux/interrupt.h>
#include <linux/init.h>
#include <linux/irq.h>
#include <linux/io.h>
#include <asm/irq.h>
#include <asm/hd64461.h>

/* This belongs in cpu specific */

#define INTC_ICR1 0xA4140010UL


static void hd64461_mask_irq(struct irq_data *data) { unsigned int irq = data->irq; unsigned short nimr; unsigned short mask = 1 << (irq - HD64461_IRQBASE); nimr = __raw_readw(HD64461_NIMR); nimr |= mask; __raw_writew(nimr, HD64461_NIMR); }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)3973.58%133.33%
Paul Mundt1120.75%133.33%
Matt Fleming35.66%133.33%
Total53100.00%3100.00%


static void hd64461_unmask_irq(struct irq_data *data) { unsigned int irq = data->irq; unsigned short nimr; unsigned short mask = 1 << (irq - HD64461_IRQBASE); nimr = __raw_readw(HD64461_NIMR); nimr &= ~mask; __raw_writew(nimr, HD64461_NIMR); }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)4074.07%133.33%
Paul Mundt1120.37%133.33%
Matt Fleming35.56%133.33%
Total54100.00%3100.00%


static void hd64461_mask_and_ack_irq(struct irq_data *data) { hd64461_mask_irq(data); #ifdef CONFIG_HD64461_ENABLER if (data->irq == HD64461_IRQBASE + 13) __raw_writeb(0x00, HD64461_PCC1CSCR); #endif }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)2873.68%133.33%
Paul Mundt718.42%133.33%
Matt Fleming37.89%133.33%
Total38100.00%3100.00%

static struct irq_chip hd64461_irq_chip = { .name = "HD64461-IRQ", .irq_mask = hd64461_mask_irq, .irq_mask_ack = hd64461_mask_and_ack_irq, .irq_unmask = hd64461_unmask_irq, };
static void hd64461_irq_demux(struct irq_desc *desc) { unsigned short intv = __raw_readw(HD64461_NIRR); unsigned int ext_irq = HD64461_IRQBASE; intv &= (1 << HD64461_IRQ_NUM) - 1; for (; intv; intv >>= 1, ext_irq++) { if (!(intv & 1)) continue; generic_handle_irq(ext_irq); } }

Contributors

PersonTokensPropCommitsCommitProp
Rafael Ignacio Zurita2741.54%120.00%
Linus Torvalds (pre-git)1929.23%120.00%
Paul Mundt1726.15%240.00%
Andrew Morton23.08%120.00%
Total65100.00%5100.00%


int __init setup_hd64461(void) { int irq_base, i; printk(KERN_INFO "HD64461 configured at 0x%x on irq %d(mapped into %d to %d)\n", HD64461_IOBASE, CONFIG_HD64461_IRQ, HD64461_IRQBASE, HD64461_IRQBASE + 15); /* Should be at processor specific part.. */ #if defined(CONFIG_CPU_SUBTYPE_SH7709) __raw_writew(0x2240, INTC_ICR1); #endif __raw_writew(0xffff, HD64461_NIMR); irq_base = irq_alloc_descs(HD64461_IRQBASE, HD64461_IRQBASE, 16, -1); if (IS_ERR_VALUE(irq_base)) { pr_err("%s: failed hooking irqs for HD64461\n", __func__); return irq_base; } for (i = 0; i < 16; i++) irq_set_chip_and_handler(irq_base + i, &hd64461_irq_chip, handle_level_irq); irq_set_chained_handler(CONFIG_HD64461_IRQ, hd64461_irq_demux); irq_set_irq_type(CONFIG_HD64461_IRQ, IRQ_TYPE_LEVEL_LOW); #ifdef CONFIG_HD64461_ENABLER printk(KERN_INFO "HD64461: enabling PCMCIA devices\n"); __raw_writeb(0x4c, HD64461_PCC1CSCIER); __raw_writeb(0x00, HD64461_PCC1CSCR); #endif return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)7348.03%222.22%
Paul Mundt4831.58%333.33%
Rafael Ignacio Zurita127.89%111.11%
Matt Fleming95.92%111.11%
Linus Torvalds74.61%111.11%
Thomas Gleixner31.97%111.11%
Total152100.00%9100.00%

module_init(setup_hd64461);

Overall Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)23855.22%211.11%
Paul Mundt9822.74%738.89%
Rafael Ignacio Zurita399.05%15.56%
Matt Fleming255.80%15.56%
Andrew Morton143.25%211.11%
Linus Torvalds71.62%15.56%
Kristoffer Ericson61.39%211.11%
Thomas Gleixner30.70%15.56%
Greg Kroah-Hartman10.23%15.56%
Total431100.00%18100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.