diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/fb.h | 1 | ||||
| -rw-r--r-- | include/linux/mtd/gpmi-nand.h | 8 | ||||
| -rw-r--r-- | include/linux/mtd/mtd.h | 11 | ||||
| -rw-r--r-- | include/linux/mtd/nand.h | 25 | ||||
| -rw-r--r-- | include/video/auo_k190xfb.h | 106 | ||||
| -rw-r--r-- | include/video/exynos_dp.h | 2 | ||||
| -rw-r--r-- | include/video/exynos_mipi_dsim.h | 1 | ||||
| -rw-r--r-- | include/video/omapdss.h | 47 | ||||
| -rw-r--r-- | include/video/sh_mobile_hdmi.h | 12 |
9 files changed, 187 insertions, 26 deletions
diff --git a/include/linux/fb.h b/include/linux/fb.h index a3229d7ab9f2..ac3f1c605843 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h | |||
| @@ -611,6 +611,7 @@ struct fb_deferred_io { | |||
| 611 | struct mutex lock; /* mutex that protects the page list */ | 611 | struct mutex lock; /* mutex that protects the page list */ |
| 612 | struct list_head pagelist; /* list of touched pages */ | 612 | struct list_head pagelist; /* list of touched pages */ |
| 613 | /* callback */ | 613 | /* callback */ |
| 614 | void (*first_io)(struct fb_info *info); | ||
| 614 | void (*deferred_io)(struct fb_info *info, struct list_head *pagelist); | 615 | void (*deferred_io)(struct fb_info *info, struct list_head *pagelist); |
| 615 | }; | 616 | }; |
| 616 | #endif | 617 | #endif |
diff --git a/include/linux/mtd/gpmi-nand.h b/include/linux/mtd/gpmi-nand.h index 69b6dbf46b5e..ed3c4e09f3d1 100644 --- a/include/linux/mtd/gpmi-nand.h +++ b/include/linux/mtd/gpmi-nand.h | |||
| @@ -23,12 +23,12 @@ | |||
| 23 | #define GPMI_NAND_RES_SIZE 6 | 23 | #define GPMI_NAND_RES_SIZE 6 |
| 24 | 24 | ||
| 25 | /* Resource names for the GPMI NAND driver. */ | 25 | /* Resource names for the GPMI NAND driver. */ |
| 26 | #define GPMI_NAND_GPMI_REGS_ADDR_RES_NAME "GPMI NAND GPMI Registers" | 26 | #define GPMI_NAND_GPMI_REGS_ADDR_RES_NAME "gpmi-nand" |
| 27 | #define GPMI_NAND_GPMI_INTERRUPT_RES_NAME "GPMI NAND GPMI Interrupt" | 27 | #define GPMI_NAND_GPMI_INTERRUPT_RES_NAME "GPMI NAND GPMI Interrupt" |
| 28 | #define GPMI_NAND_BCH_REGS_ADDR_RES_NAME "GPMI NAND BCH Registers" | 28 | #define GPMI_NAND_BCH_REGS_ADDR_RES_NAME "bch" |
| 29 | #define GPMI_NAND_BCH_INTERRUPT_RES_NAME "GPMI NAND BCH Interrupt" | 29 | #define GPMI_NAND_BCH_INTERRUPT_RES_NAME "bch" |
| 30 | #define GPMI_NAND_DMA_CHANNELS_RES_NAME "GPMI NAND DMA Channels" | 30 | #define GPMI_NAND_DMA_CHANNELS_RES_NAME "GPMI NAND DMA Channels" |
| 31 | #define GPMI_NAND_DMA_INTERRUPT_RES_NAME "GPMI NAND DMA Interrupt" | 31 | #define GPMI_NAND_DMA_INTERRUPT_RES_NAME "gpmi-dma" |
| 32 | 32 | ||
| 33 | /** | 33 | /** |
| 34 | * struct gpmi_nand_platform_data - GPMI NAND driver platform data. | 34 | * struct gpmi_nand_platform_data - GPMI NAND driver platform data. |
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h index cf5ea8cdcf8e..63dadc0dfb62 100644 --- a/include/linux/mtd/mtd.h +++ b/include/linux/mtd/mtd.h | |||
| @@ -157,6 +157,15 @@ struct mtd_info { | |||
| 157 | unsigned int erasesize_mask; | 157 | unsigned int erasesize_mask; |
| 158 | unsigned int writesize_mask; | 158 | unsigned int writesize_mask; |
| 159 | 159 | ||
| 160 | /* | ||
| 161 | * read ops return -EUCLEAN if max number of bitflips corrected on any | ||
| 162 | * one region comprising an ecc step equals or exceeds this value. | ||
| 163 | * Settable by driver, else defaults to ecc_strength. User can override | ||
| 164 | * in sysfs. N.B. The meaning of the -EUCLEAN return code has changed; | ||
| 165 | * see Documentation/ABI/testing/sysfs-class-mtd for more detail. | ||
| 166 | */ | ||
| 167 | unsigned int bitflip_threshold; | ||
| 168 | |||
| 160 | // Kernel-only stuff starts here. | 169 | // Kernel-only stuff starts here. |
| 161 | const char *name; | 170 | const char *name; |
| 162 | int index; | 171 | int index; |
| @@ -164,7 +173,7 @@ struct mtd_info { | |||
| 164 | /* ECC layout structure pointer - read only! */ | 173 | /* ECC layout structure pointer - read only! */ |
| 165 | struct nand_ecclayout *ecclayout; | 174 | struct nand_ecclayout *ecclayout; |
| 166 | 175 | ||
| 167 | /* max number of correctible bit errors per writesize */ | 176 | /* max number of correctible bit errors per ecc step */ |
| 168 | unsigned int ecc_strength; | 177 | unsigned int ecc_strength; |
| 169 | 178 | ||
| 170 | /* Data for variable erase regions. If numeraseregions is zero, | 179 | /* Data for variable erase regions. If numeraseregions is zero, |
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h index 1482340d3d9f..57977c640529 100644 --- a/include/linux/mtd/nand.h +++ b/include/linux/mtd/nand.h | |||
| @@ -161,8 +161,6 @@ typedef enum { | |||
| 161 | * Option constants for bizarre disfunctionality and real | 161 | * Option constants for bizarre disfunctionality and real |
| 162 | * features. | 162 | * features. |
| 163 | */ | 163 | */ |
| 164 | /* Chip can not auto increment pages */ | ||
| 165 | #define NAND_NO_AUTOINCR 0x00000001 | ||
| 166 | /* Buswidth is 16 bit */ | 164 | /* Buswidth is 16 bit */ |
| 167 | #define NAND_BUSWIDTH_16 0x00000002 | 165 | #define NAND_BUSWIDTH_16 0x00000002 |
| 168 | /* Device supports partial programming without padding */ | 166 | /* Device supports partial programming without padding */ |
| @@ -207,7 +205,6 @@ typedef enum { | |||
| 207 | (NAND_NO_PADDING | NAND_CACHEPRG | NAND_COPYBACK) | 205 | (NAND_NO_PADDING | NAND_CACHEPRG | NAND_COPYBACK) |
| 208 | 206 | ||
| 209 | /* Macros to identify the above */ | 207 | /* Macros to identify the above */ |
| 210 | #define NAND_CANAUTOINCR(chip) (!(chip->options & NAND_NO_AUTOINCR)) | ||
| 211 | #define NAND_MUST_PAD(chip) (!(chip->options & NAND_NO_PADDING)) | 208 | #define NAND_MUST_PAD(chip) (!(chip->options & NAND_NO_PADDING)) |
| 212 | #define NAND_HAS_CACHEPROG(chip) ((chip->options & NAND_CACHEPRG)) | 209 | #define NAND_HAS_CACHEPROG(chip) ((chip->options & NAND_CACHEPRG)) |
| 213 | #define NAND_HAS_COPYBACK(chip) ((chip->options & NAND_COPYBACK)) | 210 | #define NAND_HAS_COPYBACK(chip) ((chip->options & NAND_COPYBACK)) |
| @@ -216,7 +213,7 @@ typedef enum { | |||
| 216 | && (chip->page_shift > 9)) | 213 | && (chip->page_shift > 9)) |
| 217 | 214 | ||
| 218 | /* Mask to zero out the chip options, which come from the id table */ | 215 | /* Mask to zero out the chip options, which come from the id table */ |
| 219 | #define NAND_CHIPOPTIONS_MSK (0x0000ffff & ~NAND_NO_AUTOINCR) | 216 | #define NAND_CHIPOPTIONS_MSK 0x0000ffff |
| 220 | 217 | ||
| 221 | /* Non chip related options */ | 218 | /* Non chip related options */ |
| 222 | /* This option skips the bbt scan during initialization. */ | 219 | /* This option skips the bbt scan during initialization. */ |
| @@ -363,21 +360,20 @@ struct nand_ecc_ctrl { | |||
| 363 | int (*correct)(struct mtd_info *mtd, uint8_t *dat, uint8_t *read_ecc, | 360 | int (*correct)(struct mtd_info *mtd, uint8_t *dat, uint8_t *read_ecc, |
| 364 | uint8_t *calc_ecc); | 361 | uint8_t *calc_ecc); |
| 365 | int (*read_page_raw)(struct mtd_info *mtd, struct nand_chip *chip, | 362 | int (*read_page_raw)(struct mtd_info *mtd, struct nand_chip *chip, |
| 366 | uint8_t *buf, int page); | 363 | uint8_t *buf, int oob_required, int page); |
| 367 | void (*write_page_raw)(struct mtd_info *mtd, struct nand_chip *chip, | 364 | void (*write_page_raw)(struct mtd_info *mtd, struct nand_chip *chip, |
| 368 | const uint8_t *buf); | 365 | const uint8_t *buf, int oob_required); |
| 369 | int (*read_page)(struct mtd_info *mtd, struct nand_chip *chip, | 366 | int (*read_page)(struct mtd_info *mtd, struct nand_chip *chip, |
| 370 | uint8_t *buf, int page); | 367 | uint8_t *buf, int oob_required, int page); |
| 371 | int (*read_subpage)(struct mtd_info *mtd, struct nand_chip *chip, | 368 | int (*read_subpage)(struct mtd_info *mtd, struct nand_chip *chip, |
| 372 | uint32_t offs, uint32_t len, uint8_t *buf); | 369 | uint32_t offs, uint32_t len, uint8_t *buf); |
| 373 | void (*write_page)(struct mtd_info *mtd, struct nand_chip *chip, | 370 | void (*write_page)(struct mtd_info *mtd, struct nand_chip *chip, |
| 374 | const uint8_t *buf); | 371 | const uint8_t *buf, int oob_required); |
| 375 | int (*write_oob_raw)(struct mtd_info *mtd, struct nand_chip *chip, | 372 | int (*write_oob_raw)(struct mtd_info *mtd, struct nand_chip *chip, |
| 376 | int page); | 373 | int page); |
| 377 | int (*read_oob_raw)(struct mtd_info *mtd, struct nand_chip *chip, | 374 | int (*read_oob_raw)(struct mtd_info *mtd, struct nand_chip *chip, |
| 378 | int page, int sndcmd); | 375 | int page); |
| 379 | int (*read_oob)(struct mtd_info *mtd, struct nand_chip *chip, int page, | 376 | int (*read_oob)(struct mtd_info *mtd, struct nand_chip *chip, int page); |
| 380 | int sndcmd); | ||
| 381 | int (*write_oob)(struct mtd_info *mtd, struct nand_chip *chip, | 377 | int (*write_oob)(struct mtd_info *mtd, struct nand_chip *chip, |
| 382 | int page); | 378 | int page); |
| 383 | }; | 379 | }; |
| @@ -459,6 +455,8 @@ struct nand_buffers { | |||
| 459 | * @pagemask: [INTERN] page number mask = number of (pages / chip) - 1 | 455 | * @pagemask: [INTERN] page number mask = number of (pages / chip) - 1 |
| 460 | * @pagebuf: [INTERN] holds the pagenumber which is currently in | 456 | * @pagebuf: [INTERN] holds the pagenumber which is currently in |
| 461 | * data_buf. | 457 | * data_buf. |
| 458 | * @pagebuf_bitflips: [INTERN] holds the bitflip count for the page which is | ||
| 459 | * currently in data_buf. | ||
| 462 | * @subpagesize: [INTERN] holds the subpagesize | 460 | * @subpagesize: [INTERN] holds the subpagesize |
| 463 | * @onfi_version: [INTERN] holds the chip ONFI version (BCD encoded), | 461 | * @onfi_version: [INTERN] holds the chip ONFI version (BCD encoded), |
| 464 | * non 0 if ONFI supported. | 462 | * non 0 if ONFI supported. |
| @@ -505,7 +503,8 @@ struct nand_chip { | |||
| 505 | int (*errstat)(struct mtd_info *mtd, struct nand_chip *this, int state, | 503 | int (*errstat)(struct mtd_info *mtd, struct nand_chip *this, int state, |
| 506 | int status, int page); | 504 | int status, int page); |
| 507 | int (*write_page)(struct mtd_info *mtd, struct nand_chip *chip, | 505 | int (*write_page)(struct mtd_info *mtd, struct nand_chip *chip, |
| 508 | const uint8_t *buf, int page, int cached, int raw); | 506 | const uint8_t *buf, int oob_required, int page, |
| 507 | int cached, int raw); | ||
| 509 | 508 | ||
| 510 | int chip_delay; | 509 | int chip_delay; |
| 511 | unsigned int options; | 510 | unsigned int options; |
| @@ -519,6 +518,7 @@ struct nand_chip { | |||
| 519 | uint64_t chipsize; | 518 | uint64_t chipsize; |
| 520 | int pagemask; | 519 | int pagemask; |
| 521 | int pagebuf; | 520 | int pagebuf; |
| 521 | unsigned int pagebuf_bitflips; | ||
| 522 | int subpagesize; | 522 | int subpagesize; |
| 523 | uint8_t cellinfo; | 523 | uint8_t cellinfo; |
| 524 | int badblockpos; | 524 | int badblockpos; |
| @@ -654,6 +654,7 @@ struct platform_nand_ctrl { | |||
| 654 | void (*cmd_ctrl)(struct mtd_info *mtd, int dat, unsigned int ctrl); | 654 | void (*cmd_ctrl)(struct mtd_info *mtd, int dat, unsigned int ctrl); |
| 655 | void (*write_buf)(struct mtd_info *mtd, const uint8_t *buf, int len); | 655 | void (*write_buf)(struct mtd_info *mtd, const uint8_t *buf, int len); |
| 656 | void (*read_buf)(struct mtd_info *mtd, uint8_t *buf, int len); | 656 | void (*read_buf)(struct mtd_info *mtd, uint8_t *buf, int len); |
| 657 | unsigned char (*read_byte)(struct mtd_info *mtd); | ||
| 657 | void *priv; | 658 | void *priv; |
| 658 | }; | 659 | }; |
| 659 | 660 | ||
diff --git a/include/video/auo_k190xfb.h b/include/video/auo_k190xfb.h new file mode 100644 index 000000000000..609efe8c686e --- /dev/null +++ b/include/video/auo_k190xfb.h | |||
| @@ -0,0 +1,106 @@ | |||
| 1 | /* | ||
| 2 | * Definitions for AUO-K190X framebuffer drivers | ||
| 3 | * | ||
| 4 | * Copyright (C) 2012 Heiko Stuebner <heiko@sntech.de> | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License version 2 as | ||
| 8 | * published by the Free Software Foundation. | ||
| 9 | */ | ||
| 10 | |||
| 11 | #ifndef _LINUX_VIDEO_AUO_K190XFB_H_ | ||
| 12 | #define _LINUX_VIDEO_AUO_K190XFB_H_ | ||
| 13 | |||
| 14 | /* Controller standby command needs a param */ | ||
| 15 | #define AUOK190X_QUIRK_STANDBYPARAM (1 << 0) | ||
| 16 | |||
| 17 | /* Controller standby is completely broken */ | ||
| 18 | #define AUOK190X_QUIRK_STANDBYBROKEN (1 << 1) | ||
| 19 | |||
| 20 | /* | ||
| 21 | * Resolutions for the displays | ||
| 22 | */ | ||
| 23 | #define AUOK190X_RESOLUTION_800_600 0 | ||
| 24 | #define AUOK190X_RESOLUTION_1024_768 1 | ||
| 25 | |||
| 26 | /* | ||
| 27 | * struct used by auok190x. board specific stuff comes from *board | ||
| 28 | */ | ||
| 29 | struct auok190xfb_par { | ||
| 30 | struct fb_info *info; | ||
| 31 | struct auok190x_board *board; | ||
| 32 | |||
| 33 | struct regulator *regulator; | ||
| 34 | |||
| 35 | struct mutex io_lock; | ||
| 36 | struct delayed_work work; | ||
| 37 | wait_queue_head_t waitq; | ||
| 38 | int resolution; | ||
| 39 | int rotation; | ||
| 40 | int consecutive_threshold; | ||
| 41 | int update_cnt; | ||
| 42 | |||
| 43 | /* panel and controller informations */ | ||
| 44 | int epd_type; | ||
| 45 | int panel_size_int; | ||
| 46 | int panel_size_float; | ||
| 47 | int panel_model; | ||
| 48 | int tcon_version; | ||
| 49 | int lut_version; | ||
| 50 | |||
| 51 | /* individual controller callbacks */ | ||
| 52 | void (*update_partial)(struct auok190xfb_par *par, u16 y1, u16 y2); | ||
| 53 | void (*update_all)(struct auok190xfb_par *par); | ||
| 54 | bool (*need_refresh)(struct auok190xfb_par *par); | ||
| 55 | void (*init)(struct auok190xfb_par *par); | ||
| 56 | void (*recover)(struct auok190xfb_par *par); | ||
| 57 | |||
| 58 | int update_mode; /* mode to use for updates */ | ||
| 59 | int last_mode; /* update mode last used */ | ||
| 60 | int flash; | ||
| 61 | |||
| 62 | /* power management */ | ||
| 63 | int autosuspend_delay; | ||
| 64 | bool standby; | ||
| 65 | bool manual_standby; | ||
| 66 | }; | ||
| 67 | |||
| 68 | /** | ||
| 69 | * Board specific platform-data | ||
| 70 | * @init: initialize the controller interface | ||
| 71 | * @cleanup: cleanup the controller interface | ||
| 72 | * @wait_for_rdy: wait until the controller is not busy anymore | ||
| 73 | * @set_ctl: change an interface control | ||
| 74 | * @set_hdb: write a value to the data register | ||
| 75 | * @get_hdb: read a value from the data register | ||
| 76 | * @setup_irq: method to setup the irq handling on the busy gpio | ||
| 77 | * @gpio_nsleep: sleep gpio | ||
| 78 | * @gpio_nrst: reset gpio | ||
| 79 | * @gpio_nbusy: busy gpio | ||
| 80 | * @resolution: one of the AUOK190X_RESOLUTION constants | ||
| 81 | * @rotation: rotation of the framebuffer | ||
| 82 | * @quirks: controller quirks to honor | ||
| 83 | * @fps: frames per second for defio | ||
| 84 | */ | ||
| 85 | struct auok190x_board { | ||
| 86 | int (*init)(struct auok190xfb_par *); | ||
| 87 | void (*cleanup)(struct auok190xfb_par *); | ||
| 88 | int (*wait_for_rdy)(struct auok190xfb_par *); | ||
| 89 | |||
| 90 | void (*set_ctl)(struct auok190xfb_par *, unsigned char, u8); | ||
| 91 | void (*set_hdb)(struct auok190xfb_par *, u16); | ||
| 92 | u16 (*get_hdb)(struct auok190xfb_par *); | ||
| 93 | |||
| 94 | int (*setup_irq)(struct fb_info *); | ||
| 95 | |||
| 96 | int gpio_nsleep; | ||
| 97 | int gpio_nrst; | ||
| 98 | int gpio_nbusy; | ||
| 99 | |||
| 100 | int resolution; | ||
| 101 | int rotation; | ||
| 102 | int quirks; | ||
| 103 | int fps; | ||
| 104 | }; | ||
| 105 | |||
| 106 | #endif | ||
diff --git a/include/video/exynos_dp.h b/include/video/exynos_dp.h index 8847a9d6dd42..bd8cabd344db 100644 --- a/include/video/exynos_dp.h +++ b/include/video/exynos_dp.h | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | 14 | ||
| 15 | #define DP_TIMEOUT_LOOP_COUNT 100 | 15 | #define DP_TIMEOUT_LOOP_COUNT 100 |
| 16 | #define MAX_CR_LOOP 5 | 16 | #define MAX_CR_LOOP 5 |
| 17 | #define MAX_EQ_LOOP 4 | 17 | #define MAX_EQ_LOOP 5 |
| 18 | 18 | ||
| 19 | enum link_rate_type { | 19 | enum link_rate_type { |
| 20 | LINK_RATE_1_62GBPS = 0x06, | 20 | LINK_RATE_1_62GBPS = 0x06, |
diff --git a/include/video/exynos_mipi_dsim.h b/include/video/exynos_mipi_dsim.h index 772c770535f1..83ce5e667d47 100644 --- a/include/video/exynos_mipi_dsim.h +++ b/include/video/exynos_mipi_dsim.h | |||
| @@ -315,6 +315,7 @@ struct mipi_dsim_lcd_device { | |||
| 315 | int id; | 315 | int id; |
| 316 | int bus_id; | 316 | int bus_id; |
| 317 | int irq; | 317 | int irq; |
| 318 | int panel_reverse; | ||
| 318 | 319 | ||
| 319 | struct mipi_dsim_device *master; | 320 | struct mipi_dsim_device *master; |
| 320 | void *platform_data; | 321 | void *platform_data; |
diff --git a/include/video/omapdss.h b/include/video/omapdss.h index 1c46a14341dd..c8e59b4a3364 100644 --- a/include/video/omapdss.h +++ b/include/video/omapdss.h | |||
| @@ -51,6 +51,8 @@ | |||
| 51 | 51 | ||
| 52 | struct omap_dss_device; | 52 | struct omap_dss_device; |
| 53 | struct omap_overlay_manager; | 53 | struct omap_overlay_manager; |
| 54 | struct snd_aes_iec958; | ||
| 55 | struct snd_cea_861_aud_if; | ||
| 54 | 56 | ||
| 55 | enum omap_display_type { | 57 | enum omap_display_type { |
| 56 | OMAP_DISPLAY_TYPE_NONE = 0, | 58 | OMAP_DISPLAY_TYPE_NONE = 0, |
| @@ -158,6 +160,13 @@ enum omap_dss_display_state { | |||
| 158 | OMAP_DSS_DISPLAY_SUSPENDED, | 160 | OMAP_DSS_DISPLAY_SUSPENDED, |
| 159 | }; | 161 | }; |
| 160 | 162 | ||
| 163 | enum omap_dss_audio_state { | ||
| 164 | OMAP_DSS_AUDIO_DISABLED = 0, | ||
| 165 | OMAP_DSS_AUDIO_ENABLED, | ||
| 166 | OMAP_DSS_AUDIO_CONFIGURED, | ||
| 167 | OMAP_DSS_AUDIO_PLAYING, | ||
| 168 | }; | ||
| 169 | |||
| 161 | /* XXX perhaps this should be removed */ | 170 | /* XXX perhaps this should be removed */ |
| 162 | enum omap_dss_overlay_managers { | 171 | enum omap_dss_overlay_managers { |
| 163 | OMAP_DSS_OVL_MGR_LCD, | 172 | OMAP_DSS_OVL_MGR_LCD, |
| @@ -166,8 +175,9 @@ enum omap_dss_overlay_managers { | |||
| 166 | }; | 175 | }; |
| 167 | 176 | ||
| 168 | enum omap_dss_rotation_type { | 177 | enum omap_dss_rotation_type { |
| 169 | OMAP_DSS_ROT_DMA = 0, | 178 | OMAP_DSS_ROT_DMA = 1 << 0, |
| 170 | OMAP_DSS_ROT_VRFB = 1, | 179 | OMAP_DSS_ROT_VRFB = 1 << 1, |
| 180 | OMAP_DSS_ROT_TILER = 1 << 2, | ||
| 171 | }; | 181 | }; |
| 172 | 182 | ||
| 173 | /* clockwise rotation angle */ | 183 | /* clockwise rotation angle */ |
| @@ -309,6 +319,7 @@ struct omap_dss_board_info { | |||
| 309 | struct omap_dss_device *default_device; | 319 | struct omap_dss_device *default_device; |
| 310 | int (*dsi_enable_pads)(int dsi_id, unsigned lane_mask); | 320 | int (*dsi_enable_pads)(int dsi_id, unsigned lane_mask); |
| 311 | void (*dsi_disable_pads)(int dsi_id, unsigned lane_mask); | 321 | void (*dsi_disable_pads)(int dsi_id, unsigned lane_mask); |
| 322 | int (*set_min_bus_tput)(struct device *dev, unsigned long r); | ||
| 312 | }; | 323 | }; |
| 313 | 324 | ||
| 314 | /* Init with the board info */ | 325 | /* Init with the board info */ |
| @@ -316,11 +327,6 @@ extern int omap_display_init(struct omap_dss_board_info *board_data); | |||
| 316 | /* HDMI mux init*/ | 327 | /* HDMI mux init*/ |
| 317 | extern int omap_hdmi_init(enum omap_hdmi_flags flags); | 328 | extern int omap_hdmi_init(enum omap_hdmi_flags flags); |
| 318 | 329 | ||
| 319 | struct omap_display_platform_data { | ||
| 320 | struct omap_dss_board_info *board_data; | ||
| 321 | /* TODO: Additional members to be added when PM is considered */ | ||
| 322 | }; | ||
| 323 | |||
| 324 | struct omap_video_timings { | 330 | struct omap_video_timings { |
| 325 | /* Unit: pixels */ | 331 | /* Unit: pixels */ |
| 326 | u16 x_res; | 332 | u16 x_res; |
| @@ -587,6 +593,8 @@ struct omap_dss_device { | |||
| 587 | 593 | ||
| 588 | enum omap_dss_display_state state; | 594 | enum omap_dss_display_state state; |
| 589 | 595 | ||
| 596 | enum omap_dss_audio_state audio_state; | ||
| 597 | |||
| 590 | /* platform specific */ | 598 | /* platform specific */ |
| 591 | int (*platform_enable)(struct omap_dss_device *dssdev); | 599 | int (*platform_enable)(struct omap_dss_device *dssdev); |
| 592 | void (*platform_disable)(struct omap_dss_device *dssdev); | 600 | void (*platform_disable)(struct omap_dss_device *dssdev); |
| @@ -599,6 +607,11 @@ struct omap_dss_hdmi_data | |||
| 599 | int hpd_gpio; | 607 | int hpd_gpio; |
| 600 | }; | 608 | }; |
| 601 | 609 | ||
| 610 | struct omap_dss_audio { | ||
| 611 | struct snd_aes_iec958 *iec; | ||
| 612 | struct snd_cea_861_aud_if *cea; | ||
| 613 | }; | ||
| 614 | |||
| 602 | struct omap_dss_driver { | 615 | struct omap_dss_driver { |
| 603 | struct device_driver driver; | 616 | struct device_driver driver; |
| 604 | 617 | ||
| @@ -646,6 +659,24 @@ struct omap_dss_driver { | |||
| 646 | 659 | ||
| 647 | int (*read_edid)(struct omap_dss_device *dssdev, u8 *buf, int len); | 660 | int (*read_edid)(struct omap_dss_device *dssdev, u8 *buf, int len); |
| 648 | bool (*detect)(struct omap_dss_device *dssdev); | 661 | bool (*detect)(struct omap_dss_device *dssdev); |
| 662 | |||
| 663 | /* | ||
| 664 | * For display drivers that support audio. This encompasses | ||
| 665 | * HDMI and DisplayPort at the moment. | ||
| 666 | */ | ||
| 667 | /* | ||
| 668 | * Note: These functions might sleep. Do not call while | ||
| 669 | * holding a spinlock/readlock. | ||
| 670 | */ | ||
| 671 | int (*audio_enable)(struct omap_dss_device *dssdev); | ||
| 672 | void (*audio_disable)(struct omap_dss_device *dssdev); | ||
| 673 | bool (*audio_supported)(struct omap_dss_device *dssdev); | ||
| 674 | int (*audio_config)(struct omap_dss_device *dssdev, | ||
| 675 | struct omap_dss_audio *audio); | ||
| 676 | /* Note: These functions may not sleep */ | ||
| 677 | int (*audio_start)(struct omap_dss_device *dssdev); | ||
| 678 | void (*audio_stop)(struct omap_dss_device *dssdev); | ||
| 679 | |||
| 649 | }; | 680 | }; |
| 650 | 681 | ||
| 651 | int omap_dss_register_driver(struct omap_dss_driver *); | 682 | int omap_dss_register_driver(struct omap_dss_driver *); |
| @@ -670,6 +701,8 @@ struct omap_overlay *omap_dss_get_overlay(int num); | |||
| 670 | void omapdss_default_get_resolution(struct omap_dss_device *dssdev, | 701 | void omapdss_default_get_resolution(struct omap_dss_device *dssdev, |
| 671 | u16 *xres, u16 *yres); | 702 | u16 *xres, u16 *yres); |
| 672 | int omapdss_default_get_recommended_bpp(struct omap_dss_device *dssdev); | 703 | int omapdss_default_get_recommended_bpp(struct omap_dss_device *dssdev); |
| 704 | void omapdss_default_get_timings(struct omap_dss_device *dssdev, | ||
| 705 | struct omap_video_timings *timings); | ||
| 673 | 706 | ||
| 674 | typedef void (*omap_dispc_isr_t) (void *arg, u32 mask); | 707 | typedef void (*omap_dispc_isr_t) (void *arg, u32 mask); |
| 675 | int omap_dispc_register_isr(omap_dispc_isr_t isr, void *arg, u32 mask); | 708 | int omap_dispc_register_isr(omap_dispc_isr_t isr, void *arg, u32 mask); |
diff --git a/include/video/sh_mobile_hdmi.h b/include/video/sh_mobile_hdmi.h index 728f9de9c258..63d20efa254a 100644 --- a/include/video/sh_mobile_hdmi.h +++ b/include/video/sh_mobile_hdmi.h | |||
| @@ -18,9 +18,11 @@ struct clk; | |||
| 18 | /* | 18 | /* |
| 19 | * flags format | 19 | * flags format |
| 20 | * | 20 | * |
| 21 | * 0x0000000A | 21 | * 0x00000CBA |
| 22 | * | 22 | * |
| 23 | * A: Audio source select | 23 | * A: Audio source select |
| 24 | * B: Int output option | ||
| 25 | * C: Chip specific option | ||
| 24 | */ | 26 | */ |
| 25 | 27 | ||
| 26 | /* Audio source select */ | 28 | /* Audio source select */ |
| @@ -30,6 +32,14 @@ struct clk; | |||
| 30 | #define HDMI_SND_SRC_DSD (2 << 0) | 32 | #define HDMI_SND_SRC_DSD (2 << 0) |
| 31 | #define HDMI_SND_SRC_HBR (3 << 0) | 33 | #define HDMI_SND_SRC_HBR (3 << 0) |
| 32 | 34 | ||
| 35 | /* Int output option */ | ||
| 36 | #define HDMI_OUTPUT_PUSH_PULL (1 << 4) /* System control : output mode */ | ||
| 37 | #define HDMI_OUTPUT_POLARITY_HI (1 << 5) /* System control : output polarity */ | ||
| 38 | |||
| 39 | /* Chip specific option */ | ||
| 40 | #define HDMI_32BIT_REG (1 << 8) | ||
| 41 | #define HDMI_HAS_HTOP1 (1 << 9) | ||
| 42 | |||
| 33 | struct sh_mobile_hdmi_info { | 43 | struct sh_mobile_hdmi_info { |
| 34 | unsigned int flags; | 44 | unsigned int flags; |
| 35 | long (*clk_optimize_parent)(unsigned long target, unsigned long *best_freq, | 45 | long (*clk_optimize_parent)(unsigned long target, unsigned long *best_freq, |
