Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

irport.c File Reference

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/ioport.h>
#include <linux/malloc.h>
#include <linux/string.h>
#include <linux/skbuff.h>
#include <linux/serial_reg.h>
#include <linux/errno.h>
#include <linux/init.h>
#include <asm/spinlock.h>
#include <linux/rtnetlink.h>
#include <asm/system.h>
#include <asm/bitops.h>
#include <asm/io.h>
#include <net/irda/irda.h>
#include <net/irda/irmod.h>
#include <net/irda/wrapper.h>
#include <net/irda/irport.h>

Include dependency graph for irport.c:

Go to the source code of this file.

Defines

#define IO_EXTENT   8

Functions

static void irport_write_wakeup (struct irport_cb *self)
static int irport_write (int iobase, int fifo_size, __u8 *buf, int len)
static void irport_receive (struct irport_cb *self)
static int irport_net_init (struct device *dev)
static int irport_net_ioctl (struct device *dev, struct ifreq *rq, int cmd)
static int irport_is_receiving (struct irport_cb *self)
static int irport_set_dtr_rts (struct device *dev, int dtr, int rts)
static int irport_raw_write (struct device *dev, __u8 *buf, int len)
static struct net_device_statsirport_net_get_stats (struct device *dev)
static int irport_change_speed_complete (struct irda_task *task)
 EXPORT_SYMBOL (irport_open)
 EXPORT_SYMBOL (irport_close)
 EXPORT_SYMBOL (irport_start)
 EXPORT_SYMBOL (irport_stop)
 EXPORT_SYMBOL (irport_interrupt)
 EXPORT_SYMBOL (irport_hard_xmit)
 EXPORT_SYMBOL (irport_change_speed)
 EXPORT_SYMBOL (irport_net_open)
 EXPORT_SYMBOL (irport_net_close)
int __init irport_init (void)
irport_cbirport_open (int i, unsigned int iobase, unsigned int irq)
int irport_close (struct irport_cb *self)
void irport_start (struct irport_cb *self)
void irport_stop (struct irport_cb *self)
int irport_probe (int iobase)
void irport_change_speed (void *priv, __u32 speed)
int __irport_change_speed (struct irda_task *task)
int irport_hard_xmit (struct sk_buff *skb, struct device *dev)
void irport_interrupt (int irq, void *dev_id, struct pt_regs *regs)
int irport_net_open (struct device *dev)
int irport_net_close (struct device *dev)

Variables

static unsigned int io [] = { ~0, ~0, ~0, ~0 }
static unsigned int irq [] = { 0, 0, 0, 0 }
static unsigned int qos_mtt_bits = 0x03
static struct irport_cbdev_self [] = { NULL, NULL, NULL, NULL}
static char * driver_name = "irport"


Define Documentation

#define IO_EXTENT   8
 

Definition at line 62 of file irport.c.

Referenced by irport_init(), and irport_open().


Function Documentation

int __irport_change_speed struct irda_task task  ) 
 

Definition at line 406 of file irport.c.

References ASSERT, ERROR, irda_task::instance, IRDA_DEBUG, IRDA_TASK_CHILD_DONE, IRDA_TASK_CHILD_INIT, IRDA_TASK_CHILD_WAIT, IRDA_TASK_DONE, irda_task_execute(), IRDA_TASK_INIT, irda_task_next_state(), IRDA_TASK_WAIT, jiffies, MSECS_TO_JIFFIES, NULL, irda_task::param, ret, speed, irda_task::state, and WARNING.

Referenced by irport_net_ioctl(), and irport_write_wakeup().

Here is the call graph for this function:

EXPORT_SYMBOL irport_net_close   ) 
 

EXPORT_SYMBOL irport_net_open   ) 
 

EXPORT_SYMBOL irport_change_speed   ) 
 

EXPORT_SYMBOL irport_hard_xmit   ) 
 

EXPORT_SYMBOL irport_interrupt   ) 
 

EXPORT_SYMBOL irport_stop   ) 
 

EXPORT_SYMBOL irport_start   ) 
 

EXPORT_SYMBOL irport_close   ) 
 

EXPORT_SYMBOL irport_open   ) 
 

void irport_change_speed void *  priv,
__u32  speed
 

Definition at line 348 of file irport.c.

References ASSERT, divisor, iobase, IRDA_DEBUG, NULL, outb, SPEED_MAX, spin_lock_irqsave, spin_unlock_irqrestore, UART_DLL, UART_DLM, UART_FCR, UART_FCR_ENABLE_FIFO, UART_FCR_TRIGGER_1, UART_FCR_TRIGGER_14, UART_IER, UART_IER_RDI, UART_LCR, UART_LCR_DLAB, UART_LCR_WLEN8, and xff.

Referenced by ircc_change_speed(), and irport_open().

static int irport_change_speed_complete struct irda_task task  )  [static]
 

Definition at line 573 of file irport.c.

References ASSERT, irda_task::instance, IRDA_DEBUG, mark_bh, NET_BH, and NULL.

Referenced by irport_write_wakeup().

int irport_close struct irport_cb self  ) 
 

Definition at line 254 of file irport.c.

References ASSERT, irport_cb::dongle, iobuff_t::head, irport_cb::io, IRDA_DEBUG, irda_device_dongle_cleanup(), kfree(), irport_cb::netdev, NULL, release_region, rtnl_lock(), rtnl_unlock(), irport_cb::rx_buff, chipio_t::sir_base, chipio_t::sir_ext, irport_cb::tx_buff, and unregister_netdevice.

Here is the call graph for this function:

int irport_hard_xmit struct sk_buff skb,
struct device *  dev
 

Definition at line 600 of file irport.c.

References ASSERT, async_wrap_skb(), sk_buff::data, dev_kfree_skb, EBUSY, FALSE, iobase, irda_get_speed, irda_lock(), irport_start(), jiffies, NULL, outb, speed, spin_lock_irqsave, spin_unlock_irqrestore, start, UART_IER, UART_IER_THRI, and WARNING.

Referenced by ircc_change_speed(), and irport_open().

Here is the call graph for this function:

int __init irport_init void   ) 
 

Definition at line 99 of file irport.c.

References check_region, i, io, IO_EXTENT, ioaddr, irport_open(), irq, and NULL.

Here is the call graph for this function:

void irport_interrupt int  irq,
void *  dev_id,
struct pt_regs regs
 

Definition at line 688 of file irport.c.

References dev, device, iir, inb, iobase, IRDA_DEBUG, irport_receive(), irport_write_wakeup(), lsr, spin_lock, spin_unlock, UART_IIR, UART_IIR_ID, UART_IIR_RDI, UART_IIR_RLSI, UART_IIR_THRI, UART_LSR, UART_LSR_THRE, and WARNING.

Referenced by ircc_interrupt(), and irport_open().

Here is the call graph for this function:

static int irport_is_receiving struct irport_cb self  )  [static]
 

Definition at line 862 of file irport.c.

References OUTSIDE_FRAME, irport_cb::rx_buff, and iobuff_t::state.

Referenced by irport_net_ioctl().

int irport_net_close struct device *  dev  ) 
 

Definition at line 802 of file irport.c.

References ASSERT, free_irq(), iobase, IRDA_DEBUG, irlap_close(), irport_stop(), MOD_DEC_USE_COUNT, and NULL.

Referenced by ircc_net_close(), ircc_net_open(), and irport_open().

Here is the call graph for this function:

static struct net_device_stats * irport_net_get_stats struct device *  dev  )  [static]
 

Definition at line 1000 of file irport.c.

Referenced by irport_open().

static int irport_net_init struct device *  dev  )  [static]
 

Definition at line 746 of file irport.c.

References irda_device_setup().

Referenced by irport_open().

Here is the call graph for this function:

static int irport_net_ioctl struct device *  dev,
struct ifreq rq,
int  cmd
[static]
 

Definition at line 924 of file irport.c.

References __irport_change_speed(), ASSERT, CAP_NET_ADMIN, capable, cli, dongle, EOPNOTSUPP, EPERM, in_interrupt, IRDA_DEBUG, irda_device_dongle_init(), irda_device_set_media_busy(), irda_task_execute(), irport_is_receiving(), irport_raw_write(), irport_set_dtr_rts(), irq, dongle_t::issue, NULL, dongle_reg::open, dongle_t::read, restore_flags, ret, save_flags, dongle_t::set_dtr_rts, dongle_t::set_mode, SIOCGRECEIVING, SIOCSBANDWIDTH, SIOCSDONGLE, SIOCSDTRRTS, SIOCSMEDIABUSY, TRUE, and dongle_t::write.

Referenced by irport_open().

Here is the call graph for this function:

int irport_net_open struct device *  dev  ) 
 

Definition at line 762 of file irport.c.

References ASSERT, EAGAIN, iobase, irlap_open(), irport_start(), MOD_INC_USE_COUNT, NULL, and request_irq().

Referenced by ircc_net_open(), and irport_open().

Here is the call graph for this function:

struct irport_cb* irport_open int  i,
unsigned int  iobase,
unsigned int  irq
 

Definition at line 137 of file irport.c.

References check_region, dev, dev_alloc(), device, driver_name, ERROR, FALSE, IFF_PIO, IFF_SIR, IO_EXTENT, IR_115200, IR_19200, IR_38400, IR_57600, IR_9600, IRDA_DEBUG, irda_init_max_qos_capabilies(), IRDA_IRLAP, irda_qos_bits_to_value(), irport_change_speed(), irport_hard_xmit(), irport_interrupt(), irport_net_close(), irport_net_get_stats(), irport_net_init(), irport_net_ioctl(), irport_net_open(), kfree(), kmalloc(), memset, MESSAGE, NULL, OUTSIDE_FRAME, irport_cb::priv, qos_mtt_bits, register_netdevice, request_region, ret, rtnl_lock(), rtnl_unlock(), and spin_lock_init.

Referenced by ircc_open(), and irport_init().

Here is the call graph for this function:

int irport_probe int  iobase  ) 
 

Definition at line 335 of file irport.c.

References IRDA_DEBUG.

static int irport_raw_write struct device *  dev,
__u8 buf,
int  len
[static]
 

Definition at line 892 of file irport.c.

References ASSERT, inb, IRDA_DEBUG, NULL, outb, UART_LSR, and UART_TX.

Referenced by irport_net_ioctl().

static void irport_receive struct irport_cb self  )  [static]
 

Definition at line 658 of file irport.c.

References ASSERT, async_unwrap_char(), inb, iobase, IRDA_DEBUG, irport_cb::netdev, NULL, irport_cb::rx_buff, irport_cb::stats, UART_LSR, UART_LSR_DR, and UART_RX.

Referenced by irport_interrupt().

Here is the call graph for this function:

static int irport_set_dtr_rts struct device *  dev,
int  dtr,
int  rts
[static]
 

Definition at line 873 of file irport.c.

References ASSERT, NULL, outb, UART_MCR, UART_MCR_DTR, UART_MCR_OUT2, and UART_MCR_RTS.

Referenced by irport_net_ioctl().

void irport_start struct irport_cb self  ) 
 

Definition at line 290 of file irport.c.

References iobase, irport_stop(), irport_cb::lock, outb, spin_lock_irqsave, spin_unlock_irqrestore, UART_IER, UART_IER_RDI, UART_IER_RLSI, UART_IER_THRI, UART_LCR, UART_LCR_WLEN8, UART_MCR, UART_MCR_DTR, UART_MCR_OUT2, and UART_MCR_RTS.

Referenced by ircc_change_speed(), ircc_open(), irport_hard_xmit(), and irport_net_open().

Here is the call graph for this function:

void irport_stop struct irport_cb self  ) 
 

Definition at line 311 of file irport.c.

References iobase, irport_cb::lock, outb, spin_lock_irqsave, spin_unlock_irqrestore, UART_IER, and UART_MCR.

Referenced by ircc_change_speed(), irport_net_close(), and irport_start().

static int irport_write int  iobase,
int  fifo_size,
__u8 buf,
int  len
[static]
 

Definition at line 546 of file irport.c.

References inb, IRDA_DEBUG, outb, UART_LSR, UART_LSR_THRE, and UART_TX.

Referenced by irport_write_wakeup().

static void irport_write_wakeup struct irport_cb self  )  [static]
 

Definition at line 480 of file irport.c.

References __irport_change_speed(), ASSERT, iobuff_t::data, chipio_t::fifo_size, irport_cb::io, iobase, IRDA_DEBUG, irda_task_execute(), irport_change_speed_complete(), irport_write(), iobuff_t::len, mark_bh, NET_BH, irport_cb::new_speed, NULL, outb, chipio_t::speed, irport_cb::tx_buff, UART_FCR, UART_FCR_CLEAR_RCVR, UART_FCR_ENABLE_FIFO, UART_FCR_TRIGGER_1, UART_FCR_TRIGGER_14, UART_IER, and UART_IER_RDI.

Referenced by irport_interrupt().

Here is the call graph for this function:


Variable Documentation

struct irport_cb* dev_self[] = { NULL, NULL, NULL, NULL} [static]
 

Definition at line 73 of file irport.c.

char* driver_name = "irport" [static]
 

Definition at line 74 of file irport.c.

unsigned int io[] = { ~0, ~0, ~0, ~0 } [static]
 

Definition at line 68 of file irport.c.

unsigned int irq[] = { 0, 0, 0, 0 } [static]
 

Definition at line 69 of file irport.c.

unsigned int qos_mtt_bits = 0x03 [static]
 

Definition at line 71 of file irport.c.

Referenced by irport_open(), irtty_open(), nsc_ircc_open(), and w83977af_open().