rockbox/firmware/target/hosted/samsungypr/ypr0/sc900776.h

135 lines
4.7 KiB
C
Raw Normal View History

/* This file originates from the linux kernel provided in Samsung's YP-R0 Open
* Source package.
*/
/*
* Bigbang project
* Copyright (c) 2009 VPS R&D Group, Samsung Electronics, Inc.
* All rights reserved.
*/
/**
* This file defines data structures and APIs for Freescale SC900776
*
* @name sc900776.h
* @author Eung Chan Kim (eungchan.kim@samsung.com)
* @version 0.1
* @see
*/
#ifndef __SC900776_H__
#define __SC900776_H__
typedef enum
{
SC900776_DEVICE_ID = 0x01, /* 01h R */
SC900776_CONTROL, /* 02h R/W */
SC900776_INTERRUPT1, /* 03h R/C */
SC900776_INTERRUPT2, /* 04h R/C */
SC900776_INTERRUPT_MASK1, /* 05h R/W */
SC900776_INTERRUPT_MASK2, /* 06h R/W */
SC900776_ADC_RESULT, /* 07h R */
SC900776_TIMING_SET1, /* 08h R/W */
SC900776_TIMING_SET2, /* 09h R/W */
SC900776_DEVICE_TYPE1, /* 0Ah R */
SC900776_DEVICE_TYPE2, /* 0Bh R */
SC900776_BUTTON1, /* 0Ch R/C */
SC900776_BUTTON2, /* 0Dh R/C */
/* 0Eh ~ 12h : reserved */
SC900776_MANUAL_SWITCH1 = 0x13, /* 13h R/W */
SC900776_MANUAL_SWITCH2, /* 14h R/W */
/* 15h ~ 1Fh : reserved */
SC900776_FSL_STATUS = 0x20, /* 20h R */
SC900776_FSL_CONTROL, /* 21h R/W */
SC900776_TIME_DELAY, /* 22h R/W */
SC900776_DEVICE_MODE, /* 23h R/W */
SC900776_REG_MAX
} eSc900776_register_t;
typedef enum
{
DEVICETYPE1_UNDEFINED = 0,
DEVICETYPE1_USB, // 0x04 0x00 // normal usb cable & ad200
DEVICETYPE1_DEDICATED, // 0x40 0x00 // dedicated charger cable
DEVICETYPE2_JIGUARTON, // 0x00 0x08 // Anygate_UART jig
DEVICETYPE2_JIGUSBOFF, // 0x00 0x01 // USB jig(AS center)
DEVICETYPE2_JIGUSBON, // 0x00 0x02 // Anygate_USB jig with boot-on, not tested
} eMinivet_device_t;
/*
* sc900776 register bit definitions
*/
#define MINIVET_DEVICETYPE1_USBOTG 0x80 /* 1: a USBOTG device is attached */
#define MINIVET_DEVICETYPE1_DEDICATED 0x40 /* 1: a dedicated charger is attached */
#define MINIVET_DEVICETYPE1_USBCHG 0x20 /* 1: a USB charger is attached */
#define MINIVET_DEVICETYPE1_5WCHG 0x10 /* 1: a 5-wire charger (type 1 or 2) is attached */
#define MINIVET_DEVICETYPE1_UART 0x08 /* 1: a UART cable is attached */
#define MINIVET_DEVICETYPE1_USB 0x04 /* 1: a USB host is attached */
#define MINIVET_DEVICETYPE1_AUDIO2 0x02 /* 1: an audio accessory type 2 is attached */
#define MINIVET_DEVICETYPE1_AUDIO1 0x01 /* 1: an audio accessory type 1 is attached */
#define MINIVET_DEVICETYPE2_AV 0x40 /* 1: an audio/video cable is attached */
#define MINIVET_DEVICETYPE2_TTY 0x20 /* 1: a TTY converter is attached */
#define MINIVET_DEVICETYPE2_PPD 0x10 /* 1: a phone powered device is attached */
#define MINIVET_DEVICETYPE2_JIGUARTON 0x08 /* 1: a UART jig cable with the BOOT-on option is attached */
#define MINIVET_DEVICETYPE2_JIGUARTOFF 0x04 /* 1: a UART jig cable with the BOOT-off option is attached */
#define MINIVET_DEVICETYPE2_JIGUSBON 0x02 /* 1: a USB jig cable with the BOOT-on option is attached */
#define MINIVET_DEVICETYPE2_JIGUSBOFF 0x01 /* 1: a USB jig cable with the BOOT-off option is attached */
#define MINIVET_FSLSTATUS_FETSTATUS 0x40 /* 1: The on status of the power MOSFET */
#define MINIVET_FSLSTATUS_IDDETEND 0x20 /* 1: ID resistance detection finished */
#define MINIVET_FSLSTATUS_VBUSDETEND 0x10 /* 1: VBUS power supply type identification completed */
#define MINIVET_FSLSTATUS_IDGND 0x08 /* 1: ID pin is shorted to ground */
#define MINIVET_FSLSTATUS_IDFLOAT 0x04 /* 1: ID line is floating */
#define MINIVET_FSLSTATUS_VBUSDET 0x02 /* 1: VBUS voltage is higher than the POR */
#define MINIVET_FSLSTATUS_ADCSTATUS 0x01 /* 1: ADC conversion completed */
#define SC900776_I2C_SLAVE_ADDR 0x25
typedef struct {
unsigned char addr;
unsigned char value;
}__attribute__((packed)) sMinivet_t;
#define DRV_IOCTL_MINIVET_MAGIC 'M'
typedef enum
{
E_IOCTL_MINIVET_INIT = 0,
E_IOCTL_MINIVET_WRITE_BYTE,
E_IOCTL_MINIVET_READ_BYTE,
E_IOCTL_MINIVET_DET_VBUS,
E_IOCTL_MINIVET_MANUAL_USB,
E_IOCTL_MINIVET_MANUAL_UART,
E_IOCTL_MINIVET_MAX
} eSc900776_ioctl_t;
#define IOCTL_MINIVET_INIT _IO(DRV_IOCTL_MINIVET_MAGIC, E_IOCTL_MINIVET_INIT)
#define IOCTL_MINIVET_WRITE_BYTE _IOW(DRV_IOCTL_MINIVET_MAGIC, E_IOCTL_MINIVET_WRITE_BYTE, sMinivet_t)
#define IOCTL_MINIVET_READ_BYTE _IOR(DRV_IOCTL_MINIVET_MAGIC, E_IOCTL_MINIVET_READ_BYTE, sMinivet_t)
#define IOCTL_MINIVET_DET_VBUS _IO(DRV_IOCTL_MINIVET_MAGIC, E_IOCTL_MINIVET_DET_VBUS)
#define IOCTL_MINIVET_MANUAL_USB _IO(DRV_IOCTL_MINIVET_MAGIC, E_IOCTL_MINIVET_MANUAL_USB)
#define IOCTL_MINIVET_MANUAL_UART _IO(DRV_IOCTL_MINIVET_MAGIC, E_IOCTL_MINIVET_MANUAL_UART)
#ifndef __MINIVET_ENUM__
#define __MINIVET_ENUM__
enum
{
EXT_PWR_UNPLUGGED = 0,
EXT_PWR_PLUGGED,
EXT_PWR_NOT_OVP,
EXT_PWR_OVP,
};
#endif /* __MINIVET_ENUM__ */
#endif /* __MINIVET_IOCTL_H__ */