Commit 592dd383 authored by John Lenz's avatar John Lenz Committed by Russell King

[ARM PATCH] 2460/1: fix up resource usage on locomo

Patch from John Lenz

Add the list of devices on the locomo chip, and change around
how resources and struct resource are used.  There is only one
struct resource for the entire locomo, but each driver will
call request_mem_region on the pieces it is using.
Secondly, add a few helper functions to locomo.c to control
GPIOs and DAC.

Signed-off-by: John Lenz
Signed-off-by: Russell King
parent 4a550694
This diff is collapsed.
......@@ -40,18 +40,18 @@
#define LOCOMO_HSC 0x2c /* HSYS period */
#define LOCOMO_TADC 0x30 /* tablet ADC clock */
/* TFT signal */
#define LOCOMO_TC 0x38 /* TFT control signal */
#define LOCOMO_CPSD 0x3c /* CPS delay */
/* Key controller */
#define LOCOMO_KIB 0x40 /* KIB level */
#define LOCOMO_KSC 0x44 /* KSTRB control */
#define LOCOMO_KCMD 0x48 /* KSTRB command */
#define LOCOMO_KIC 0x4c /* Key interrupt */
/* Long time timer */
#define LOCOMO_LTC 0xd8 /* LTC interrupt setting */
#define LOCOMO_LTINT 0xdc /* LTC interrupt */
/* Audio clock */
#define LOCOMO_ACC 0x54
/* DAC control signal for LCD (COMADJ ) */
#define LOCOMO_DAC 0xe0
/* DAC control */
#define LOCOMO_DAC_SCLOEB 0x08 /* SCL pin output data */
#define LOCOMO_DAC_TEST 0x04 /* Test bit */
#define LOCOMO_DAC_SDA 0x02 /* SDA pin level (read-only) */
#define LOCOMO_DAC_SDAOEB 0x01 /* SDA pin output data */
/* SPI interface */
#define LOCOMO_SPIMD 0x60 /* SPI mode setting */
......@@ -65,7 +65,6 @@
#define LOCOMO_SPIRD 0x84 /* SPI receive data read */
#define LOCOMO_SPITS 0x88 /* SPI transfer data shift */
#define LOCOMO_SPIRS 0x8C /* SPI receive data shift */
#define LOCOMO_SPI_TEND (1 << 3) /* Transfer end bit */
#define LOCOMO_SPI_OVRN (1 << 2) /* Over Run bit */
#define LOCOMO_SPI_RFW (1 << 1) /* write buffer bit */
......@@ -82,99 +81,93 @@
#define LOCOMO_GWE 0xac /* GPIO status write enable */
#define LOCOMO_GIE 0xb0 /* GPIO interrupt enable */
#define LOCOMO_GIR 0xb4 /* GPIO interrupt request */
#define LOCOMO_GPIO0 (1<<0)
#define LOCOMO_GPIO1 (1<<1)
#define LOCOMO_GPIO2 (1<<2)
#define LOCOMO_GPIO3 (1<<3)
#define LOCOMO_GPIO4 (1<<4)
#define LOCOMO_GPIO5 (1<<5)
#define LOCOMO_GPIO6 (1<<6)
#define LOCOMO_GPIO7 (1<<7)
#define LOCOMO_GPIO8 (1<<8)
#define LOCOMO_GPIO9 (1<<9)
#define LOCOMO_GPIO10 (1<<10)
#define LOCOMO_GPIO11 (1<<11)
#define LOCOMO_GPIO12 (1<<12)
#define LOCOMO_GPIO13 (1<<13)
#define LOCOMO_GPIO14 (1<<14)
#define LOCOMO_GPIO15 (1<<15)
#define LOCOMO_GPIO(Nb) (0x01 << (Nb))
#define LOCOMO_GPIO_RTS LOCOMO_GPIO(0)
#define LOCOMO_GPIO_CTS LOCOMO_GPIO(1)
#define LOCOMO_GPIO_DSR LOCOMO_GPIO(2)
#define LOCOMO_GPIO_DTR LOCOMO_GPIO(3)
#define LOCOMO_GPIO_LCD_VSHA_ON LOCOMO_GPIO(4)
#define LOCOMO_GPIO_LCD_VSHD_ON LOCOMO_GPIO(5)
#define LOCOMO_GPIO_LCD_VEE_ON LOCOMO_GPIO(6)
#define LOCOMO_GPIO_LCD_MOD LOCOMO_GPIO(7)
#define LOCOMO_GPIO_DAC_ON LOCOMO_GPIO(8)
#define LOCOMO_GPIO_FL_VR LOCOMO_GPIO(9)
#define LOCOMO_GPIO_DAC_SDATA LOCOMO_GPIO(10)
#define LOCOMO_GPIO_DAC_SCK LOCOMO_GPIO(11)
#define LOCOMO_GPIO_DAC_SLOAD LOCOMO_GPIO(12)
/* Start the definitions of the devices. Each device has an initial
* base address and a series of offsets from that base address. */
/* Keyboard controller */
#define LOCOMO_KEYBOARD 0x40
#define LOCOMO_KIB 0x00 /* KIB level */
#define LOCOMO_KSC 0x04 /* KSTRB control */
#define LOCOMO_KCMD 0x08 /* KSTRB command */
#define LOCOMO_KIC 0x0c /* Key interrupt */
/* Front light adjustment controller */
#define LOCOMO_ALS 0xc8 /* Adjust light cycle */
#define LOCOMO_ALD 0xcc /* Adjust light duty */
/* PCM audio interface */
#define LOCOMO_PAIF 0xd0
/* Long time timer */
#define LOCOMO_LTC 0xd8 /* LTC interrupt setting */
#define LOCOMO_LTINT 0xdc /* LTC interrupt */
/* DAC control signal for LCD (COMADJ ) */
#define LOCOMO_DAC 0xe0
/* DAC control */
#define LOCOMO_DAC_SCLOEB 0x08 /* SCL pin output data */
#define LOCOMO_DAC_TEST 0x04 /* Test bit */
#define LOCOMO_DAC_SDA 0x02 /* SDA pin level (read-only) */
#define LOCOMO_DAC_SDAOEB 0x01 /* SDA pin output data */
/* LED controller */
#define LOCOMO_LPT0 0xe8 /* LEDPWM0 timer */
#define LOCOMO_LPT1 0xec /* LEDPWM1 timer */
#define LOCOMO_LPT_TOFH 0x80 /* */
#define LOCOMO_LPT_TOFL 0x08 /* */
#define LOCOMO_LPT_TOH(TOH) ((TOH & 0x7) << 4) /* */
#define LOCOMO_LPT_TOL(TOL) ((TOL & 0x7)) /* */
#define LOCOMO_FRONTLIGHT 0xc8
#define LOCOMO_ALS 0x00 /* Adjust light cycle */
#define LOCOMO_ALD 0x04 /* Adjust light duty */
/* Backlight controller: TFT signal */
#define LOCOMO_BACKLIGHT 0x38
#define LOCOMO_TC 0x00 /* TFT control signal */
#define LOCOMO_CPSD 0x04 /* CPS delay */
/* Audio controller */
#define LOCOMO_AUDIO 0x54
#define LOCOMO_ACC 0x00 /* Audio clock */
#define LOCOMO_PAIF 0x7C /* PCM audio interface */
/* Audio clock */
#define LOCOMO_ACC_XON 0x80 /* */
#define LOCOMO_ACC_XEN 0x40 /* */
#define LOCOMO_ACC_XSEL0 0x00 /* */
#define LOCOMO_ACC_XSEL1 0x20 /* */
#define LOCOMO_ACC_MCLKEN 0x10 /* */
#define LOCOMO_ACC_64FSEN 0x08 /* */
#define LOCOMO_ACC_XON 0x80
#define LOCOMO_ACC_XEN 0x40
#define LOCOMO_ACC_XSEL0 0x00
#define LOCOMO_ACC_XSEL1 0x20
#define LOCOMO_ACC_MCLKEN 0x10
#define LOCOMO_ACC_64FSEN 0x08
#define LOCOMO_ACC_CLKSEL000 0x00 /* mclk 2 */
#define LOCOMO_ACC_CLKSEL001 0x01 /* mclk 3 */
#define LOCOMO_ACC_CLKSEL010 0x02 /* mclk 4 */
#define LOCOMO_ACC_CLKSEL011 0x03 /* mclk 6 */
#define LOCOMO_ACC_CLKSEL100 0x04 /* mclk 8 */
#define LOCOMO_ACC_CLKSEL101 0x05 /* mclk 12 */
/* PCM audio interface */
#define LOCOMO_PAIF_SCINV 0x20 /* */
#define LOCOMO_PAIF_SCEN 0x10 /* */
#define LOCOMO_PAIF_LRCRST 0x08 /* */
#define LOCOMO_PAIF_LRCEVE 0x04 /* */
#define LOCOMO_PAIF_LRCINV 0x02 /* */
#define LOCOMO_PAIF_LRCEN 0x01 /* */
#define LOCOMO_PAIF_SCINV 0x20
#define LOCOMO_PAIF_SCEN 0x10
#define LOCOMO_PAIF_LRCRST 0x08
#define LOCOMO_PAIF_LRCEVE 0x04
#define LOCOMO_PAIF_LRCINV 0x02
#define LOCOMO_PAIF_LRCEN 0x01
/* GPIO */
#define LOCOMO_GPIO(Nb) (0x01 << (Nb)) /* LoCoMo GPIO [0...15] */
#define LOCOMO_GPIO_RTS LOCOMO_GPIO(0) /* LoCoMo GPIO [0] */
#define LOCOMO_GPIO_CTS LOCOMO_GPIO(1) /* LoCoMo GPIO [1] */
#define LOCOMO_GPIO_DSR LOCOMO_GPIO(2) /* LoCoMo GPIO [2] */
#define LOCOMO_GPIO_DTR LOCOMO_GPIO(3) /* LoCoMo GPIO [3] */
#define LOCOMO_GPIO_LCD_VSHA_ON LOCOMO_GPIO(4) /* LoCoMo GPIO [4] */
#define LOCOMO_GPIO_LCD_VSHD_ON LOCOMO_GPIO(5) /* LoCoMo GPIO [5] */
#define LOCOMO_GPIO_LCD_VEE_ON LOCOMO_GPIO(6) /* LoCoMo GPIO [6] */
#define LOCOMO_GPIO_LCD_MOD LOCOMO_GPIO(7) /* LoCoMo GPIO [7] */
#define LOCOMO_GPIO_DAC_ON LOCOMO_GPIO(8) /* LoCoMo GPIO [8] */
#define LOCOMO_GPIO_FL_VR LOCOMO_GPIO(9) /* LoCoMo GPIO [9] */
#define LOCOMO_GPIO_DAC_SDATA LOCOMO_GPIO(10) /* LoCoMo GPIO [10] */
#define LOCOMO_GPIO_DAC_SCK LOCOMO_GPIO(11) /* LoCoMo GPIO [11] */
#define LOCOMO_GPIO_DAC_SLOAD LOCOMO_GPIO(12) /* LoCoMo GPIO [12] */
/* LED controller */
#define LOCOMO_LED 0xe8
#define LOCOMO_LPT0 0x00
#define LOCOMO_LPT1 0x04
/* LED control */
#define LOCOMO_LPT_TOFH 0x80
#define LOCOMO_LPT_TOFL 0x08
#define LOCOMO_LPT_TOH(TOH) ((TOH & 0x7) << 4)
#define LOCOMO_LPT_TOL(TOL) ((TOL & 0x7))
extern struct bus_type locomo_bus_type;
#define LOCOMO_DEVID_KEYBOARD 0
#define LOCOMO_DEVID_FRONTLIGHT 1
#define LOCOMO_DEVID_BACKLIGHT 2
#define LOCOMO_DEVID_AUDIO 3
#define LOCOMO_DEVID_LED 4
#define LOCOMO_DEVID_UART 5
struct locomo_dev {
struct device dev;
unsigned int devid;
struct resource res;
void *mapbase;
unsigned int irq[1];
void *mapbase;
unsigned long length;
u64 dma_mask;
};
......@@ -201,4 +194,13 @@ void locomo_lcd_power(struct locomo_dev *, int, unsigned int);
int locomo_driver_register(struct locomo_driver *);
void locomo_driver_unregister(struct locomo_driver *);
/* GPIO control functions */
void locomo_gpio_set_dir(struct locomo_dev *ldev, unsigned int bits, unsigned int dir);
unsigned int locomo_gpio_read_level(struct locomo_dev *ldev, unsigned int bits);
unsigned int locomo_gpio_read_output(struct locomo_dev *ldev, unsigned int bits);
void locomo_gpio_write(struct locomo_dev *ldev, unsigned int bits, unsigned int set);
/* M62332 control function */
void locomo_m62332_senddata(struct locomo_dev *ldev, unsigned int dac_data, int channel);
#endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment