~ubuntu-branches/ubuntu/precise/linux-ti-omap4/precise

« back to all changes in this revision

Viewing changes to arch/arm/mach-omap2/board-zoom-peripherals.c

  • Committer: Bazaar Package Importer
  • Author(s): Paolo Pisati
  • Date: 2011-06-29 15:23:51 UTC
  • mfrom: (26.1.1 natty-proposed)
  • Revision ID: james.westby@ubuntu.com-20110629152351-xs96tm303d95rpbk
Tags: 3.0.0-1200.2
* Rebased against 3.0.0-6.7
* BSP from TI based on 3.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
 
32
32
#include "mux.h"
33
33
#include "hsmmc.h"
 
34
#include "common-board-devices.h"
34
35
 
35
36
#define OMAP_ZOOM_WLAN_PMENA_GPIO       (101)
36
37
#define OMAP_ZOOM_WLAN_IRQ_GPIO         (162)
226
227
        {}      /* Terminator */
227
228
};
228
229
 
229
 
static struct regulator_consumer_supply zoom_vpll2_supplies[] = {
230
 
        REGULATOR_SUPPLY("vdds_dsi", "omapdss"),
231
 
        REGULATOR_SUPPLY("vdds_dsi", "omapdss_dsi1"),
232
 
};
233
 
 
234
 
static struct regulator_consumer_supply zoom_vdda_dac_supply =
235
 
        REGULATOR_SUPPLY("vdda_dac", "omapdss_venc");
236
 
 
237
 
static struct regulator_init_data zoom_vpll2 = {
238
 
        .constraints = {
239
 
                .min_uV                 = 1800000,
240
 
                .max_uV                 = 1800000,
241
 
                .valid_modes_mask       = REGULATOR_MODE_NORMAL
242
 
                                        | REGULATOR_MODE_STANDBY,
243
 
                .valid_ops_mask         = REGULATOR_CHANGE_MODE
244
 
                                        | REGULATOR_CHANGE_STATUS,
245
 
        },
246
 
        .num_consumer_supplies          = ARRAY_SIZE(zoom_vpll2_supplies),
247
 
        .consumer_supplies              = zoom_vpll2_supplies,
248
 
};
249
 
 
250
 
static struct regulator_init_data zoom_vdac = {
251
 
        .constraints = {
252
 
                .min_uV                 = 1800000,
253
 
                .max_uV                 = 1800000,
254
 
                .valid_modes_mask       = REGULATOR_MODE_NORMAL
255
 
                                        | REGULATOR_MODE_STANDBY,
256
 
                .valid_ops_mask         = REGULATOR_CHANGE_MODE
257
 
                                        | REGULATOR_CHANGE_STATUS,
258
 
        },
259
 
        .num_consumer_supplies          = 1,
260
 
        .consumer_supplies              = &zoom_vdda_dac_supply,
261
 
};
262
 
 
263
230
static int zoom_twl_gpio_setup(struct device *dev,
264
231
                unsigned gpio, unsigned ngpio)
265
232
{
276
243
        zoom_vsim_supply.dev = mmc[0].dev;
277
244
        zoom_vmmc2_supply.dev = mmc[1].dev;
278
245
 
279
 
        ret = gpio_request(LCD_PANEL_ENABLE_GPIO, "lcd enable");
280
 
        if (ret) {
 
246
        ret = gpio_request_one(LCD_PANEL_ENABLE_GPIO, GPIOF_OUT_INIT_LOW,
 
247
                               "lcd enable");
 
248
        if (ret)
281
249
                pr_err("Failed to get LCD_PANEL_ENABLE_GPIO (gpio%d).\n",
282
250
                                LCD_PANEL_ENABLE_GPIO);
283
 
                return ret;
284
 
        }
285
 
        gpio_direction_output(LCD_PANEL_ENABLE_GPIO, 0);
286
251
 
287
252
        return ret;
288
253
}
293
258
        gpio_set_value(ZOOM2_HEADSET_EXTMUTE_GPIO, mute);
294
259
}
295
260
 
296
 
static int zoom_batt_table[] = {
297
 
/* 0 C*/
298
 
30800, 29500, 28300, 27100,
299
 
26000, 24900, 23900, 22900, 22000, 21100, 20300, 19400, 18700, 17900,
300
 
17200, 16500, 15900, 15300, 14700, 14100, 13600, 13100, 12600, 12100,
301
 
11600, 11200, 10800, 10400, 10000, 9630,  9280,  8950,  8620,  8310,
302
 
8020,  7730,  7460,  7200,  6950,  6710,  6470,  6250,  6040,  5830,
303
 
5640,  5450,  5260,  5090,  4920,  4760,  4600,  4450,  4310,  4170,
304
 
4040,  3910,  3790,  3670,  3550
305
 
};
306
 
 
307
 
static struct twl4030_bci_platform_data zoom_bci_data = {
308
 
        .battery_tmp_tbl        = zoom_batt_table,
309
 
        .tblsize                = ARRAY_SIZE(zoom_batt_table),
310
 
};
311
 
 
312
 
static struct twl4030_usb_data zoom_usb_data = {
313
 
        .usb_mode       = T2_USB_MODE_ULPI,
314
 
};
315
 
 
316
261
static struct twl4030_gpio_platform_data zoom_gpio_data = {
317
262
        .gpio_base      = OMAP_MAX_GPIO_LINES,
318
263
        .irq_base       = TWL4030_GPIO_IRQ_BASE,
320
265
        .setup          = zoom_twl_gpio_setup,
321
266
};
322
267
 
323
 
static struct twl4030_madc_platform_data zoom_madc_data = {
324
 
        .irq_line       = 1,
325
 
};
326
 
 
327
 
static struct twl4030_codec_audio_data zoom_audio_data;
328
 
 
329
 
static struct twl4030_codec_data zoom_codec_data = {
330
 
        .audio_mclk = 26000000,
331
 
        .audio = &zoom_audio_data,
332
 
};
333
 
 
334
268
static struct twl4030_platform_data zoom_twldata = {
335
 
        .irq_base       = TWL4030_IRQ_BASE,
336
 
        .irq_end        = TWL4030_IRQ_END,
337
 
 
338
269
        /* platform_data for children goes here */
339
 
        .bci            = &zoom_bci_data,
340
 
        .madc           = &zoom_madc_data,
341
 
        .usb            = &zoom_usb_data,
342
270
        .gpio           = &zoom_gpio_data,
343
271
        .keypad         = &zoom_kp_twl4030_data,
344
 
        .codec          = &zoom_codec_data,
345
272
        .vmmc1          = &zoom_vmmc1,
346
273
        .vmmc2          = &zoom_vmmc2,
347
274
        .vsim           = &zoom_vsim,
348
 
        .vpll2          = &zoom_vpll2,
349
 
        .vdac           = &zoom_vdac,
350
 
};
351
 
 
352
 
static struct i2c_board_info __initdata zoom_i2c_boardinfo[] = {
353
 
        {
354
 
                I2C_BOARD_INFO("twl5030", 0x48),
355
 
                .flags          = I2C_CLIENT_WAKE,
356
 
                .irq            = INT_34XX_SYS_NIRQ,
357
 
                .platform_data  = &zoom_twldata,
358
 
        },
359
275
};
360
276
 
361
277
static int __init omap_i2c_init(void)
362
278
{
 
279
        omap3_pmic_get_config(&zoom_twldata,
 
280
                        TWL_COMMON_PDATA_USB | TWL_COMMON_PDATA_BCI |
 
281
                        TWL_COMMON_PDATA_MADC | TWL_COMMON_PDATA_AUDIO,
 
282
                        TWL_COMMON_REGULATOR_VDAC | TWL_COMMON_REGULATOR_VPLL2);
 
283
 
363
284
        if (machine_is_omap_zoom2()) {
364
 
                zoom_audio_data.ramp_delay_value = 3;   /* 161 ms */
365
 
                zoom_audio_data.hs_extmute = 1;
366
 
                zoom_audio_data.set_hs_extmute = zoom2_set_hs_extmute;
 
285
                struct twl4030_codec_data *codec_data;
 
286
                codec_data = zoom_twldata.audio->codec;
 
287
 
 
288
                codec_data->ramp_delay_value = 3;       /* 161 ms */
 
289
                codec_data->hs_extmute = 1;
 
290
                codec_data->set_hs_extmute = zoom2_set_hs_extmute;
367
291
        }
368
 
        omap_register_i2c_bus(1, 2400, zoom_i2c_boardinfo,
369
 
                        ARRAY_SIZE(zoom_i2c_boardinfo));
 
292
        omap_pmic_init(1, 2400, "twl5030", INT_34XX_SYS_NIRQ, &zoom_twldata);
370
293
        omap_register_i2c_bus(2, 400, NULL, 0);
371
294
        omap_register_i2c_bus(3, 400, NULL, 0);
372
295
        return 0;
373
296
}
374
297
 
375
 
static struct omap_musb_board_data musb_board_data = {
376
 
        .interface_type         = MUSB_INTERFACE_ULPI,
377
 
        .mode                   = MUSB_OTG,
378
 
        .power                  = 100,
379
 
};
380
 
 
381
298
static void enable_board_wakeup_source(void)
382
299
{
383
300
        /* T2 interrupt line (keypad) */
392
309
 
393
310
        omap_i2c_init();
394
311
        platform_device_register(&omap_vwlan_device);
395
 
        usb_musb_init(&musb_board_data);
 
312
        usb_musb_init(NULL);
396
313
        enable_board_wakeup_source();
397
314
        omap_serial_init();
398
315
}