Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions
ucb1x00.h File Reference
#include <linux/mfd/mcp.h>
#include <linux/gpio.h>
#include <linux/mutex.h>

Go to the source code of this file.

Data Structures

struct  ucb1x00_plat_data
 
struct  ucb1x00
 
struct  ucb1x00_dev
 
struct  ucb1x00_driver
 

Macros

#define UCB_IO_DATA   0x00
 
#define UCB_IO_DIR   0x01
 
#define UCB_IO_0   (1 << 0)
 
#define UCB_IO_1   (1 << 1)
 
#define UCB_IO_2   (1 << 2)
 
#define UCB_IO_3   (1 << 3)
 
#define UCB_IO_4   (1 << 4)
 
#define UCB_IO_5   (1 << 5)
 
#define UCB_IO_6   (1 << 6)
 
#define UCB_IO_7   (1 << 7)
 
#define UCB_IO_8   (1 << 8)
 
#define UCB_IO_9   (1 << 9)
 
#define UCB_IE_RIS   0x02
 
#define UCB_IE_FAL   0x03
 
#define UCB_IE_STATUS   0x04
 
#define UCB_IE_CLEAR   0x04
 
#define UCB_IE_ADC   (1 << 11)
 
#define UCB_IE_TSPX   (1 << 12)
 
#define UCB_IE_TSMX   (1 << 13)
 
#define UCB_IE_TCLIP   (1 << 14)
 
#define UCB_IE_ACLIP   (1 << 15)
 
#define UCB_IRQ_TSPX   12
 
#define UCB_TC_A   0x05
 
#define UCB_TC_A_LOOP   (1 << 7) /* UCB1200 */
 
#define UCB_TC_A_AMPL   (1 << 7) /* UCB1300 */
 
#define UCB_TC_B   0x06
 
#define UCB_TC_B_VOICE_ENA   (1 << 3)
 
#define UCB_TC_B_CLIP   (1 << 4)
 
#define UCB_TC_B_ATT   (1 << 6)
 
#define UCB_TC_B_SIDE_ENA   (1 << 11)
 
#define UCB_TC_B_MUTE   (1 << 13)
 
#define UCB_TC_B_IN_ENA   (1 << 14)
 
#define UCB_TC_B_OUT_ENA   (1 << 15)
 
#define UCB_AC_A   0x07
 
#define UCB_AC_B   0x08
 
#define UCB_AC_B_LOOP   (1 << 8)
 
#define UCB_AC_B_MUTE   (1 << 13)
 
#define UCB_AC_B_IN_ENA   (1 << 14)
 
#define UCB_AC_B_OUT_ENA   (1 << 15)
 
#define UCB_TS_CR   0x09
 
#define UCB_TS_CR_TSMX_POW   (1 << 0)
 
#define UCB_TS_CR_TSPX_POW   (1 << 1)
 
#define UCB_TS_CR_TSMY_POW   (1 << 2)
 
#define UCB_TS_CR_TSPY_POW   (1 << 3)
 
#define UCB_TS_CR_TSMX_GND   (1 << 4)
 
#define UCB_TS_CR_TSPX_GND   (1 << 5)
 
#define UCB_TS_CR_TSMY_GND   (1 << 6)
 
#define UCB_TS_CR_TSPY_GND   (1 << 7)
 
#define UCB_TS_CR_MODE_INT   (0 << 8)
 
#define UCB_TS_CR_MODE_PRES   (1 << 8)
 
#define UCB_TS_CR_MODE_POS   (2 << 8)
 
#define UCB_TS_CR_BIAS_ENA   (1 << 11)
 
#define UCB_TS_CR_TSPX_LOW   (1 << 12)
 
#define UCB_TS_CR_TSMX_LOW   (1 << 13)
 
#define UCB_ADC_CR   0x0a
 
#define UCB_ADC_SYNC_ENA   (1 << 0)
 
#define UCB_ADC_VREFBYP_CON   (1 << 1)
 
#define UCB_ADC_INP_TSPX   (0 << 2)
 
#define UCB_ADC_INP_TSMX   (1 << 2)
 
#define UCB_ADC_INP_TSPY   (2 << 2)
 
#define UCB_ADC_INP_TSMY   (3 << 2)
 
#define UCB_ADC_INP_AD0   (4 << 2)
 
#define UCB_ADC_INP_AD1   (5 << 2)
 
#define UCB_ADC_INP_AD2   (6 << 2)
 
#define UCB_ADC_INP_AD3   (7 << 2)
 
#define UCB_ADC_EXT_REF   (1 << 5)
 
#define UCB_ADC_START   (1 << 7)
 
#define UCB_ADC_ENA   (1 << 15)
 
#define UCB_ADC_DATA   0x0b
 
#define UCB_ADC_DAT_VAL   (1 << 15)
 
#define UCB_ADC_DAT(x)   (((x) & 0x7fe0) >> 5)
 
#define UCB_ID   0x0c
 
#define UCB_ID_1200   0x1004
 
#define UCB_ID_1300   0x1005
 
#define UCB_ID_TC35143   0x9712
 
#define UCB_MODE   0x0d
 
#define UCB_MODE_DYN_VFLAG_ENA   (1 << 12)
 
#define UCB_MODE_AUD_OFF_CAN   (1 << 13)
 
#define classdev_to_ucb1x00(cd)   container_of(cd, struct ucb1x00, dev)
 
#define UCB_NOSYNC   (0)
 
#define UCB_SYNC   (1)
 

Enumerations

enum  ucb1x00_reset {
  UCB_RST_PROBE, UCB_RST_RESUME, UCB_RST_SUSPEND, UCB_RST_REMOVE,
  UCB_RST_PROBE_FAIL
}
 

Functions

int ucb1x00_register_driver (struct ucb1x00_driver *)
 
void ucb1x00_unregister_driver (struct ucb1x00_driver *)
 
void ucb1x00_io_set_dir (struct ucb1x00 *ucb, unsigned int, unsigned int)
 
void ucb1x00_io_write (struct ucb1x00 *ucb, unsigned int, unsigned int)
 
unsigned int ucb1x00_io_read (struct ucb1x00 *ucb)
 
unsigned int ucb1x00_adc_read (struct ucb1x00 *ucb, int adc_channel, int sync)
 
void ucb1x00_adc_enable (struct ucb1x00 *ucb)
 
void ucb1x00_adc_disable (struct ucb1x00 *ucb)
 

Macro Definition Documentation

#define classdev_to_ucb1x00 (   cd)    container_of(cd, struct ucb1x00, dev)

Definition at line 162 of file ucb1x00.h.

#define UCB_AC_A   0x07

Definition at line 56 of file ucb1x00.h.

#define UCB_AC_B   0x08

Definition at line 57 of file ucb1x00.h.

#define UCB_AC_B_IN_ENA   (1 << 14)

Definition at line 60 of file ucb1x00.h.

#define UCB_AC_B_LOOP   (1 << 8)

Definition at line 58 of file ucb1x00.h.

#define UCB_AC_B_MUTE   (1 << 13)

Definition at line 59 of file ucb1x00.h.

#define UCB_AC_B_OUT_ENA   (1 << 15)

Definition at line 61 of file ucb1x00.h.

#define UCB_ADC_CR   0x0a

Definition at line 79 of file ucb1x00.h.

#define UCB_ADC_DAT (   x)    (((x) & 0x7fe0) >> 5)

Definition at line 96 of file ucb1x00.h.

#define UCB_ADC_DAT_VAL   (1 << 15)

Definition at line 95 of file ucb1x00.h.

#define UCB_ADC_DATA   0x0b

Definition at line 94 of file ucb1x00.h.

#define UCB_ADC_ENA   (1 << 15)

Definition at line 92 of file ucb1x00.h.

#define UCB_ADC_EXT_REF   (1 << 5)

Definition at line 90 of file ucb1x00.h.

#define UCB_ADC_INP_AD0   (4 << 2)

Definition at line 86 of file ucb1x00.h.

#define UCB_ADC_INP_AD1   (5 << 2)

Definition at line 87 of file ucb1x00.h.

#define UCB_ADC_INP_AD2   (6 << 2)

Definition at line 88 of file ucb1x00.h.

#define UCB_ADC_INP_AD3   (7 << 2)

Definition at line 89 of file ucb1x00.h.

#define UCB_ADC_INP_TSMX   (1 << 2)

Definition at line 83 of file ucb1x00.h.

#define UCB_ADC_INP_TSMY   (3 << 2)

Definition at line 85 of file ucb1x00.h.

#define UCB_ADC_INP_TSPX   (0 << 2)

Definition at line 82 of file ucb1x00.h.

#define UCB_ADC_INP_TSPY   (2 << 2)

Definition at line 84 of file ucb1x00.h.

#define UCB_ADC_START   (1 << 7)

Definition at line 91 of file ucb1x00.h.

#define UCB_ADC_SYNC_ENA   (1 << 0)

Definition at line 80 of file ucb1x00.h.

#define UCB_ADC_VREFBYP_CON   (1 << 1)

Definition at line 81 of file ucb1x00.h.

#define UCB_ID   0x0c

Definition at line 98 of file ucb1x00.h.

#define UCB_ID_1200   0x1004

Definition at line 99 of file ucb1x00.h.

#define UCB_ID_1300   0x1005

Definition at line 100 of file ucb1x00.h.

#define UCB_ID_TC35143   0x9712

Definition at line 101 of file ucb1x00.h.

#define UCB_IE_ACLIP   (1 << 15)

Definition at line 39 of file ucb1x00.h.

#define UCB_IE_ADC   (1 << 11)

Definition at line 35 of file ucb1x00.h.

#define UCB_IE_CLEAR   0x04

Definition at line 34 of file ucb1x00.h.

#define UCB_IE_FAL   0x03

Definition at line 32 of file ucb1x00.h.

#define UCB_IE_RIS   0x02

Definition at line 31 of file ucb1x00.h.

#define UCB_IE_STATUS   0x04

Definition at line 33 of file ucb1x00.h.

#define UCB_IE_TCLIP   (1 << 14)

Definition at line 38 of file ucb1x00.h.

#define UCB_IE_TSMX   (1 << 13)

Definition at line 37 of file ucb1x00.h.

#define UCB_IE_TSPX   (1 << 12)

Definition at line 36 of file ucb1x00.h.

#define UCB_IO_0   (1 << 0)

Definition at line 20 of file ucb1x00.h.

#define UCB_IO_1   (1 << 1)

Definition at line 21 of file ucb1x00.h.

#define UCB_IO_2   (1 << 2)

Definition at line 22 of file ucb1x00.h.

#define UCB_IO_3   (1 << 3)

Definition at line 23 of file ucb1x00.h.

#define UCB_IO_4   (1 << 4)

Definition at line 24 of file ucb1x00.h.

#define UCB_IO_5   (1 << 5)

Definition at line 25 of file ucb1x00.h.

#define UCB_IO_6   (1 << 6)

Definition at line 26 of file ucb1x00.h.

#define UCB_IO_7   (1 << 7)

Definition at line 27 of file ucb1x00.h.

#define UCB_IO_8   (1 << 8)

Definition at line 28 of file ucb1x00.h.

#define UCB_IO_9   (1 << 9)

Definition at line 29 of file ucb1x00.h.

#define UCB_IO_DATA   0x00

Definition at line 17 of file ucb1x00.h.

#define UCB_IO_DIR   0x01

Definition at line 18 of file ucb1x00.h.

#define UCB_IRQ_TSPX   12

Definition at line 41 of file ucb1x00.h.

#define UCB_MODE   0x0d

Definition at line 103 of file ucb1x00.h.

#define UCB_MODE_AUD_OFF_CAN   (1 << 13)

Definition at line 105 of file ucb1x00.h.

#define UCB_MODE_DYN_VFLAG_ENA   (1 << 12)

Definition at line 104 of file ucb1x00.h.

#define UCB_NOSYNC   (0)

Definition at line 252 of file ucb1x00.h.

#define UCB_SYNC   (1)

Definition at line 253 of file ucb1x00.h.

#define UCB_TC_A   0x05

Definition at line 43 of file ucb1x00.h.

#define UCB_TC_A_AMPL   (1 << 7) /* UCB1300 */

Definition at line 45 of file ucb1x00.h.

#define UCB_TC_A_LOOP   (1 << 7) /* UCB1200 */

Definition at line 44 of file ucb1x00.h.

#define UCB_TC_B   0x06

Definition at line 47 of file ucb1x00.h.

#define UCB_TC_B_ATT   (1 << 6)

Definition at line 50 of file ucb1x00.h.

#define UCB_TC_B_CLIP   (1 << 4)

Definition at line 49 of file ucb1x00.h.

#define UCB_TC_B_IN_ENA   (1 << 14)

Definition at line 53 of file ucb1x00.h.

#define UCB_TC_B_MUTE   (1 << 13)

Definition at line 52 of file ucb1x00.h.

#define UCB_TC_B_OUT_ENA   (1 << 15)

Definition at line 54 of file ucb1x00.h.

#define UCB_TC_B_SIDE_ENA   (1 << 11)

Definition at line 51 of file ucb1x00.h.

#define UCB_TC_B_VOICE_ENA   (1 << 3)

Definition at line 48 of file ucb1x00.h.

#define UCB_TS_CR   0x09

Definition at line 63 of file ucb1x00.h.

#define UCB_TS_CR_BIAS_ENA   (1 << 11)

Definition at line 75 of file ucb1x00.h.

#define UCB_TS_CR_MODE_INT   (0 << 8)

Definition at line 72 of file ucb1x00.h.

#define UCB_TS_CR_MODE_POS   (2 << 8)

Definition at line 74 of file ucb1x00.h.

#define UCB_TS_CR_MODE_PRES   (1 << 8)

Definition at line 73 of file ucb1x00.h.

#define UCB_TS_CR_TSMX_GND   (1 << 4)

Definition at line 68 of file ucb1x00.h.

#define UCB_TS_CR_TSMX_LOW   (1 << 13)

Definition at line 77 of file ucb1x00.h.

#define UCB_TS_CR_TSMX_POW   (1 << 0)

Definition at line 64 of file ucb1x00.h.

#define UCB_TS_CR_TSMY_GND   (1 << 6)

Definition at line 70 of file ucb1x00.h.

#define UCB_TS_CR_TSMY_POW   (1 << 2)

Definition at line 66 of file ucb1x00.h.

#define UCB_TS_CR_TSPX_GND   (1 << 5)

Definition at line 69 of file ucb1x00.h.

#define UCB_TS_CR_TSPX_LOW   (1 << 12)

Definition at line 76 of file ucb1x00.h.

#define UCB_TS_CR_TSPX_POW   (1 << 1)

Definition at line 65 of file ucb1x00.h.

#define UCB_TS_CR_TSPY_GND   (1 << 7)

Definition at line 71 of file ucb1x00.h.

#define UCB_TS_CR_TSPY_POW   (1 << 3)

Definition at line 67 of file ucb1x00.h.

Enumeration Type Documentation

Enumerator:
UCB_RST_PROBE 
UCB_RST_RESUME 
UCB_RST_SUSPEND 
UCB_RST_REMOVE 
UCB_RST_PROBE_FAIL 

Definition at line 107 of file ucb1x00.h.

Function Documentation

void ucb1x00_adc_disable ( struct ucb1x00 ucb)

ucb1x00_adc_disable - disable the ADC converter : UCB1x00 structure describing chip

Disable the ADC converter and release the ADC mutex.

Definition at line 268 of file ucb1x00-core.c.

void ucb1x00_adc_enable ( struct ucb1x00 ucb)

ucb1x00_adc_enable - enable the ADC converter : UCB1x00 structure describing chip

Enable the ucb1x00 and ADC converter on the UCB1x00 for use. Any code wishing to use the ADC converter must call this function prior to using it.

This function takes the ADC mutex to prevent two or more concurrent uses, and therefore may sleep. As a result, it can only be called from process context, not interrupt context.

You should release the ADC as soon as possible using ucb1x00_adc_disable.

Definition at line 214 of file ucb1x00-core.c.

unsigned int ucb1x00_adc_read ( struct ucb1x00 ucb,
int  adc_channel,
int  sync 
)

ucb1x00_adc_read - read the specified ADC channel : UCB1x00 structure describing chip : ADC channel mask : wait for syncronisation pulse.

Start an ADC conversion and wait for the result. Note that synchronised ADC conversions (via the ADCSYNC pin) must wait until the trigger is asserted and the conversion is finished.

This function currently spins waiting for the conversion to complete (2 frames max without sync).

If called for a synchronised ADC conversion, it may sleep with the ADC mutex held.

Definition at line 240 of file ucb1x00-core.c.

unsigned int ucb1x00_io_read ( struct ucb1x00 ucb)

ucb1x00_io_read - read the current state of the IO pins : UCB1x00 structure describing chip

Return a bitfield describing the logic state of the ten general purpose IO pins.

ucb1x00_enable must have been called to enable the comms before using this function.

This function does not take any mutexes or spinlocks.

Definition at line 105 of file ucb1x00-core.c.

void ucb1x00_io_set_dir ( struct ucb1x00 ucb,
unsigned int  in,
unsigned int  out 
)

ucb1x00_io_set_dir - set IO direction : UCB1x00 structure describing chip : bitfield of IO pins to be set as inputs : bitfield of IO pins to be set as outputs

Set the IO direction of the ten general purpose IO pins on the UCB1x00 chip. The bitfield has priority over the bitfield, in that if you specify a pin as both input and output, it will end up as an input.

ucb1x00_enable must have been called to enable the comms before using this function.

This function takes a spinlock, disabling interrupts.

Definition at line 53 of file ucb1x00-core.c.

void ucb1x00_io_write ( struct ucb1x00 ucb,
unsigned int  set,
unsigned int  clear 
)

ucb1x00_io_write - set or clear IO outputs : UCB1x00 structure describing chip : bitfield of IO pins to set to logic '1' : bitfield of IO pins to set to logic '0'

Set the IO output state of the specified IO pins. The value is retained if the pins are subsequently configured as inputs. The bitfield has priority over the bitfield - outputs will be cleared.

ucb1x00_enable must have been called to enable the comms before using this function.

This function takes a spinlock, disabling interrupts.

Definition at line 81 of file ucb1x00-core.c.

int ucb1x00_register_driver ( struct ucb1x00_driver )

Definition at line 645 of file ucb1x00-core.c.

void ucb1x00_unregister_driver ( struct ucb1x00_driver )

Definition at line 659 of file ucb1x00-core.c.