#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/netdevice.h>
#include <linux/delay.h>
#include <linux/timer.h>
#include <linux/io.h>
#include <pcmcia/cistpl.h>
#include <pcmcia/ds.h>
#include <linux/can.h>
#include <linux/can/dev.h>
#include "sja1000.h"
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
#define PCC_NAME …
#define PCC_CHAN_MAX …
#define PCC_CAN_CLOCK …
#define PCC_MANF_ID …
#define PCC_CARD_ID …
#define PCC_CHAN_SIZE …
#define PCC_CHAN_OFF(c) …
#define PCC_COMN_OFF …
#define PCC_COMN_SIZE …
#define PCC_CCR …
#define PCC_CSR …
#define PCC_CPR …
#define PCC_SPI_DIR …
#define PCC_SPI_DOR …
#define PCC_SPI_ADR …
#define PCC_SPI_IR …
#define PCC_FW_MAJOR …
#define PCC_FW_MINOR …
#define PCC_CCR_CLK_16 …
#define PCC_CCR_CLK_10 …
#define PCC_CCR_CLK_21 …
#define PCC_CCR_CLK_8 …
#define PCC_CCR_CLK_MASK …
#define PCC_CCR_RST_CHAN(c) …
#define PCC_CCR_RST_ALL …
#define PCC_CCR_RST_MASK …
#define PCC_LED(c) …
#define PCC_LED_ALL …
#define PCC_LED_ON …
#define PCC_LED_FAST …
#define PCC_LED_SLOW …
#define PCC_LED_OFF …
#define PCC_CCR_LED_CHAN(s, c) …
#define PCC_CCR_LED_ON_CHAN(c) …
#define PCC_CCR_LED_FAST_CHAN(c) …
#define PCC_CCR_LED_SLOW_CHAN(c) …
#define PCC_CCR_LED_OFF_CHAN(c) …
#define PCC_CCR_LED_MASK_CHAN(c) …
#define PCC_CCR_LED_OFF_ALL …
#define PCC_CCR_LED_MASK …
#define PCC_CCR_INIT …
#define PCC_CSR_SPI_BUSY …
#define PCC_SPI_MAX_BUSY_WAIT_MS …
#define PCC_WRITE_MAX_LOOP …
#define PCC_ISR_MAX_LOOP …
#define PCC_EEP_WRITE(a) …
#define PCC_EEP_READ(a) …
#define PCC_EEP_WRDI …
#define PCC_EEP_RDSR …
#define PCC_EEP_WREN …
#define PCC_EEP_SR_WEN …
#define PCC_EEP_SR_WIP …
#define PCC_OCR …
#define PCC_CDR …
struct pcan_channel { … };
struct pcan_pccard { … };
static struct pcmcia_device_id pcan_table[] = …;
MODULE_DEVICE_TABLE(pcmcia, pcan_table);
static void pcan_set_leds(struct pcan_pccard *card, u8 mask, u8 state);
static void pcan_start_led_timer(struct pcan_pccard *card)
{ … }
static void pcan_stop_led_timer(struct pcan_pccard *card)
{ … }
static u8 pcan_read_canreg(const struct sja1000_priv *priv, int port)
{ … }
static void pcan_write_canreg(const struct sja1000_priv *priv, int port, u8 v)
{ … }
static u8 pcan_read_reg(struct pcan_pccard *card, int port)
{ … }
static void pcan_write_reg(struct pcan_pccard *card, int port, u8 v)
{ … }
static inline int pcan_pccard_present(struct pcan_pccard *card)
{ … }
static int pcan_wait_spi_busy(struct pcan_pccard *card)
{ … }
static int pcan_write_eeprom(struct pcan_pccard *card, u16 addr, u8 v)
{ … }
static void pcan_set_leds(struct pcan_pccard *card, u8 led_mask, u8 state)
{ … }
static inline void pcan_set_can_power(struct pcan_pccard *card, int onoff)
{ … }
static void pcan_led_timer(struct timer_list *t)
{ … }
static irqreturn_t pcan_isr(int irq, void *dev_id)
{ … }
static void pcan_free_channels(struct pcan_pccard *card)
{ … }
static inline int pcan_channel_present(struct sja1000_priv *priv)
{ … }
static int pcan_add_channels(struct pcan_pccard *card)
{ … }
static int pcan_conf_check(struct pcmcia_device *pdev, void *priv_data)
{ … }
static void pcan_free(struct pcmcia_device *pdev)
{ … }
static int pcan_probe(struct pcmcia_device *pdev)
{ … }
static void pcan_remove(struct pcmcia_device *pdev)
{ … }
static struct pcmcia_driver pcan_driver = …;
module_pcmcia_driver(…);