cregit-Linux how code gets into the kernel

Release 4.14 samples/blackfin/gptimers-example.c

Directory: samples/blackfin
/*
 * Simple gptimers example
 *      http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:drivers:gptimers
 *
 * Copyright 2007-2009 Analog Devices Inc.
 *
 * Licensed under the GPL-2 or later.
 */

#include <linux/interrupt.h>
#include <linux/module.h>

#include <asm/gptimers.h>
#include <asm/portmux.h>

/* ... random driver includes ... */


#define DRIVER_NAME "gptimer_example"

#ifdef IRQ_TIMER5

#define SAMPLE_IRQ_TIMER IRQ_TIMER5
#else

#define SAMPLE_IRQ_TIMER IRQ_TIMER2
#endif


struct gptimer_data {
	

uint32_t period, width;
};

static struct gptimer_data data;

/* ... random driver state ... */


static irqreturn_t gptimer_example_irq(int irq, void *dev_id) { struct gptimer_data *data = dev_id; /* make sure it was our timer which caused the interrupt */ if (!get_gptimer_intr(TIMER5_id)) return IRQ_NONE; /* read the width/period values that were captured for the waveform */ data->width = get_gptimer_pwidth(TIMER5_id); data->period = get_gptimer_period(TIMER5_id); /* acknowledge the interrupt */ clear_gptimer_intr(TIMER5_id); /* tell the upper layers we took care of things */ return IRQ_HANDLED; }

Contributors

PersonTokensPropCommitsCommitProp
Mike Frysinger61100.00%1100.00%
Total61100.00%1100.00%

/* ... random driver code ... */
static int __init gptimer_example_init(void) { int ret; /* grab the peripheral pins */ ret = peripheral_request(P_TMR5, DRIVER_NAME); if (ret) { printk(KERN_NOTICE DRIVER_NAME ": peripheral request failed\n"); return ret; } /* grab the IRQ for the timer */ ret = request_irq(SAMPLE_IRQ_TIMER, gptimer_example_irq, IRQF_SHARED, DRIVER_NAME, &data); if (ret) { printk(KERN_NOTICE DRIVER_NAME ": IRQ request failed\n"); peripheral_free(P_TMR5); return ret; } /* setup the timer and enable it */ set_gptimer_config(TIMER5_id, WDTH_CAP | PULSE_HI | PERIOD_CNT | IRQ_ENA); enable_gptimers(TIMER5bit); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Mike Frysinger9598.96%150.00%
Chen Gang11.04%150.00%
Total96100.00%2100.00%

module_init(gptimer_example_init);
static void __exit gptimer_example_exit(void) { disable_gptimers(TIMER5bit); free_irq(SAMPLE_IRQ_TIMER, &data); peripheral_free(P_TMR5); }

Contributors

PersonTokensPropCommitsCommitProp
Mike Frysinger2696.30%150.00%
Chen Gang13.70%150.00%
Total27100.00%2100.00%

module_exit(gptimer_example_exit); MODULE_LICENSE("BSD");

Overall Contributors

PersonTokensPropCommitsCommitProp
Mike Frysinger23293.17%150.00%
Chen Gang176.83%150.00%
Total249100.00%2100.00%
Directory: samples/blackfin
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.