~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/arm/mach-sa1100/h3100.c

Version: ~ [ linux-5.3 ] ~ [ linux-5.2.15 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.73 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.144 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.193 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.193 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.73 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-3.9.11 ] ~ [ linux-3.8.13 ] ~ [ linux-3.7.10 ] ~ [ linux-3.6.11 ] ~ [ linux-3.5.7 ] ~ [ linux-3.4.113 ] ~ [ linux-3.3.8 ] ~ [ linux-3.2.102 ] ~ [ linux-3.1.10 ] ~ [ linux-3.0.101 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * Support for Compaq iPAQ H3100 handheld computer
  3  *
  4  * Copyright (c) 2000,1 Compaq Computer Corporation. (Author: Jamey Hicks)
  5  * Copyright (c) 2009 Dmitry Artamonow <mad_soft@inbox.ru>
  6  *
  7  * This program is free software; you can redistribute it and/or modify
  8  * it under the terms of the GNU General Public License version 2 as
  9  * published by the Free Software Foundation.
 10  *
 11  */
 12 
 13 #include <linux/init.h>
 14 #include <linux/kernel.h>
 15 #include <linux/gpio.h>
 16 
 17 #include <video/sa1100fb.h>
 18 
 19 #include <asm/mach-types.h>
 20 #include <asm/mach/arch.h>
 21 #include <linux/platform_data/irda-sa11x0.h>
 22 
 23 #include <mach/h3xxx.h>
 24 #include <mach/irqs.h>
 25 
 26 #include "generic.h"
 27 
 28 /*
 29  * helper for sa1100fb
 30  */
 31 static struct gpio h3100_lcd_gpio[] = {
 32         { H3100_GPIO_LCD_3V_ON, GPIOF_OUT_INIT_LOW, "LCD 3V" },
 33         { H3XXX_EGPIO_LCD_ON, GPIOF_OUT_INIT_LOW, "LCD ON" },
 34 };
 35 
 36 static bool h3100_lcd_request(void)
 37 {
 38         static bool h3100_lcd_ok;
 39         int rc;
 40 
 41         if (h3100_lcd_ok)
 42                 return true;
 43 
 44         rc = gpio_request_array(h3100_lcd_gpio, ARRAY_SIZE(h3100_lcd_gpio));
 45         if (rc)
 46                 pr_err("%s: can't request GPIOs\n", __func__);
 47         else
 48                 h3100_lcd_ok = true;
 49 
 50         return h3100_lcd_ok;
 51 }
 52 
 53 static void h3100_lcd_power(int enable)
 54 {
 55         if (!h3100_lcd_request())
 56                 return;
 57 
 58         gpio_set_value(H3100_GPIO_LCD_3V_ON, enable);
 59         gpio_set_value(H3XXX_EGPIO_LCD_ON, enable);
 60 }
 61 
 62 static struct sa1100fb_mach_info h3100_lcd_info = {
 63         .pixclock       = 406977,       .bpp            = 4,
 64         .xres           = 320,          .yres           = 240,
 65 
 66         .hsync_len      = 26,           .vsync_len      = 41,
 67         .left_margin    = 4,            .upper_margin   = 0,
 68         .right_margin   = 4,            .lower_margin   = 0,
 69 
 70         .sync           = FB_SYNC_HOR_HIGH_ACT | FB_SYNC_VERT_HIGH_ACT,
 71         .cmap_greyscale = 1,
 72         .cmap_inverse   = 1,
 73 
 74         .lccr0          = LCCR0_Mono | LCCR0_4PixMono | LCCR0_Sngl | LCCR0_Pas,
 75         .lccr3          = LCCR3_OutEnH | LCCR3_PixRsEdg | LCCR3_ACBsDiv(2),
 76 
 77         .lcd_power = h3100_lcd_power,
 78 };
 79 
 80 static void __init h3100_map_io(void)
 81 {
 82         h3xxx_map_io();
 83 
 84         /* Older bootldrs put GPIO2-9 in alternate mode on the
 85            assumption that they are used for video */
 86         GAFR &= ~0x000001fb;
 87 }
 88 
 89 /*
 90  * This turns the IRDA power on or off on the Compaq H3100
 91  */
 92 static struct gpio h3100_irda_gpio[] = {
 93         { H3100_GPIO_IR_ON,     GPIOF_OUT_INIT_LOW, "IrDA power" },
 94         { H3100_GPIO_IR_FSEL,   GPIOF_OUT_INIT_LOW, "IrDA fsel" },
 95 };
 96 
 97 static int h3100_irda_set_power(struct device *dev, unsigned int state)
 98 {
 99         gpio_set_value(H3100_GPIO_IR_ON, state);
100         return 0;
101 }
102 
103 static void h3100_irda_set_speed(struct device *dev, unsigned int speed)
104 {
105         gpio_set_value(H3100_GPIO_IR_FSEL, !(speed < 4000000));
106 }
107 
108 static int h3100_irda_startup(struct device *dev)
109 {
110         return gpio_request_array(h3100_irda_gpio, sizeof(h3100_irda_gpio));
111 }
112 
113 static void h3100_irda_shutdown(struct device *dev)
114 {
115         return gpio_free_array(h3100_irda_gpio, sizeof(h3100_irda_gpio));
116 }
117 
118 static struct irda_platform_data h3100_irda_data = {
119         .set_power      = h3100_irda_set_power,
120         .set_speed      = h3100_irda_set_speed,
121         .startup        = h3100_irda_startup,
122         .shutdown       = h3100_irda_shutdown,
123 };
124 
125 static void __init h3100_mach_init(void)
126 {
127         h3xxx_mach_init();
128 
129         sa11x0_register_lcd(&h3100_lcd_info);
130         sa11x0_register_irda(&h3100_irda_data);
131 }
132 
133 MACHINE_START(H3100, "Compaq iPAQ H3100")
134         .atag_offset    = 0x100,
135         .map_io         = h3100_map_io,
136         .nr_irqs        = SA1100_NR_IRQS,
137         .init_irq       = sa1100_init_irq,
138         .init_time      = sa1100_timer_init,
139         .init_machine   = h3100_mach_init,
140         .init_late      = sa11x0_init_late,
141         .restart        = sa11x0_restart,
142 MACHINE_END
143 
144 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp