| 1 | --- a/arch/arm/mach-omap2/board-omap3beagle.c |
| 2 | +++ b/arch/arm/mach-omap2/board-omap3beagle.c |
| 3 | @@ -23,6 +23,7 @@ |
| 4 | #include <linux/gpio.h> |
| 5 | #include <linux/input.h> |
| 6 | #include <linux/gpio_keys.h> |
| 7 | +#include <linux/omapfb.h> |
| 8 | |
| 9 | #include <linux/mtd/mtd.h> |
| 10 | #include <linux/mtd/partitions.h> |
| 11 | @@ -44,6 +45,7 @@ |
| 12 | #include <mach/mux.h> |
| 13 | #include <mach/usb.h> |
| 14 | #include <mach/timer-gp.h> |
| 15 | +#include <mach/display.h> |
| 16 | |
| 17 | #include "mmc-twl4030.h" |
| 18 | |
| 19 | @@ -106,6 +108,92 @@ static struct platform_device omap3beagl |
| 20 | .resource = &omap3beagle_nand_resource, |
| 21 | }; |
| 22 | |
| 23 | +/* DSS */ |
| 24 | + |
| 25 | +static int beagle_enable_dvi(struct omap_dss_device *dssdev) |
| 26 | +{ |
| 27 | + if (dssdev->reset_gpio != -1) |
| 28 | + gpio_set_value(dssdev->reset_gpio, 1); |
| 29 | + |
| 30 | + return 0; |
| 31 | +} |
| 32 | + |
| 33 | +static void beagle_disable_dvi(struct omap_dss_device *dssdev) |
| 34 | +{ |
| 35 | + if (dssdev->reset_gpio != -1) |
| 36 | + gpio_set_value(dssdev->reset_gpio, 0); |
| 37 | +} |
| 38 | + |
| 39 | +static struct omap_dss_device beagle_dvi_device = { |
| 40 | + .type = OMAP_DISPLAY_TYPE_DPI, |
| 41 | + .name = "dvi", |
| 42 | + .driver_name = "generic_panel", |
| 43 | + .phy.dpi.data_lines = 24, |
| 44 | + .reset_gpio = 170, |
| 45 | + .platform_enable = beagle_enable_dvi, |
| 46 | + .platform_disable = beagle_disable_dvi, |
| 47 | +}; |
| 48 | + |
| 49 | +static int beagle_panel_enable_tv(struct omap_dss_device *dssdev) |
| 50 | +{ |
| 51 | + return 0; |
| 52 | +} |
| 53 | + |
| 54 | +static void beagle_panel_disable_tv(struct omap_dss_device *dssdev) |
| 55 | +{ |
| 56 | +} |
| 57 | + |
| 58 | +static struct omap_dss_device beagle_tv_device = { |
| 59 | + .name = "tv", |
| 60 | + .driver_name = "venc", |
| 61 | + .type = OMAP_DISPLAY_TYPE_VENC, |
| 62 | + .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO, |
| 63 | + .platform_enable = beagle_panel_enable_tv, |
| 64 | + .platform_disable = beagle_panel_disable_tv, |
| 65 | +}; |
| 66 | + |
| 67 | +static struct omap_dss_device *beagle_dss_devices[] = { |
| 68 | + &beagle_dvi_device, |
| 69 | + &beagle_tv_device, |
| 70 | +}; |
| 71 | + |
| 72 | +static struct omap_dss_board_info beagle_dss_data = { |
| 73 | + .num_devices = ARRAY_SIZE(beagle_dss_devices), |
| 74 | + .devices = beagle_dss_devices, |
| 75 | + .default_device = &beagle_dvi_device, |
| 76 | +}; |
| 77 | + |
| 78 | +static struct platform_device beagle_dss_device = { |
| 79 | + .name = "omapdss", |
| 80 | + .id = -1, |
| 81 | + .dev = { |
| 82 | + .platform_data = &beagle_dss_data, |
| 83 | + }, |
| 84 | +}; |
| 85 | + |
| 86 | +static struct regulator_consumer_supply beagle_vdda_dac_supply = { |
| 87 | + .supply = "vdda_dac", |
| 88 | + .dev = &beagle_dss_device.dev, |
| 89 | +}; |
| 90 | + |
| 91 | +static struct regulator_consumer_supply beagle_vdds_dsi_supply = { |
| 92 | + .supply = "vdds_dsi", |
| 93 | + .dev = &beagle_dss_device.dev, |
| 94 | +}; |
| 95 | + |
| 96 | +static void __init beagle_display_init(void) |
| 97 | +{ |
| 98 | + int r; |
| 99 | + |
| 100 | + r = gpio_request(beagle_dvi_device.reset_gpio, "DVI reset"); |
| 101 | + if (r < 0) { |
| 102 | + printk(KERN_ERR "Unable to get DVI reset GPIO\n"); |
| 103 | + return; |
| 104 | + } |
| 105 | + |
| 106 | + gpio_direction_output(beagle_dvi_device.reset_gpio, 0); |
| 107 | +} |
| 108 | + |
| 109 | #include "sdram-micron-mt46h32m32lf-6.h" |
| 110 | |
| 111 | static struct twl4030_hsmmc_info mmc[] = { |
| 112 | @@ -117,15 +205,6 @@ static struct twl4030_hsmmc_info mmc[] = |
| 113 | {} /* Terminator */ |
| 114 | }; |
| 115 | |
| 116 | -static struct platform_device omap3_beagle_lcd_device = { |
| 117 | - .name = "omap3beagle_lcd", |
| 118 | - .id = -1, |
| 119 | -}; |
| 120 | - |
| 121 | -static struct omap_lcd_config omap3_beagle_lcd_config __initdata = { |
| 122 | - .ctrl_name = "internal", |
| 123 | -}; |
| 124 | - |
| 125 | static struct regulator_consumer_supply beagle_vmmc1_supply = { |
| 126 | .supply = "vmmc", |
| 127 | }; |
| 128 | @@ -181,15 +260,6 @@ static struct twl4030_gpio_platform_data |
| 129 | .setup = beagle_twl_gpio_setup, |
| 130 | }; |
| 131 | |
| 132 | -static struct regulator_consumer_supply beagle_vdac_supply = { |
| 133 | - .supply = "vdac", |
| 134 | - .dev = &omap3_beagle_lcd_device.dev, |
| 135 | -}; |
| 136 | - |
| 137 | -static struct regulator_consumer_supply beagle_vdvi_supply = { |
| 138 | - .supply = "vdvi", |
| 139 | - .dev = &omap3_beagle_lcd_device.dev, |
| 140 | -}; |
| 141 | |
| 142 | /* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */ |
| 143 | static struct regulator_init_data beagle_vmmc1 = { |
| 144 | @@ -226,13 +296,14 @@ static struct regulator_init_data beagle |
| 145 | .constraints = { |
| 146 | .min_uV = 1800000, |
| 147 | .max_uV = 1800000, |
| 148 | + .apply_uV = true, |
| 149 | .valid_modes_mask = REGULATOR_MODE_NORMAL |
| 150 | | REGULATOR_MODE_STANDBY, |
| 151 | .valid_ops_mask = REGULATOR_CHANGE_MODE |
| 152 | | REGULATOR_CHANGE_STATUS, |
| 153 | }, |
| 154 | .num_consumer_supplies = 1, |
| 155 | - .consumer_supplies = &beagle_vdac_supply, |
| 156 | + .consumer_supplies = &beagle_vdda_dac_supply, |
| 157 | }; |
| 158 | |
| 159 | /* VPLL2 for digital video outputs */ |
| 160 | @@ -247,7 +318,7 @@ static struct regulator_init_data beagle |
| 161 | | REGULATOR_CHANGE_STATUS, |
| 162 | }, |
| 163 | .num_consumer_supplies = 1, |
| 164 | - .consumer_supplies = &beagle_vdvi_supply, |
| 165 | + .consumer_supplies = &beagle_vdds_dsi_supply, |
| 166 | }; |
| 167 | |
| 168 | static struct twl4030_usb_data beagle_usb_data = { |
| 169 | @@ -340,7 +411,6 @@ static struct platform_device keys_gpio |
| 170 | }; |
| 171 | |
| 172 | static struct omap_board_config_kernel omap3_beagle_config[] __initdata = { |
| 173 | - { OMAP_TAG_LCD, &omap3_beagle_lcd_config }, |
| 174 | }; |
| 175 | |
| 176 | static void __init omap3_beagle_init_irq(void) |
| 177 | @@ -357,7 +427,7 @@ static void __init omap3_beagle_init_irq |
| 178 | } |
| 179 | |
| 180 | static struct platform_device *omap3_beagle_devices[] __initdata = { |
| 181 | - &omap3_beagle_lcd_device, |
| 182 | + &beagle_dss_device, |
| 183 | &leds_gpio, |
| 184 | &keys_gpio, |
| 185 | }; |
| 186 | @@ -420,9 +490,6 @@ static void __init omap3_beagle_init(voi |
| 187 | omap_serial_init(); |
| 188 | |
| 189 | omap_cfg_reg(J25_34XX_GPIO170); |
| 190 | - gpio_request(170, "DVI_nPD"); |
| 191 | - /* REVISIT leave DVI powered down until it's needed ... */ |
| 192 | - gpio_direction_output(170, true); |
| 193 | |
| 194 | usb_musb_init(); |
| 195 | usb_ehci_init(&ehci_pdata); |
| 196 | |