Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions
i2c-rcar.c File Reference
#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/err.h>
#include <linux/init.h>
#include <linux/interrupt.h>
#include <linux/io.h>
#include <linux/i2c.h>
#include <linux/i2c/i2c-rcar.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime.h>
#include <linux/slab.h>
#include <linux/spinlock.h>

Go to the source code of this file.

Data Structures

struct  rcar_i2c_priv
 

Macros

#define ICSCR   0x00 /* slave ctrl */
 
#define ICMCR   0x04 /* master ctrl */
 
#define ICSSR   0x08 /* slave status */
 
#define ICMSR   0x0C /* master status */
 
#define ICSIER   0x10 /* slave irq enable */
 
#define ICMIER   0x14 /* master irq enable */
 
#define ICCCR   0x18 /* clock dividers */
 
#define ICSAR   0x1C /* slave address */
 
#define ICMAR   0x20 /* master address */
 
#define ICRXTX   0x24 /* data port */
 
#define MDBS   (1 << 7) /* non-fifo mode switch */
 
#define FSCL   (1 << 6) /* override SCL pin */
 
#define FSDA   (1 << 5) /* override SDA pin */
 
#define OBPC   (1 << 4) /* override pins */
 
#define MIE   (1 << 3) /* master if enable */
 
#define TSBE   (1 << 2)
 
#define FSB   (1 << 1) /* force stop bit */
 
#define ESG   (1 << 0) /* en startbit gen */
 
#define MNR   (1 << 6) /* nack received */
 
#define MAL   (1 << 5) /* arbitration lost */
 
#define MST   (1 << 4) /* sent a stop */
 
#define MDE   (1 << 3)
 
#define MDT   (1 << 2)
 
#define MDR   (1 << 1)
 
#define MAT   (1 << 0) /* slave addr xfer done */
 
#define MNRE   (1 << 6) /* nack irq en */
 
#define MALE   (1 << 5) /* arblos irq en */
 
#define MSTE   (1 << 4) /* stop irq en */
 
#define MDEE   (1 << 3)
 
#define MDTE   (1 << 2)
 
#define MDRE   (1 << 1)
 
#define MATE   (1 << 0) /* address sent irq en */
 
#define ID_LAST_MSG   (1 << 0)
 
#define ID_IOERROR   (1 << 1)
 
#define ID_DONE   (1 << 2)
 
#define ID_ARBLOST   (1 << 3)
 
#define ID_NACK   (1 << 4)
 
#define rcar_i2c_priv_to_dev(p)   ((p)->adap.dev.parent)
 
#define rcar_i2c_is_recv(p)   ((p)->msg->flags & I2C_M_RD)
 
#define rcar_i2c_flags_set(p, f)   ((p)->flags |= (f))
 
#define rcar_i2c_flags_has(p, f)   ((p)->flags & (f))
 
#define LOOP_TIMEOUT   1024
 
#define rcar_i2c_status_clear(priv)   rcar_i2c_status_bit_clear(priv, 0xffffffff)
 
#define rcar_i2c_send_restart(priv)   rcar_i2c_status_bit_clear(priv, (MAT | MDE))
 
#define rcar_i2c_recv_restart(priv)   rcar_i2c_status_bit_clear(priv, (MAT | MDR))
 

Enumerations

enum  { RCAR_BUS_PHASE_ADDR, RCAR_BUS_PHASE_DATA, RCAR_BUS_PHASE_STOP }
 
enum  { RCAR_IRQ_CLOSE, RCAR_IRQ_OPEN_FOR_SEND, RCAR_IRQ_OPEN_FOR_RECV, RCAR_IRQ_OPEN_FOR_STOP }
 

Functions

 module_platform_driver (rcar_i2c_drv)
 
 MODULE_LICENSE ("GPL")
 
 MODULE_DESCRIPTION ("Renesas R-Car I2C bus driver")
 
 MODULE_AUTHOR ("Kuninori Morimoto <[email protected]>")
 

Macro Definition Documentation

#define ESG   (1 << 0) /* en startbit gen */

Definition at line 61 of file i2c-rcar.c.

#define FSB   (1 << 1) /* force stop bit */

Definition at line 60 of file i2c-rcar.c.

#define FSCL   (1 << 6) /* override SCL pin */

Definition at line 55 of file i2c-rcar.c.

#define FSDA   (1 << 5) /* override SDA pin */

Definition at line 56 of file i2c-rcar.c.

#define ICCCR   0x18 /* clock dividers */

Definition at line 48 of file i2c-rcar.c.

#define ICMAR   0x20 /* master address */

Definition at line 50 of file i2c-rcar.c.

#define ICMCR   0x04 /* master ctrl */

Definition at line 43 of file i2c-rcar.c.

#define ICMIER   0x14 /* master irq enable */

Definition at line 47 of file i2c-rcar.c.

#define ICMSR   0x0C /* master status */

Definition at line 45 of file i2c-rcar.c.

#define ICRXTX   0x24 /* data port */

Definition at line 51 of file i2c-rcar.c.

#define ICSAR   0x1C /* slave address */

Definition at line 49 of file i2c-rcar.c.

#define ICSCR   0x00 /* slave ctrl */

Definition at line 42 of file i2c-rcar.c.

#define ICSIER   0x10 /* slave irq enable */

Definition at line 46 of file i2c-rcar.c.

#define ICSSR   0x08 /* slave status */

Definition at line 44 of file i2c-rcar.c.

#define ID_ARBLOST   (1 << 3)

Definition at line 101 of file i2c-rcar.c.

#define ID_DONE   (1 << 2)

Definition at line 100 of file i2c-rcar.c.

#define ID_IOERROR   (1 << 1)

Definition at line 99 of file i2c-rcar.c.

#define ID_LAST_MSG   (1 << 0)

Definition at line 98 of file i2c-rcar.c.

#define ID_NACK   (1 << 4)

Definition at line 102 of file i2c-rcar.c.

#define LOOP_TIMEOUT   1024

Definition at line 124 of file i2c-rcar.c.

#define MAL   (1 << 5) /* arbitration lost */

Definition at line 65 of file i2c-rcar.c.

#define MALE   (1 << 5) /* arblos irq en */

Definition at line 74 of file i2c-rcar.c.

#define MAT   (1 << 0) /* slave addr xfer done */

Definition at line 70 of file i2c-rcar.c.

#define MATE   (1 << 0) /* address sent irq en */

Definition at line 79 of file i2c-rcar.c.

#define MDBS   (1 << 7) /* non-fifo mode switch */

Definition at line 54 of file i2c-rcar.c.

#define MDE   (1 << 3)

Definition at line 67 of file i2c-rcar.c.

#define MDEE   (1 << 3)

Definition at line 76 of file i2c-rcar.c.

#define MDR   (1 << 1)

Definition at line 69 of file i2c-rcar.c.

#define MDRE   (1 << 1)

Definition at line 78 of file i2c-rcar.c.

#define MDT   (1 << 2)

Definition at line 68 of file i2c-rcar.c.

#define MDTE   (1 << 2)

Definition at line 77 of file i2c-rcar.c.

#define MIE   (1 << 3) /* master if enable */

Definition at line 58 of file i2c-rcar.c.

#define MNR   (1 << 6) /* nack received */

Definition at line 64 of file i2c-rcar.c.

#define MNRE   (1 << 6) /* nack irq en */

Definition at line 73 of file i2c-rcar.c.

#define MST   (1 << 4) /* sent a stop */

Definition at line 66 of file i2c-rcar.c.

#define MSTE   (1 << 4) /* stop irq en */

Definition at line 75 of file i2c-rcar.c.

#define OBPC   (1 << 4) /* override pins */

Definition at line 57 of file i2c-rcar.c.

#define rcar_i2c_flags_has (   p,
  f 
)    ((p)->flags & (f))

Definition at line 122 of file i2c-rcar.c.

#define rcar_i2c_flags_set (   p,
  f 
)    ((p)->flags |= (f))

Definition at line 121 of file i2c-rcar.c.

#define rcar_i2c_is_recv (   p)    ((p)->msg->flags & I2C_M_RD)

Definition at line 119 of file i2c-rcar.c.

#define rcar_i2c_priv_to_dev (   p)    ((p)->adap.dev.parent)

Definition at line 118 of file i2c-rcar.c.

#define rcar_i2c_recv_restart (   priv)    rcar_i2c_status_bit_clear(priv, (MAT | MDR))

Definition at line 347 of file i2c-rcar.c.

#define rcar_i2c_send_restart (   priv)    rcar_i2c_status_bit_clear(priv, (MAT | MDE))

Definition at line 346 of file i2c-rcar.c.

#define rcar_i2c_status_clear (   priv)    rcar_i2c_status_bit_clear(priv, 0xffffffff)

Definition at line 308 of file i2c-rcar.c.

#define TSBE   (1 << 2)

Definition at line 59 of file i2c-rcar.c.

Enumeration Type Documentation

anonymous enum
Enumerator:
RCAR_BUS_PHASE_ADDR 
RCAR_BUS_PHASE_DATA 
RCAR_BUS_PHASE_STOP 

Definition at line 82 of file i2c-rcar.c.

anonymous enum
Enumerator:
RCAR_IRQ_CLOSE 
RCAR_IRQ_OPEN_FOR_SEND 
RCAR_IRQ_OPEN_FOR_RECV 
RCAR_IRQ_OPEN_FOR_STOP 

Definition at line 88 of file i2c-rcar.c.

Function Documentation

MODULE_AUTHOR ( "Kuninori Morimoto <[email protected]>"  )
MODULE_DESCRIPTION ( "Renesas R-Car I2C bus driver )
MODULE_LICENSE ( "GPL"  )
module_platform_driver ( rcar_i2c_drv  )