25 #include <linux/i2c.h>
43 static unsigned long pcm990_pin_config[]
__initdata = {
68 static void __iomem *pcm990_cpld_base;
70 static u8 pcm990_cpld_readb(
unsigned int reg)
72 return readb(pcm990_cpld_base + reg);
75 static void pcm990_cpld_writeb(
u8 value,
unsigned int reg)
77 writeb(value, pcm990_cpld_base + reg);
86 #ifndef CONFIG_PCM990_DISPLAY_NONE
104 #if defined(CONFIG_PCM990_DISPLAY_SHARP)
121 .modes = &fb_info_sharp_lq084v1dg21,
124 .pxafb_lcd_power = pcm990_lcd_power,
126 #elif defined(CONFIG_PCM990_DISPLAY_NEC)
143 .
modes = &fb_info_nec_nl6448bc20_18d,
146 .pxafb_lcd_power = pcm990_lcd_power,
152 .max_brightness = 1023,
153 .dft_brightness = 1023,
154 .pwm_period_ns = 78770,
158 .name =
"pwm-backlight",
161 .platform_data = &pcm990_backlight_data,
253 static unsigned long pcm990_irq_enabled;
255 static void pcm990_mask_ack_irq(
struct irq_data *
d)
259 pcm990_irq_enabled &= ~(1 << pcm990_irq);
264 static void pcm990_unmask_irq(
struct irq_data *
d)
271 pcm990_irq_enabled |= (1 << pcm990_irq);
274 val |= 1 << pcm990_irq;
280 static struct irq_chip pcm990_irq_chip = {
281 .irq_mask_ack = pcm990_mask_ack_irq,
282 .irq_unmask = pcm990_unmask_irq,
285 static void pcm990_irq_handler(
unsigned int irq,
struct irq_desc *
desc)
287 unsigned long pending;
290 pending &= pcm990_irq_enabled;
300 pending &= pcm990_irq_enabled;
304 static void __init pcm990_init_irq(
void)
310 irq_set_chip_and_handler(irq, &pcm990_irq_chip,
329 "MMC card detect", data);
332 "card detect IRQ\n");
337 static void pcm990_mci_setpower(
struct device *dev,
unsigned int vdd)
352 static void pcm990_mci_exit(
struct device *dev,
void *data)
357 #define MSECS_PER_JIFFY (1000/HZ)
360 .detect_delay_ms = 250,
362 .init = pcm990_mci_init,
363 .setpower = pcm990_mci_setpower,
364 .exit = pcm990_mci_exit,
365 .gpio_card_detect = -1,
373 .power_on_delay = 10,
379 #if defined(CONFIG_VIDEO_PXA27x) || defined(CONFIG_VIDEO_PXA27x_MODULE)
380 static unsigned long pcm990_camera_pin_config[] = {
415 static int gpio_bus_switch = -
EINVAL;
420 if (gpio_bus_switch < 0) {
421 if (flags == SOCAM_DATAWIDTH_10)
427 if (flags & SOCAM_DATAWIDTH_8)
435 static unsigned long pcm990_camera_query_bus_param(
struct soc_camera_link *link)
439 if (gpio_bus_switch < 0) {
447 if (gpio_bus_switch >= 0)
455 if (gpio_bus_switch < 0)
459 gpio_bus_switch = -
EINVAL;
467 .platform_data = &pca9536_data,
482 .board_info = &pcm990_camera_i2c[0],
484 .query_bus_param = pcm990_camera_query_bus_param,
485 .set_bus_param = pcm990_camera_set_bus_param,
486 .free_bus = pcm990_camera_free_bus,
489 .board_info = &pcm990_camera_i2c[1],
491 .query_bus_param = pcm990_camera_query_bus_param,
492 .set_bus_param = pcm990_camera_set_bus_param,
493 .free_bus = pcm990_camera_free_bus,
499 .
name =
"soc-camera-pdrv",
502 .platform_data = &iclink[0],
505 .name =
"soc-camera-pdrv",
508 .platform_data = &iclink[1],
525 if (!pcm990_cpld_base) {
526 pr_err(
"pcm990: failed to ioremap cpld\n");
533 #ifndef CONFIG_PCM990_DISPLAY_NONE
547 #if defined(CONFIG_VIDEO_PXA27x) || defined(CONFIG_VIDEO_PXA27x_MODULE)