Advertisement
Guest User

beagleboard xm chipsee lcd touchscreen ads7846

a guest
Feb 10th, 2013
277
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 6.98 KB | None | 0 0
  1. diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
  2. index a56b0d5..9588886 100644
  3. --- a/arch/arm/mach-omap2/board-omap3beagle.c
  4. +++ b/arch/arm/mach-omap2/board-omap3beagle.c
  5. @@ -26,6 +26,9 @@
  6.  #include <linux/gpio_keys.h>
  7.  #include <linux/opp.h>
  8.  
  9. +// Added for touch screen
  10. +#include <linux/spi/ads7846.h>
  11. +
  12.  #include <linux/mtd/mtd.h>
  13.  #include <linux/mtd/partitions.h>
  14.  #include <linux/mtd/nand.h>
  15. @@ -191,6 +194,88 @@ static struct {
  16.     .i2c_settings = EXPANSION_I2C_NONE,
  17.  };
  18.  
  19. +#ifdef CONFIG_TOUCHSCREEN_ADS7846
  20. +
  21. +#define OMAP3_EVM_TS_GPIO       162 /* gpio_133 for v1.0 */
  22. +
  23. +#include <plat/mcspi.h>
  24. +#include <linux/spi/spi.h>
  25. +
  26. +static struct omap2_mcspi_device_config ads7846_mcspi_config = {
  27. +        .turbo_mode     = 0,
  28. +        //.single_channel = 1,    /* 0: slave, 1: master */
  29. +};
  30. +
  31. +static int ads7846_get_pendown_state(void)
  32. +{
  33. +        return !gpio_get_value(OMAP3_EVM_TS_GPIO);
  34. +}
  35. +
  36. +struct ads7846_platform_data ads7846_config = {
  37. +        .x_max                  = 0x0fff,
  38. +        .y_max                  = 0x0fff,
  39. +        .x_plate_ohms           = 180,
  40. +        .pressure_max           = 255,
  41. +        .debounce_max           = 10,
  42. +        .debounce_tol           = 3,
  43. +        .debounce_rep           = 1,
  44. +        .get_pendown_state      = ads7846_get_pendown_state,
  45. +        .keep_vref_on           = 1,
  46. +        .settle_delay_usecs     = 150,
  47. +        .wakeup                    = true,
  48. +};
  49. +
  50. +struct spi_board_info omap3evm_spi_board_info[] = {
  51. +        [0] = {
  52. +                .modalias               = "ads7846",
  53. +                .bus_num                = 3,
  54. +                .chip_select            = 0,
  55. +                .max_speed_hz           = 1500000,
  56. +                .controller_data        = &ads7846_mcspi_config,
  57. +                .platform_data          = &ads7846_config,
  58. +               .mode = SPI_MODE_1 | SPI_CS_HIGH,
  59. +        },
  60. +};
  61. +
  62. +static void ads7846_dev_init(void)
  63. +{
  64. +    printk("::::::::: Initialize ads7846 touch screen controller\n");
  65. +
  66. +        if (gpio_request(OMAP3_EVM_TS_GPIO, "ADS7846 pendown") < 0)
  67. +                printk(KERN_ERR "can't get ads7846 pen down GPIO\n");
  68. +
  69. +       omap3evm_spi_board_info[0].irq =  gpio_to_irq(OMAP3_EVM_TS_GPIO);
  70. +        gpio_direction_input(OMAP3_EVM_TS_GPIO);
  71. +
  72. +        //omap_set_gpio_debounce(OMAP3_EVM_TS_GPIO, 1);
  73. +        //omap_set_gpio_debounce_time(OMAP3_EVM_TS_GPIO, 0xa);
  74. +       gpio_set_debounce(OMAP3_EVM_TS_GPIO, (0x0a+1)*31);
  75. +       spi_register_board_info(omap3evm_spi_board_info, ARRAY_SIZE(omap3evm_spi_board_info));
  76. +}
  77. +
  78. +/* ads7846 on SPI */
  79. +static struct regulator_consumer_supply omap3evm_vio_supply[] = {
  80. +   REGULATOR_SUPPLY("vcc", "spi3.0"),
  81. +};
  82. +
  83. +/* VIO for ads7846 */
  84. +static struct regulator_init_data omap3evm_vio = {
  85. +   .constraints = {
  86. +       .min_uV         = 1800000,
  87. +       .max_uV         = 1800000,
  88. +       .apply_uV       = true,
  89. +       .valid_modes_mask   = REGULATOR_MODE_NORMAL
  90. +                   | REGULATOR_MODE_STANDBY,
  91. +       .valid_ops_mask     = REGULATOR_CHANGE_MODE
  92. +                   | REGULATOR_CHANGE_STATUS,
  93. +   },
  94. +   .num_consumer_supplies  = ARRAY_SIZE(omap3evm_vio_supply),
  95. +   .consumer_supplies  = omap3evm_vio_supply,
  96. +};
  97. +
  98. +#else
  99. +static inline void __init ads7846_dev_init(void) { return; }
  100. +#endif
  101.  #if defined(CONFIG_WL12XX) || defined(CONFIG_WL12XX_MODULE)
  102.  #include <linux/regulator/fixed.h>
  103.  #include <linux/ti_wilink_st.h>
  104. @@ -474,6 +559,14 @@ static struct omap2_hsmmc_info mmc[] = {
  105.         .gpio_wp    = -EINVAL,
  106.         .deferred   = true,
  107.     },
  108. +#if 0
  109. +   {
  110. +       .mmc        = 2,
  111. +       .caps       = MMC_CAP_4_BIT_DATA,
  112. +       .transceiver    = true,
  113. +       .ocr_mask   = 0x00100000,   /* 3.3V */
  114. +   },
  115. +#endif
  116.     {}  /* Terminator */
  117.  };
  118.  
  119. @@ -712,6 +805,7 @@ static struct twl4030_platform_data beagle_twldata = {
  120.     .vmmc1      = &beagle_vmmc1,
  121.     .vsim       = &beagle_vsim,
  122.     .vaux3      = &beagle_vaux3,
  123. +   .vio        = &omap3evm_vio,
  124.     .vaux4      = &beagle_vaux4,
  125.     .power      = &beagle_twl4030_power_data,
  126.  };
  127. @@ -1022,11 +1116,20 @@ static void __init beagle_opp_init(void)
  128.  static void __init omap3_beagle_config_mcspi3_mux(void)
  129.  {
  130.     // NOTE: Clock pins need to be in input mode
  131. +#if 0
  132.     omap_mux_init_signal("sdmmc2_clk.mcspi3_clk", OMAP_PIN_INPUT);
  133.     omap_mux_init_signal("sdmmc2_cmd.mcspi3_simo", OMAP_PIN_OUTPUT);
  134.     omap_mux_init_signal("sdmmc2_dat0.mcspi3_somi", OMAP_PIN_INPUT_PULLUP);
  135.     omap_mux_init_signal("sdmmc2_dat2.mcspi3_cs1", OMAP_PIN_OUTPUT);
  136.     omap_mux_init_signal("sdmmc2_dat3.mcspi3_cs0", OMAP_PIN_OUTPUT);
  137. +#else
  138. +   omap_mux_init_signal("etk_d3.mcspi3_clk", OMAP_PIN_INPUT);
  139. +   omap_mux_init_signal("etk_d0.mcspi3_simo", OMAP_PIN_OUTPUT);
  140. +   omap_mux_init_signal("etk_d1.mcspi3_somi", OMAP_PIN_INPUT_PULLUP);
  141. +   omap_mux_init_signal("sdmmc2_dat2.mcspi3_cs1", OMAP_PIN_OUTPUT);
  142. +   omap_mux_init_signal("etk_d2.mcspi3_cs0", OMAP_PIN_OUTPUT);
  143. +   omap_mux_init_signal("mcbsp1_clkx.gpio_162", OMAP_PIN_INPUT);
  144. +#endif
  145.  }
  146.  
  147.  static void __init omap3_beagle_config_mcspi4_mux(void)
  148. @@ -1225,9 +1328,13 @@ static void __init omap3_beagle_init(void)
  149.         omap3_beagle_config_mcspi4_mux();
  150.         spi_register_board_info(beagle_mcspi_board_info, ARRAY_SIZE(beagle_mcspi_board_info));
  151.     }
  152. +   omap3_beagle_config_mcspi3_mux();
  153. +   //omap3_beagle_config_mcspi4_mux();
  154.  
  155.     usb_musb_init(NULL);
  156.     usbhs_init(&usbhs_bdata);
  157. +   ads7846_dev_init();
  158. +   //omap_ads7846_init( 3, OMAP3_EVM_TS_GPIO, 310, NULL );
  159.     omap_nand_flash_init(NAND_BUSWIDTH_16, omap3beagle_nand_partitions,
  160.                  ARRAY_SIZE(omap3beagle_nand_partitions));
  161.  
  162. diff --git a/drivers/video/modedb.c b/drivers/video/modedb.c
  163. index 69ad1ec..4f740c3 100644
  164. --- a/drivers/video/modedb.c
  165. +++ b/drivers/video/modedb.c
  166. @@ -297,6 +297,18 @@ static const struct fb_videomode modedb[] = {
  167.     /* 800x480 @ 60 Hz, Toshiba LTA070B220F 7 inch LCD */
  168.     {  NULL, 60, 800, 480, 32787, 48, 80, 33, 31, 32, 2,
  169.         FB_SYNC_HOR_HIGH_ACT|FB_SYNC_VERT_HIGH_ACT, FB_VMODE_NONINTERLACED },
  170. +
  171. +   /* 800x480 @ 60 Hz, Toshiba LTA070B220F 7 inch LCD */
  172. +   {  "armphone", 60, 800, 480, 36000,
  173. +                   10, 80, 20, 31,
  174. +                   32, 2,
  175. +       FB_VMODE_NONINTERLACED },
  176. +   //i { "hd720", 60, 1280, 720, 13468,
  177. +   //      220, 110, 20, 5,
  178. +   //      40, 5, 0,
  179. +   //{ NULL, 60, 1024, 768, 15384,
  180. +   //      168, 8, 29, 3,
  181. +   //      144, 6, 0,
  182.  };
  183.  
  184.  #ifdef CONFIG_FB_MODE_HELPERS
  185. diff --git a/drivers/video/omap2/displays/panel-generic-dpi.c b/drivers/video/omap2/displays/panel-generic-dpi.c
  186. index 0e329d4..e64daef 100644
  187. --- a/drivers/video/omap2/displays/panel-generic-dpi.c
  188. +++ b/drivers/video/omap2/displays/panel-generic-dpi.c
  189. @@ -55,6 +55,7 @@ static struct panel_config generic_dpi_panels[] = {
  190.     /* Sharp LQ043T1DG01 */
  191.     {
  192.         {
  193. +           /*
  194.             .x_res      = 480,
  195.             .y_res      = 272,
  196.  
  197. @@ -67,6 +68,16 @@ static struct panel_config generic_dpi_panels[] = {
  198.             .vsw        = 11,
  199.             .vfp        = 3,
  200.             .vbp        = 2,
  201. +           */
  202. +    .x_res      = 800,
  203. +    .y_res      = 480,
  204. +    .pixel_clock    = 36000,
  205. +    .hfp        = 1,
  206. +    .hsw        = 48,
  207. +    .hbp        = 46,
  208. +    .vfp        = 12,
  209. +    .vsw        = 3,
  210. +    .vbp        = 23,
  211.  
  212.             .vsync_level    = OMAPDSS_SIG_ACTIVE_LOW,
  213.             .hsync_level    = OMAPDSS_SIG_ACTIVE_LOW,
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement