From edf6b57f73e3cafaecd67a71fdf7313e75c1b3e8 Mon Sep 17 00:00:00 2001 From: Julius Werner Date: Fri, 25 Oct 2013 17:49:26 -0700 Subject: tegra124/nyan: display, clock, and other updates tegra124: Set Tx FIFO threshold value to recommended setting Reviewed-on: https://chromium-review.googlesource.com/175200 (cherry picked from commit c8f086711c6ae2db70fc8e0d84b54f5952fbe0ad) tegra124: add CLK_X definitions Reviewed-on: https://chromium-review.googlesource.com/175220 (cherry picked from commit 3f8a844bd2f151e06d82d1a7fac4492c6bc9417d) tegra124: fix incorrect struct member in clk_rst.h Reviewed-on: https://chromium-review.googlesource.com/175270 (cherry picked from commit 967193d5984a086c297988caa580b61cb4d0414c) tegra124: add the _x clocks to clock_enable_clear_reset Reviewed-on: https://chromium-review.googlesource.com/175539 (cherry picked from commit df4c515d73b02061e5c98f51efd50e04b10d63f5) tegra124: add clock support code for graphics. Reviewed-on: https://chromium-review.googlesource.com/175162 (cherry picked from commit b8eb6ab4cdc5a583636c10fa05f947a244f94819) tegra124: Clean up some #defines for DMA Reviewed-on: https://chromium-review.googlesource.com/175631 (cherry picked from commit 1a0a900f2d060916c9878781b82113b16a7945d9) tegra124: enable flow control for APBDMA in SPI driver Reviewed-on: https://chromium-review.googlesource.com/175630 (cherry picked from commit 873e6f9e95f6cb0162fa06216682fbc71ab0202d) nyan: move clock setup for the display out of dca_init Reviewed-on: https://chromium-review.googlesource.com/175656 (cherry picked from commit 32dd9947a60298ff9488c911629802c257ed6afc) tegra124: more display PLL setup and clock hardcode removal. Reviewed-on: https://chromium-review.googlesource.com/175732 (cherry picked from commit 80402876b5daa9e9389fd4fab5f539d89c37fa7f) tegra124: move dp.c from tegra to tegra124 Reviewed-on: https://chromium-review.googlesource.com/175830 (cherry picked from commit e98be569b0ba7f4d565ce677343a317db08344e0) tegra124: clean up tabbing; nyan: add a comment and setting to devicetree.cb Reviewed-on: https://chromium-review.googlesource.com/175889 (cherry picked from commit 4e513196b0014c5a82079f3aa87c2efbeb645484) tegra: get rid of struct members that are not used Reviewed-on: https://chromium-review.googlesource.com/176023 (cherry picked from commit 032b8a0c9fe0152ebc27344e93128865ecb918a6) tegra124: Increase SCLK (AVP) to 300MHz Reviewed-on: https://chromium-review.googlesource.com/175489 (cherry picked from commit 7e082f2c2f030950d652f1f87f637e15dee38552) tegra124: Address old main CPU starting review feedback. Reviewed-on: https://chromium-review.googlesource.com/175933 (cherry picked from commit 1d76ac71bd839dff9198e65132ec25212dd55ffd) tegra124: Revise clock source configuration for irregular peripherals. Reviewed-on: https://chromium-review.googlesource.com/176109 (cherry picked from commit 1021c215190602a2b8c1ab97d6c8313d89597d99) nyan: add timestamps in romstage Reviewed-on: https://chromium-review.googlesource.com/176172 (cherry picked from commit cd626aa10b56cd4da6ebda36fe487e44b08f3935) tegra124: Allow enabling clock output for external peripherals. Reviewed-on: https://chromium-review.googlesource.com/176108 (cherry picked from commit ea9fb6393ee80da77c9fbc30f605859c7009c9ed) nyan: Enable and configure clocks for I2S and audio codec. Reviewed-on: https://chromium-review.googlesource.com/176104 (cherry picked from commit 1fb659b3e73285ff8218c0f229734edd3b979ca4) tegra124: Fix typo in pinmux name. Reviewed-on: https://chromium-review.googlesource.com/176215 (cherry picked from commit c7915ad41a3f1d1452aa6d6d287aaa8eb9e85c34) nyan: Add pinmux settings for audio peripherals. Reviewed-on: https://chromium-review.googlesource.com/176212 (cherry picked from commit 37412f3201590e47a06d4678fa833164d370b41c) nyan: De-array-ify the PMIC setup code. Reviewed-on: https://chromium-review.googlesource.com/176903 (cherry picked from commit 86ab1ce9fbf6d5362af1ee37de1394412366f247) nyan: Add a kconfig for building for the original nyans in pixel cases. Reviewed-on: https://chromium-review.googlesource.com/176904 (cherry picked from commit 1d05fd5bc40d727826510ec81496ce4a49e257ed) nyan: Set the CPU voltage differently depending on which PMIC is in use. Reviewed-on: https://chromium-review.googlesource.com/176905 (cherry picked from commit 31507f6a575220737ee5683b312cd162600f89cc) nyan: Increase the CPU voltage to 1.2V. Reviewed-on: https://chromium-review.googlesource.com/176906 (cherry picked from commit fe4795e66b515c2523df09a8800ecac9a3f63557) tegra124: Flesh out/tidy up the flow controller constants. Reviewed-on: https://chromium-review.googlesource.com/177085 (cherry picked from commit b50d315506a5ab9c81b6bbaf8cf580dbb3e78794) tegra124: When leaving the bootblock/AVP, really stop the AVP. Reviewed-on: https://chromium-review.googlesource.com/177086 (cherry picked from commit 06c10df889d4d935bc99792df860d93766ae44dd) nyan: Set SPI4 speed to 33MHz Reviewed-on: https://chromium-review.googlesource.com/177038 (cherry picked from commit c98de65482fabdb5c76944fe3bf762191b3a0a55) nyan: Do console_init() in romstage Reviewed-on: https://chromium-review.googlesource.com/176763 (cherry picked from commit 0bec32e09eab28bc5ea49b7896a8b6f489143b03) nyan: Add a prompt to the CONFIG_NYAN_IN_A_PIXEL option. Reviewed-on: https://chromium-review.googlesource.com/177486 (cherry picked from commit 7cbb801d000dac4b39f76266ebef2585fe48faba) nyan: Separate the SDRAM BCT config for the two nyans, and turn down norrin. Reviewed-on: https://chromium-review.googlesource.com/177487 (cherry picked from commit 6b119685f6626d79d924af9f856ebb90af45a73f) tegra124: Bump up HCLK and PCLK Reviewed-on: https://chromium-review.googlesource.com/177563 (cherry picked from commit c25337dac8c3ecdd8ffe5b4d11acebb216132405) nyan: Add some code for reading the board ID. Reviewed-on: https://chromium-review.googlesource.com/177488 (cherry picked from commit 5fccbce99e7db312e2e3caf806c438c9b04c0a8f) nyan: Use the board ID to decide how to initialize the PMIC. Reviewed-on: https://chromium-review.googlesource.com/177489 (cherry picked from commit 677bdb9df55248da3a0c6be0089098f6d6807d3c) nyan: Create kconfig variables for each SDRAM config. Reviewed-on: https://chromium-review.googlesource.com/177580 (cherry picked from commit d7ddcf262a321f06289c4f2b2a6b43982dd96377) tegra124: Mux some unused pins away from UARTA, and pull up the serial RX line. Reviewed-on: https://chromium-review.googlesource.com/177637 (cherry picked from commit bd533cc109b0acf3495b04fa6622e250ba454fe9) tegra124: Initialize the MCR when setting up the UART. Reviewed-on: https://chromium-review.googlesource.com/177638 (cherry picked from commit 38c84786fc3e8fab913aebca176ac7b038cb0be6) tegra124: fix SPI AHB burst length Reviewed-on: https://chromium-review.googlesource.com/177564 (cherry picked from commit f29235263202c9b4a3dbb65da5727c8eefe44315) tegra124: remove unneeded debug print in SPI code Reviewed-on: https://chromium-review.googlesource.com/177833 (cherry picked from commit 34a50040268dbde1c326d315f8042a3905ddfb06) nyan: Set up the SOC and TPM reset pin. Reviewed-on: https://chromium-review.googlesource.com/177965 (cherry picked from commit b81a5bd15a2979ee009b9f7bc4a39a304e6a759a) tegra124: Allow some time for packets to appear in Rx FIFO Reviewed-on: https://chromium-review.googlesource.com/177832 (cherry picked from commit 8f70a25b1eea865a448525749ac18393f5b9ad84) nyan: PMIC: Slam default init values for SDOs/LDOs in AS3722 Reviewed-on: https://chromium-review.googlesource.com/178226 (cherry picked from commit c536b0d82fd6fffbc0e2448e0d19d3f06df5d86a) nyan: change devicetree for the new display settings. Reviewed-on: https://chromium-review.googlesource.com/177958 (cherry picked from commit 43abed730f222c8a685c250a58c981268994a65d) nyan: Switch USB VBUS GPIOs from outputs to pulled-up inputs Reviewed-on: https://chromium-review.googlesource.com/178914 (cherry picked from commit e47b6a609b9d23694a466b56960d9d14ca5d6242) Tegra124: nyan: Disable VPR Reviewed-on: https://chromium-review.googlesource.com/179327 (cherry picked from commit 441aa276446141f1b92ed8fb98c9578597487f4d) tegra124: norrin: fix display issue Reviewed-on: https://chromium-review.googlesource.com/179745 (cherry picked from commit c1c1ae69f6058ed901f532e2c532d1e6ba1f81fb) tegra124: Add iRAM layout information. Reviewed-on: https://chromium-review.googlesource.com/179814 (cherry picked from commit d00f135c93a52ad4dced2edecb74e2dfc54bb2fa) tegra124: Run bootblock and ROM stage out of DRAM. Reviewed-on: https://chromium-review.googlesource.com/179822 (cherry picked from commit 2d3ec06ec39a489d02e798bb22bce4d7465b20ce) nyan: clean up a comment regarding video Reviewed-on: https://chromium-review.googlesource.com/180161 (cherry picked from commit 03b5e88a66b9c96df2ef3d9ce5ba4a62a8bb2447) tegra124: norrin: the first step to clean up display code Reviewed-on: https://chromium-review.googlesource.com/180135 (cherry picked from commit 9d0c12dfef28a1161604df9b3fcc113049b2747d) Squashed 49 commits for tegra124/nyan. Change-Id: Id67bfee725e703d3e2d8ac17f40844dc193e901d Signed-off-by: Isaac Christensen Reviewed-on: http://review.coreboot.org/6883 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer --- src/soc/nvidia/tegra124/displayhack.c | 570 +++------------------------------- 1 file changed, 40 insertions(+), 530 deletions(-) (limited to 'src/soc/nvidia/tegra124/displayhack.c') diff --git a/src/soc/nvidia/tegra124/displayhack.c b/src/soc/nvidia/tegra124/displayhack.c index 847d6f6057..0f70e928c7 100644 --- a/src/soc/nvidia/tegra124/displayhack.c +++ b/src/soc/nvidia/tegra124/displayhack.c @@ -37,9 +37,7 @@ #include "chip.h" #include "sor.h" #include -#include -#include -#include + //#include extern int dump; unsigned long READL(void *p); @@ -50,29 +48,7 @@ int dpaux_read(u32 addr, u32 size, u8 * data); void init_dca_regs(void) { - struct clk_rst_ctlr *clkrst = (struct clk_rst_ctlr *)TEGRA_CLK_RST_BASE; -// u32 val; - - printk(BIOS_SPEW, "JZ: %s: entry\n", __func__); - -#define SWR_DISP1_RST (1 << 27) -#define SWR_HOST1X_RST (1 << 28) -#define CLK_ENB_DISP1 SWR_DISP1_RST -#define CLK_ENB_HOST1X SWR_HOST1X_RST -// REG(CLK_RST_CONTROLLER_RST_DEVICES_L_0, SWR_DISP1_RST, 1); -// REG(CLK_RST_CONTROLLER_RST_DEVICES_L_0, SWR_DISP1_RST, 0); -// REG(CLK_RST_CONTROLLER_CLK_OUT_ENB_L_0, CLK_ENB_DISP1, 1); - /* enable disp1 */ - setbits_le32(&clkrst->rst_dev_l, SWR_DISP1_RST); // Set Reset - clrbits_le32(&clkrst->rst_dev_l, SWR_DISP1_RST); // Clear Reset - setbits_le32(&clkrst->clk_out_enb_l, CLK_ENB_DISP1); // Set Enable - WRITEL(0x00000000, (void *)(0x60006000 + 0x138)); // CLK_SOURCE_DISP1 = PLLP -// WRITEL(0x40000000, (void *)(0x60006000 + 0x138)); // CLK_SOURCE_DISP1 = PLLD - /* enable host1x */ - clrbits_le32(&clkrst->rst_dev_l, SWR_HOST1X_RST); // Clear Reset - setbits_le32(&clkrst->clk_out_enb_l, CLK_ENB_HOST1X); // Set Enable - WRITEL(0x80000000, (void *)(0x60006000 + 0x180)); // CLK_SOURCE_HOST1X = PLLP -// WRITEL(0x40000000, (0x60006000 + 0x180)); // CLK_SOURCE_HOST1X = PLLC + printk(BIOS_SPEW, "%s: entry\n", __func__); #if 1 #define DCA_WRITE(reg, val) \ @@ -98,291 +74,46 @@ void init_dca_regs(void) } #endif - DCA_WRITE(DC_DISP_DISP_CLOCK_CONTROL_0, 0x00000006); //0x542410b8 - DCA_WRITE(DC_CMD_INT_STATUS_0, 0xffffffff); //0x542400dc - DCA_WRITE(DC_CMD_INT_MASK_0, 0x00000000); //0x542400e0 - DCA_WRITE(DC_CMD_INT_ENABLE_0, 0x00800701); //0x542400e4 - DCA_WRITE(DC_CMD_INT_POLARITY_0, 0x00c00706); //0x542400ec - DCA_WRITE(DC_DISP_DISP_SIGNAL_OPTIONS0_0, 0x00000000); //0x54241000 - DCA_WRITE(DC_DISP_DISP_SIGNAL_OPTIONS1_0, 0x00000000); //0x54241004 - DCA_WRITE(DC_DISP_DISP_WIN_OPTIONS_0, 0x00000000); //0x54241008 - DCA_WRITE(DC_DISP_MEM_HIGH_PRIORITY_0, 0x00000000); //0x5424100c - DCA_WRITE(DC_DISP_MEM_HIGH_PRIORITY_TIMER_0, 0x00000000); //0x54241010 - DCA_WRITE(DC_DISP_DISP_TIMING_OPTIONS_0, 0x00000000); //0x54241014 - DCA_WRITE(DC_DISP_REF_TO_SYNC_0, 0x00000000); //0x54241018 - DCA_WRITE(DC_DISP_SYNC_WIDTH_0, 0x00000000); //0x5424101c - DCA_WRITE(DC_DISP_BACK_PORCH_0, 0x00000000); //0x54241020 - DCA_WRITE(DC_DISP_DISP_ACTIVE_0, 0x00030003); //0x54241024 - DCA_WRITE(DC_DISP_FRONT_PORCH_0, 0x00000000); //0x54241028 - DCA_WRITE(DC_DISP_H_PULSE0_CONTROL_0, 0x00000000); //0x5424102c - DCA_WRITE(DC_DISP_H_PULSE0_POSITION_A_0, 0x00000000); //0x54241030 - DCA_WRITE(DC_DISP_H_PULSE0_POSITION_B_0, 0x00000000); //0x54241034 - DCA_WRITE(DC_DISP_H_PULSE0_POSITION_C_0, 0x00000000); //0x54241038 - DCA_WRITE(DC_DISP_H_PULSE0_POSITION_D_0, 0x00000000); //0x5424103c - DCA_WRITE(DC_DISP_H_PULSE1_CONTROL_0, 0x00000000); //0x54241040 - DCA_WRITE(DC_DISP_H_PULSE1_POSITION_A_0, 0x00000000); //0x54241044 - DCA_WRITE(DC_DISP_H_PULSE1_POSITION_B_0, 0x00000000); //0x54241048 - DCA_WRITE(DC_DISP_H_PULSE1_POSITION_C_0, 0x00000000); //0x5424104c - DCA_WRITE(DC_DISP_H_PULSE1_POSITION_D_0, 0x00000000); //0x54241050 - DCA_WRITE(DC_DISP_H_PULSE2_CONTROL_0, 0x00000000); //0x54241054 - DCA_WRITE(DC_DISP_H_PULSE2_POSITION_A_0, 0x00000000); //0x54241058 - DCA_WRITE(DC_DISP_H_PULSE2_POSITION_B_0, 0x00000000); //0x5424105c - DCA_WRITE(DC_DISP_H_PULSE2_POSITION_C_0, 0x00000000); //0x54241060 - DCA_WRITE(DC_DISP_H_PULSE2_POSITION_D_0, 0x00000000); //0x54241064 - DCA_WRITE(DC_DISP_V_PULSE0_CONTROL_0, 0x00000000); //0x54241068 - DCA_WRITE(DC_DISP_V_PULSE0_POSITION_A_0, 0x00000000); //0x5424106c - DCA_WRITE(DC_DISP_V_PULSE0_POSITION_B_0, 0x00000000); //0x54241070 - DCA_WRITE(DC_DISP_V_PULSE0_POSITION_C_0, 0x00000000); //0x54241074 - DCA_WRITE(DC_DISP_V_PULSE1_CONTROL_0, 0x00000000); //0x54241078 - DCA_WRITE(DC_DISP_V_PULSE1_POSITION_A_0, 0x00000000); //0x5424107c - DCA_WRITE(DC_DISP_V_PULSE1_POSITION_B_0, 0x00000000); //0x54241080 - DCA_WRITE(DC_DISP_V_PULSE1_POSITION_C_0, 0x00000000); //0x54241084 - DCA_WRITE(DC_DISP_V_PULSE2_CONTROL_0, 0x00000000); //0x54241088 - DCA_WRITE(DC_DISP_V_PULSE2_POSITION_A_0, 0x00000000); //0x5424108c - DCA_WRITE(DC_DISP_V_PULSE3_CONTROL_0, 0x00000000); //0x54241090 - DCA_WRITE(DC_DISP_V_PULSE3_POSITION_A_0, 0x00000000); //0x54241094 - DCA_WRITE(DC_DISP_M0_CONTROL_0, 0x00000000); //0x54241098 - DCA_WRITE(DC_DISP_M1_CONTROL_0, 0x00000000); //0x5424109c - DCA_WRITE(DC_DISP_DI_CONTROL_0, 0x00000000); //0x542410a0 - DCA_WRITE(DC_DISP_PP_CONTROL_0, 0x00000000); //0x542410a4 - DCA_WRITE(DC_DISP_PP_SELECT_A_0, 0x00000000); //0x542410a8 - DCA_WRITE(DC_DISP_PP_SELECT_B_0, 0x00000000); //0x542410ac - DCA_WRITE(DC_DISP_PP_SELECT_C_0, 0x00000000); //0x542410b0 - DCA_WRITE(DC_DISP_PP_SELECT_D_0, 0x00000000); //0x542410b4 - DCA_WRITE(DC_DISP_DISP_INTERFACE_CONTROL_0, 0x00000000); //0x542410bc - DCA_WRITE(DC_DISP_DISP_COLOR_CONTROL_0, 0x00000000); //0x542410c0 - DCA_WRITE(DC_DISP_SHIFT_CLOCK_OPTIONS_0, 0x00000000); //0x542410c4 - DCA_WRITE(DC_DISP_DATA_ENABLE_OPTIONS_0, 0x00000000); //0x542410c8 - DCA_WRITE(DC_DISP_SERIAL_INTERFACE_OPTIONS_0, 0x00000000); //0x542410cc - DCA_WRITE(DC_DISP_LCD_SPI_OPTIONS_0, 0x00000000); //0x542410d0 - DCA_WRITE(DC_DISP_COLOR_KEY0_LOWER_0, 0x00000000); //0x542410d8 - DCA_WRITE(DC_DISP_COLOR_KEY0_UPPER_0, 0x00000000); //0x542410dc - DCA_WRITE(DC_DISP_COLOR_KEY1_LOWER_0, 0x00000000); //0x542410e0 - DCA_WRITE(DC_DISP_COLOR_KEY1_UPPER_0, 0x00000000); //0x542410e4 - DCA_WRITE(DC_DISP_CURSOR_FOREGROUND_0, 0x00000000); //0x542410f0 - DCA_WRITE(DC_DISP_CURSOR_BACKGROUND_0, 0x00000000); //0x542410f4 - DCA_WRITE(DC_DISP_CURSOR_START_ADDR_0, 0x00200000); //0x542410f8 - DCA_WRITE(DC_DISP_CURSOR_START_ADDR_NS_0, 0x00000000); //0x542410fc - DCA_WRITE(DC_DISP_CURSOR_POSITION_0, 0x00000000); //0x54241100 - DCA_WRITE(DC_DISP_CURSOR_POSITION_NS_0, 0x00000000); //0x54241104 - DCA_WRITE(DC_DISP_INIT_SEQ_CONTROL_0, 0x00000000); //0x54241108 - DCA_WRITE(DC_DISP_SPI_INIT_SEQ_DATA_A_0, 0x00000000); //0x5424110c - DCA_WRITE(DC_DISP_SPI_INIT_SEQ_DATA_B_0, 0x00000000); //0x54241110 - DCA_WRITE(DC_DISP_SPI_INIT_SEQ_DATA_C_0, 0x00000000); //0x54241114 - DCA_WRITE(DC_DISP_SPI_INIT_SEQ_DATA_D_0, 0x00000000); //0x54241118 - DCA_WRITE(DC_DISP_DC_MCCIF_FIFOCTRL_0, 0x00000000); //0x54241200 - DCA_WRITE(DC_DISP_MCCIF_DISPLAY0A_HYST_0, 0xcf401f1f); //0x54241204 - DCA_WRITE(DC_DISP_MCCIF_DISPLAY0B_HYST_0, 0xcf401f1f); //0x54241208 - DCA_WRITE(DC_DISP_MCCIF_DISPLAY0C_HYST_0, 0xcf401f1f); //0x5424120c - DCA_WRITE(DC_DISP_DISP_MISC_CONTROL_0, 0x00000002); //0x54241304 - DCA_WRITE(DC_DISP_SD_CONTROL_0, 0x00004000); //0x54241308 - DCA_WRITE(DC_DISP_SD_CSC_COEFF_0, 0x00000000); //0x5424130c - - DCA_WRITE(DC_DISP_SD_LUT_0, 0x00000000); //0x54241310 -#define DC_DISP_SD_LUT_1_0 0x4c5 -#define DC_DISP_SD_LUT_2_0 0x4c6 -#define DC_DISP_SD_LUT_3_0 0x4c7 -#define DC_DISP_SD_LUT_4_0 0x4c8 -#define DC_DISP_SD_LUT_5_0 0x4c9 -#define DC_DISP_SD_LUT_6_0 0x4ca -#define DC_DISP_SD_LUT_7_0 0x4cb -#define DC_DISP_SD_LUT_8_0 0x4cc - DCA_WRITE(DC_DISP_SD_LUT_1_0, 0x00000000); //0x54241314 - DCA_WRITE(DC_DISP_SD_LUT_2_0, 0x00000000); //0x54241318 - DCA_WRITE(DC_DISP_SD_LUT_3_0, 0x00000000); //0x5424131c - DCA_WRITE(DC_DISP_SD_LUT_4_0, 0x00000000); //0x54241320 - DCA_WRITE(DC_DISP_SD_LUT_5_0, 0x00000000); //0x54241324 - DCA_WRITE(DC_DISP_SD_LUT_6_0, 0x00000000); //0x54241328 - DCA_WRITE(DC_DISP_SD_LUT_7_0, 0x00000000); //0x5424132c - DCA_WRITE(DC_DISP_SD_LUT_8_0, 0x00000000); //0x54241330 - DCA_WRITE(DC_DISP_SD_FLICKER_CONTROL_0, 0x00000000); //0x54241334 - DCA_WRITE(DC_DISP_SD_PIXEL_COUNT_0, 0x00000000); //0x54241338 - - DCA_WRITE(DC_DISP_SD_HISTOGRAM_0, 0x00000000); //0x5424133c -#define DC_DISP_SD_HISTOGRAM_1_0 0x4d0 -#define DC_DISP_SD_HISTOGRAM_2_0 0x4d1 -#define DC_DISP_SD_HISTOGRAM_3_0 0x4d2 -#define DC_DISP_SD_HISTOGRAM_4_0 0x4d3 -#define DC_DISP_SD_HISTOGRAM_5_0 0x4d4 -#define DC_DISP_SD_HISTOGRAM_6_0 0x4d5 -#define DC_DISP_SD_HISTOGRAM_7_0 0x4d6 - DCA_WRITE(DC_DISP_SD_HISTOGRAM_1_0, 0x00000000); //0x54241340 - DCA_WRITE(DC_DISP_SD_HISTOGRAM_2_0, 0x00000000); //0x54241344 - DCA_WRITE(DC_DISP_SD_HISTOGRAM_3_0, 0x00000000); //0x54241348 - DCA_WRITE(DC_DISP_SD_HISTOGRAM_4_0, 0x00000000); //0x5424134c - DCA_WRITE(DC_DISP_SD_HISTOGRAM_5_0, 0x00000000); //0x54241350 - DCA_WRITE(DC_DISP_SD_HISTOGRAM_6_0, 0x00000000); //0x54241354 - DCA_WRITE(DC_DISP_SD_HISTOGRAM_7_0, 0x00000000); //0x54241358 - DCA_WRITE(DC_DISP_SD_BL_PARAMETERS_0, 0x00000400); //0x5424135c - DCA_WRITE(DC_DISP_SD_BL_TF_0, 0x00000000); //0x54241360 -#define DC_DISP_SD_BL_TF_1_0 0x4d9 -#define DC_DISP_SD_BL_TF_2_0 0x4da -#define DC_DISP_SD_BL_TF_3_0 0x4db - DCA_WRITE(DC_DISP_SD_BL_TF_1_0, 0x00000000); //0x54241364 - DCA_WRITE(DC_DISP_SD_BL_TF_2_0, 0x00000000); //0x54241368 - DCA_WRITE(DC_DISP_SD_BL_TF_3_0, 0x00000000); //0x5424136c - DCA_WRITE(DC_DISP_SD_BL_CONTROL_0, 0x00000000); //0x54241370 - DCA_WRITE(DC_DISP_SD_HW_K_VALUES_0, 0x00000000); //0x54241374 - DCA_WRITE(DC_DISP_SD_MAN_K_VALUES_0, 0x00000000); //0x54241378 - DCA_WRITE(DC_DISP_SD_K_LIMIT_0, 0x00000000); //0x5424137c - DCA_WRITE(DC_DISP_SD_WINDOW_POSITION_0, 0x00000000); //0x54241380 - DCA_WRITE(DC_DISP_SD_WINDOW_SIZE_0, 0x00000000); //0x54241384 - DCA_WRITE(DC_DISP_SD_SOFT_CLIPPING_0, 0x02000080); //0x54241388 - DCA_WRITE(DC_DISP_SD_SMOOTH_K_0, 0x00000000); //0x5424138c - DCA_WRITE(DC_DISP_BLEND_BACKGROUND_COLOR_0, 0x00000000); //0x54241390 - DCA_WRITE(DC_DISP_INTERLACE_CONTROL_0, 0x00000000); //0x54241394 - DCA_WRITE(DC_DISP_INTERLACE_FIELD2_REF_TO_SYNC_0, 0x00000000); //0x54241398 - DCA_WRITE(DC_DISP_INTERLACE_FIELD2_SYNC_WIDTH_0, 0x00000000); //0x5424139c - DCA_WRITE(DC_DISP_INTERLACE_FIELD2_BACK_PORCH_0, 0x00000000); //0x542413a0 - DCA_WRITE(DC_DISP_INTERLACE_FIELD2_FRONT_PORCH_0, 0x00000000); //0x542413a4 - DCA_WRITE(DC_DISP_INTERLACE_FIELD2_DISP_ACTIVE_0, 0x00000000); //0x542413a8 - DCA_WRITE(DC_DISP_CURSOR_UNDERFLOW_CTRL_0, 0x00000000); //0x542413ac - DCA_WRITE(DC_DISP_CURSOR_START_ADDR_HI_0, 0x00000000); //0x542413b0 - DCA_WRITE(DC_DISP_CURSOR_START_ADDR_HI_NS_0, 0x00000000); //0x542413b4 - DCA_WRITE(DC_DISP_CURSOR_INTERLACE_CONTROL_0, 0x00000000); //0x542413b8 - DCA_WRITE(DC_DISP_CSC2_CONTROL_0, 0x00000000); //0x542413bc - DCA_WRITE(DC_DISP_BLEND_CURSOR_CONTROL_0, 0x00000000); //0x542413c4 - DCA_WRITE(DC_DISP_DVFS_CURSOR_CONTROL_0, 0x00000003); //0x542413c8 - DCA_WRITE(DC_DISP_CURSOR_UFLOW_DBG_PIXEL_0, 0x00000000); //0x542413cc - DCA_WRITE(DC_DISP_CURSOR_SPOOLUP_CONTROL_0, 0x00000001); //0x542413d0 - DCA_WRITE(DC_DISP_DISPLAY_CLK_GATE_OVERRIDE_0, 0x00000000); //0x542413d4 - DCA_WRITE(DC_DISP_DISPLAY_DBG_TIMING_0, 0x00000000); //0x542413d8 - DCA_WRITE(DC_DISP_DISPLAY_SPARE0_0, 0x00000000); //0x542413dc - DCA_WRITE(DC_DISP_DISPLAY_SPARE1_0, 0x00000000); //0x542413e0 - -#define wr32(reg, val) \ - WRITEL(val, (void *)reg) - - wr32((TEGRA_ARM_DISPLAYA + 0x0200), 0x00000000); - wr32((TEGRA_ARM_DISPLAYA + 0x0400), 0x00000000); - - DCA_WRITE(DC_CMD_DISPLAY_WINDOW_HEADER_0, 0x000000F0); - DCA_WRITE(DC_WIN_A_WIN_OPTIONS_0, 0x00000000); - DCA_WRITE(DC_WIN_A_BYTE_SWAP_0, 0x00000000); - DCA_WRITE(DC_WIN_A_BUFFER_CONTROL_0, 0x00000000); - DCA_WRITE(DC_WIN_A_COLOR_DEPTH_0, 0x0000000C); - DCA_WRITE(DC_WIN_A_POSITION_0, 0x00000000); - DCA_WRITE(DC_WIN_A_SIZE_0, 0x00000000); - DCA_WRITE(DC_WIN_A_PRESCALED_SIZE_0, 0x00000000); - DCA_WRITE(DC_WIN_A_H_INITIAL_DDA_0, 0x00000000); - DCA_WRITE(DC_WIN_A_V_INITIAL_DDA_0, 0x00000000); - DCA_WRITE(DC_WIN_A_DDA_INCREMENT_0, 0x00000000); - DCA_WRITE(DC_WIN_A_LINE_STRIDE_0, 0x00000000); - DCA_WRITE(DC_WIN_A_DV_CONTROL_0, 0x00000000); - - DCA_WRITE(DC_WIN_A_BLEND_LAYER_CONTROL_0, 0x01000000); - DCA_WRITE(DC_WIN_A_BLEND_MATCH_SELECT_0, 0x00000000); - DCA_WRITE(DC_WIN_A_BLEND_NOMATCH_SELECT_0, 0x00000000); - DCA_WRITE(DC_WIN_A_BLEND_ALPHA_1BIT_0, 0x00000000); - DCA_WRITE(DC_WINC_A_PALETTE_COLOR_EXT_0, 0x00000000); - DCA_WRITE(DC_WINC_A_CSC_YOF_0, 0x00000000); - DCA_WRITE(DC_WINC_A_CSC_KYRGB_0, 0x00000000); - DCA_WRITE(DC_WINC_A_CSC_KUR_0, 0x00000000); - DCA_WRITE(DC_WINC_A_CSC_KVR_0, 0x00000000); - DCA_WRITE(DC_WINC_A_CSC_KUG_0, 0x00000000); - DCA_WRITE(DC_WINC_A_CSC_KVG_0, 0x00000000); - DCA_WRITE(DC_WINC_A_CSC_KUB_0, 0x00000000); - DCA_WRITE(DC_WINC_A_CSC_KVB_0, 0x00000000); - DCA_WRITE(DC_WINBUF_A_START_ADDR_HI_0, 0x00000000); - DCA_WRITE(DC_WINBUF_A_ADDR_H_OFFSET_0, 0x00000000); - DCA_WRITE(DC_WINBUF_A_ADDR_V_OFFSET_0, 0x00000000); - DCA_WRITE(DC_CMD_DISPLAY_WINDOW_HEADER_0, 0x00000000); - - DCA_WRITE(DC_COM_CRC_CONTROL_0, 0x00000000); //0x54240c00 - DCA_WRITE(DC_COM_CRC_CHECKSUM_0, 0x00000000); //0x54240c04 - DCA_WRITE(DC_COM_PIN_OUTPUT_ENABLE0_0, 0x00000000); //0x54240c08 - DCA_WRITE(DC_COM_PIN_OUTPUT_ENABLE1_0, 0x00000000); //0x54240c0c - DCA_WRITE(DC_COM_PIN_OUTPUT_ENABLE2_0, 0x00510104); //0x54240c10 - DCA_WRITE(DC_COM_PIN_OUTPUT_ENABLE3_0, 0x00000555); //0x54240c14 - DCA_WRITE(DC_COM_PIN_OUTPUT_POLARITY0_0, 0x00000000); //0x54240c18 - DCA_WRITE(DC_COM_PIN_OUTPUT_POLARITY1_0, 0x00000000); //0x54240c1c - DCA_WRITE(DC_COM_PIN_OUTPUT_POLARITY2_0, 0x00000000); //0x54240c20 - DCA_WRITE(DC_COM_PIN_OUTPUT_POLARITY3_0, 0x00000000); //0x54240c24 - DCA_WRITE(DC_COM_PIN_OUTPUT_DATA0_0, 0x00000000); //0x54240c28 - DCA_WRITE(DC_COM_PIN_OUTPUT_DATA1_0, 0x00000000); //0x54240c2c - DCA_WRITE(DC_COM_PIN_OUTPUT_DATA2_0, 0x00000000); //0x54240c30 - DCA_WRITE(DC_COM_PIN_OUTPUT_DATA3_0, 0x00000000); //0x54240c34 - DCA_WRITE(DC_COM_PIN_INPUT_DATA0_0, 0x00000000); //0x54240c48 - DCA_WRITE(DC_COM_PIN_INPUT_DATA1_0, 0x00000000); //0x54240c4c - DCA_WRITE(DC_COM_PIN_OUTPUT_SELECT0_0, 0x00000000); //0x54240c50 - DCA_WRITE(DC_COM_PIN_OUTPUT_SELECT1_0, 0x00000000); //0x54240c54 - DCA_WRITE(DC_COM_PIN_OUTPUT_SELECT2_0, 0x00000000); //0x54240c58 - DCA_WRITE(DC_COM_PIN_OUTPUT_SELECT3_0, 0x00000000); //0x54240c5c - DCA_WRITE(DC_COM_PIN_OUTPUT_SELECT4_0, 0x00000000); //0x54240c60 - DCA_WRITE(DC_COM_PIN_OUTPUT_SELECT5_0, 0x00000000); //0x54240c64 - DCA_WRITE(DC_COM_PIN_OUTPUT_SELECT6_0, 0x00000000); //0x54240c68 - DCA_WRITE(DC_COM_PIN_MISC_CONTROL_0, 0x00000000); //0x54240c6c - DCA_WRITE(DC_COM_PM0_CONTROL_0, 0x00000000); //0x54240c70 - DCA_WRITE(DC_COM_PM0_DUTY_CYCLE_0, 0x00000000); //0x54240c74 - DCA_WRITE(DC_COM_PM1_CONTROL_0, 0x00000000); //0x54240c78 - DCA_WRITE(DC_COM_PM1_DUTY_CYCLE_0, 0x00000000); //0x54240c7c - DCA_WRITE(DC_COM_SPI_CONTROL_0, 0x00000000); //0x54240c80 - DCA_WRITE(DC_COM_SPI_START_BYTE_0, 0x00000000); //0x54240c84 - DCA_WRITE(DC_COM_HSPI_WRITE_DATA_AB_0, 0x00000000); //0x54240c88 - DCA_WRITE(DC_COM_HSPI_WRITE_DATA_CD_0, 0x00000000); //0x54240c8c - DCA_WRITE(DC_COM_HSPI_CS_DC_0, 0x00000000); //0x54240c90 - DCA_WRITE(DC_COM_SCRATCH_REGISTER_A_0, 0x00000000); //0x54240c94 - DCA_WRITE(DC_COM_SCRATCH_REGISTER_B_0, 0x00000000); //0x54240c98 - DCA_WRITE(DC_COM_CRC_CHECKSUM_LATCHED_0, 0x00000000); //0x54240ca4 - DCA_WRITE(DC_COM_CMU_CSC_KRR_0, 0x00000000); //0x54240ca8 - DCA_WRITE(DC_COM_CMU_CSC_KGR_0, 0x00000000); //0x54240cac - DCA_WRITE(DC_COM_CMU_CSC_KBR_0, 0x00000000); //0x54240cb0 - DCA_WRITE(DC_COM_CMU_CSC_KRG_0, 0x00000000); //0x54240cb4 - DCA_WRITE(DC_COM_CMU_CSC_KGG_0, 0x00000000); //0x54240cb8 - DCA_WRITE(DC_COM_CMU_CSC_KBG_0, 0x00000000); //0x54240cbc - DCA_WRITE(DC_COM_CMU_CSC_KRB_0, 0x00000000); //0x54240cc0 - DCA_WRITE(DC_COM_CMU_CSC_KGB_0, 0x00000000); //0x54240cc4 - DCA_WRITE(DC_COM_CMU_CSC_KBB_0, 0x00000000); //0x54240cc8 - DCA_WRITE(DC_COM_CMU_LUT_MASK_0, 0x00000000); //0x54240ccc - DCA_WRITE(DC_COM_CMU_LUT1_0, 0x00000000); //0x54240cd8 - DCA_WRITE(DC_COM_CMU_LUT2_0, 0x00000000); //0x54240cdc - DCA_WRITE(DC_COM_CMU_LUT1_READ_0, 0x00000000); //0x54240ce0 - DCA_WRITE(DC_COM_CMU_LUT2_READ_0, 0x00000000); //0x54240ce4 - DCA_WRITE(DC_CMD_GENERAL_INCR_SYNCPT_CNTRL_0, 0x00000000); //0x54240004 - DCA_WRITE(DC_CMD_GENERAL_INCR_SYNCPT_ERROR_0, 0x00000000); //0x54240008 - DCA_WRITE(DC_CMD_WIN_A_INCR_SYNCPT_CNTRL_0, 0x00000000); //0x54240024 - DCA_WRITE(DC_CMD_WIN_A_INCR_SYNCPT_ERROR_0, 0x00000000); //0x54240028 - DCA_WRITE(DC_CMD_WIN_B_INCR_SYNCPT_CNTRL_0, 0x00000000); //0x54240044 - DCA_WRITE(DC_CMD_WIN_B_INCR_SYNCPT_ERROR_0, 0x00000000); //0x54240048 - DCA_WRITE(DC_CMD_WIN_C_INCR_SYNCPT_CNTRL_0, 0x00000000); //0x54240064 - DCA_WRITE(DC_CMD_WIN_C_INCR_SYNCPT_ERROR_0, 0x00000000); //0x54240068 - DCA_WRITE(DC_CMD_CONT_SYNCPT_VSYNC_0, 0x00000000); //0x542400a0 - DCA_WRITE(DC_CMD_DISPLAY_COMMAND_OPTION0_0, 0x00000000); //0x542400c4 - DCA_WRITE(DC_CMD_DISPLAY_COMMAND_0, 0x00000000); //0x542400c8 - DCA_WRITE(DC_CMD_SIGNAL_RAISE_0, 0x00000000); //0x542400cc - DCA_WRITE(DC_CMD_DISPLAY_POWER_CONTROL_0, 0x00000000); //0x542400d8 - DCA_WRITE(DC_CMD_SIGNAL_RAISE1_0, 0x00000000); //0x542400f0 - DCA_WRITE(DC_CMD_SIGNAL_RAISE2_0, 0x00000000); //0x542400f4 - DCA_WRITE(DC_CMD_SIGNAL_RAISE3_0, 0x00000000); //0x542400f8 - DCA_WRITE(DC_CMD_STATE_CONTROL_0, 0x00000000); //0x54240104 - DCA_WRITE(DC_CMD_DISPLAY_WINDOW_HEADER_0, 0x00000000); //0x54240108 - DCA_WRITE(DC_CMD_REG_ACT_CONTROL_0, 0x00000000); //0x5424010c - DCA_WRITE(DC_CMD_WIN_T_STATE_CONTROL_0, 0x00000000); //0x54240110 - DCA_WRITE(DC_CMD_SECURE_CONTROL_0, 0x00000000); //0x54240114 - DCA_WRITE(DC_CMD_WIN_D_INCR_SYNCPT_CNTRL_0, 0x00000000); //0x54240134 - DCA_WRITE(DC_CMD_WIN_D_INCR_SYNCPT_ERROR_0, 0x00000000); //0x54240138 + DCA_WRITE (DC_CMD_DISPLAY_WINDOW_HEADER_0, 0x000000F0); + DCA_WRITE (DC_WIN_A_WIN_OPTIONS_0, 0x00000000); + DCA_WRITE (DC_WIN_A_BYTE_SWAP_0, 0x00000000); + DCA_WRITE (DC_WIN_A_BUFFER_CONTROL_0, 0x00000000); + DCA_WRITE (DC_WIN_A_COLOR_DEPTH_0, 0x0000000C); + + DCA_WRITE (DC_WIN_A_POSITION_0, 0x00000000); + DCA_WRITE (DC_WIN_A_SIZE_0, 0x00000000); + DCA_WRITE (DC_WIN_A_PRESCALED_SIZE_0, 0x00000000); + DCA_WRITE (DC_WIN_A_H_INITIAL_DDA_0, 0x00000000); + DCA_WRITE (DC_WIN_A_V_INITIAL_DDA_0, 0x00000000); + DCA_WRITE (DC_WIN_A_DDA_INCREMENT_0, 0x00000000); + DCA_WRITE (DC_WIN_A_LINE_STRIDE_0, 0x00000000); + DCA_WRITE (DC_WIN_A_DV_CONTROL_0, 0x00000000); + + DCA_WRITE (DC_WIN_A_BLEND_LAYER_CONTROL_0, 0x01000000); + DCA_WRITE (DC_WIN_A_BLEND_MATCH_SELECT_0, 0x00000000); + DCA_WRITE (DC_WIN_A_BLEND_NOMATCH_SELECT_0, 0x00000000); + DCA_WRITE (DC_WIN_A_BLEND_ALPHA_1BIT_0, 0x00000000); + + DCA_WRITE (DC_WINBUF_A_START_ADDR_HI_0, 0x00000000); + DCA_WRITE (DC_WINBUF_A_ADDR_H_OFFSET_0, 0x00000000); + DCA_WRITE (DC_WINBUF_A_ADDR_V_OFFSET_0, 0x00000000); + DCA_WRITE (DC_CMD_DISPLAY_WINDOW_HEADER_0, 0x00000000); + + DCA_WRITE (DC_COM_CRC_CONTROL_0, 0x00000000); + DCA_WRITE (DC_COM_CRC_CHECKSUM_0, 0x00000000); + DCA_WRITE (DC_COM_PIN_OUTPUT_ENABLE0_0, 0x00000000); + DCA_WRITE (DC_COM_PIN_OUTPUT_ENABLE1_0, 0x00000000); + DCA_WRITE (DC_COM_PIN_OUTPUT_ENABLE2_0, 0x00510104); + DCA_WRITE (DC_COM_PIN_OUTPUT_ENABLE3_0, 0x00000555); + printk(BIOS_SPEW, "initial DCA done\n"); } void init_sor_regs(void) { - struct clk_rst_ctlr *clkrst = (struct clk_rst_ctlr *)TEGRA_CLK_RST_BASE; printk(BIOS_SPEW, "JZ: %s: entry\n", __func__); -#define SWR_SOR0_RST (1 << 22) -#define CLK_ENB_SOR0 SWR_SOR0_RST -// REG(CLK_RST_CONTROLLER_RST_DEVICES_X_0, SWR_SOR0_RST, 1) -// REG(CLK_RST_CONTROLLER_RST_DEVICES_X_0, SWR_SOR0_RST, 0) -// REG(CLK_RST_CONTROLLER_CLK_OUT_ENB_X_0, CLK_ENB_SOR0, 1) -// REG(CLK_RST_CONTROLLER_CLK_SOURCE_SOR0_0, 0) //0x60006414 - setbits_le32(&clkrst->rst_devices_x, SWR_SOR0_RST); // Set Reset - clrbits_le32(&clkrst->rst_devices_x, SWR_SOR0_RST); // Clear Reset - setbits_le32(&clkrst->clk_out_enb_x, CLK_ENB_SOR0); // Set Enable - WRITEL(0x0, (void *)(0x60006000 + 0x414)); // CLK_SOURCE_SOR0 = PLLP - - //WRITEL(0xc000c000, (0x60006000 + 0x414)); // CLK_SOURCE_SOR0 = CLK_M - #if 1 #define SOR_WRITE(reg, val) \ { \ @@ -410,137 +141,13 @@ void init_sor_regs(void) WRITEL(_reg_val, (void *)(TEGRA_ARM_SOR + (reg<<2))); \ } - SOR_WRITE(SOR_NV_PDISP_SOR_SUPER_STATE0_0, 0x00000000); //0x54540004 - SOR_WRITE(SOR_NV_PDISP_SOR_SUPER_STATE1_0, 0x00000000); //0x54540008 - SOR_WRITE(SOR_NV_PDISP_SOR_STATE0_0, 0x00000000); //0x5454000c - SOR_WRITE(SOR_NV_PDISP_SOR_STATE1_0, 0x00000040); //0x54540010 - SOR_WRITE(SOR_NV_PDISP_HEAD_STATE0, 0x00000000); //0x54540014 - SOR_WRITE(SOR_NV_PDISP_HEAD_STATE0_1, 0x00000000); //0x54540018 - SOR_WRITE(SOR_NV_PDISP_HEAD_STATE1, 0x01011000); //0x5454001c - SOR_WRITE(SOR_NV_PDISP_HEAD_STATE1_1, 0x01011000); //0x54540020 - SOR_WRITE(SOR_NV_PDISP_HEAD_STATE2, 0x00000001); //0x54540024 - SOR_WRITE(SOR_NV_PDISP_HEAD_STATE2_1, 0x00000001); //0x54540028 - SOR_WRITE(SOR_NV_PDISP_HEAD_STATE3, 0x00010011); //0x5454002c - SOR_WRITE(SOR_NV_PDISP_HEAD_STATE3_1, 0x00010011); //0x54540030 - SOR_WRITE(SOR_NV_PDISP_HEAD_STATE4, 0x00110100); //0x54540034 - SOR_WRITE(SOR_NV_PDISP_HEAD_STATE4_1, 0x00110100); //0x54540038 - SOR_WRITE(SOR_NV_PDISP_HEAD_STATE5, 0x00000001); //0x5454003c - SOR_WRITE(SOR_NV_PDISP_HEAD_STATE5_1, 0x00000001); //0x54540040 - SOR_WRITE(SOR_NV_PDISP_SOR_CRC_CNTRL_0, 0x00000000); //0x54540044 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_DEBUG_MVID_0, 0x00000000); //0x54540048 - SOR_WRITE(SOR_NV_PDISP_SOR_CLK_CNTRL_0, 0x00000018); //0x5454004c - SOR_WRITE(SOR_NV_PDISP_SOR_CAP_0, 0x00000000); //0x54540050 - SOR_WRITE(SOR_NV_PDISP_SOR_PWR_0, 0x00000000); //0x54540054 - SOR_WRITE(SOR_NV_PDISP_SOR_TEST_0, 0x00800000); //0x54540058 - SOR_WRITE(SOR_NV_PDISP_SOR_PLL0_0, 0x0f0003d5); //0x5454005c - SOR_WRITE(SOR_NV_PDISP_SOR_PLL1_0, 0x00001000); //0x54540060 - SOR_WRITE(SOR_NV_PDISP_SOR_PLL2_0, 0x01c00000); //0x54540064 - SOR_WRITE(SOR_NV_PDISP_SOR_PLL3_0, 0x38002220); //0x54540068 - SOR_WRITE(SOR_NV_PDISP_SOR_CSTM_0, 0x0001c800); //0x5454006c - SOR_WRITE(SOR_NV_PDISP_SOR_LVDS_0, 0x0001c800); //0x54540070 - SOR_WRITE(SOR_NV_PDISP_SOR_CRCA_0, 0x00000000); //0x54540074 - SOR_WRITE(SOR_NV_PDISP_SOR_CRCB_0, 0x00000000); //0x54540078 - SOR_WRITE(SOR_NV_PDISP_SOR_BLANK_0, 0x00000000); //0x5454007c - SOR_WRITE(SOR_NV_PDISP_SOR_SEQ_CTL_0, 0x00008800); //0x54540080 - SOR_WRITE(SOR_NV_PDISP_SOR_LANE_SEQ_CTL_0, 0x00011000); //0x54540084 - SOR_WRITE(SOR_NV_PDISP_SOR_SEQ_INST0_0, 0x01008000); //0x54540088 - SOR_WRITE(SOR_NV_PDISP_SOR_SEQ_INST1_0, 0x01008000); //0x5454008c - SOR_WRITE(SOR_NV_PDISP_SOR_SEQ_INST2_0, 0x01008000); //0x54540090 - SOR_WRITE(SOR_NV_PDISP_SOR_SEQ_INST3_0, 0x01008000); //0x54540094 - SOR_WRITE(SOR_NV_PDISP_SOR_SEQ_INST4_0, 0x01008000); //0x54540098 - SOR_WRITE(SOR_NV_PDISP_SOR_SEQ_INST5_0, 0x01008000); //0x5454009c - SOR_WRITE(SOR_NV_PDISP_SOR_SEQ_INST6_0, 0x01008000); //0x545400a0 - SOR_WRITE(SOR_NV_PDISP_SOR_SEQ_INST7_0, 0x01008000); //0x545400a4 - SOR_WRITE(SOR_NV_PDISP_SOR_SEQ_INST8_0, 0x01008000); //0x545400a8 - SOR_WRITE(SOR_NV_PDISP_SOR_SEQ_INST9_0, 0x01008000); //0x545400ac - SOR_WRITE(SOR_NV_PDISP_SOR_SEQ_INSTA_0, 0x01008000); //0x545400b0 - SOR_WRITE(SOR_NV_PDISP_SOR_SEQ_INSTB_0, 0x01008000); //0x545400b4 - SOR_WRITE(SOR_NV_PDISP_SOR_SEQ_INSTC_0, 0x01008000); //0x545400b8 - SOR_WRITE(SOR_NV_PDISP_SOR_SEQ_INSTD_0, 0x01008000); //0x545400bc - SOR_WRITE(SOR_NV_PDISP_SOR_SEQ_INSTE_0, 0x01008000); //0x545400c0 - SOR_WRITE(SOR_NV_PDISP_SOR_SEQ_INSTF_0, 0x01008000); //0x545400c4 - SOR_WRITE(SOR_NV_PDISP_SOR_PWM_DIV_0, 0x00000000); //0x545400c8 - SOR_WRITE(SOR_NV_PDISP_SOR_PWM_CTL_0, 0x00000000); //0x545400cc - SOR_WRITE(SOR_NV_PDISP_SOR_VCRCA0_0, 0x00000000); //0x545400d0 - SOR_WRITE(SOR_NV_PDISP_SOR_VCRCA1_0, 0x00000000); //0x545400d4 - SOR_WRITE(SOR_NV_PDISP_SOR_VCRCB0_0, 0x00000000); //0x545400d8 - SOR_WRITE(SOR_NV_PDISP_SOR_VCRCB1_0, 0x00000000); //0x545400dc - SOR_WRITE(SOR_NV_PDISP_SOR_CCRCA0_0, 0x00000000); //0x545400e0 - SOR_WRITE(SOR_NV_PDISP_SOR_CCRCA1_0, 0x00000000); //0x545400e4 - SOR_WRITE(SOR_NV_PDISP_SOR_CCRCB0_0, 0x00000000); //0x545400e8 - SOR_WRITE(SOR_NV_PDISP_SOR_CCRCB1_0, 0x00000000); //0x545400ec - SOR_WRITE(SOR_NV_PDISP_SOR_EDATAA0_0, 0x00000000); //0x545400f0 - SOR_WRITE(SOR_NV_PDISP_SOR_EDATAA1_0, 0x00000000); //0x545400f4 - SOR_WRITE(SOR_NV_PDISP_SOR_EDATAB0_0, 0x00000000); //0x545400f8 - SOR_WRITE(SOR_NV_PDISP_SOR_EDATAB1_0, 0x00000000); //0x545400fc - SOR_WRITE(SOR_NV_PDISP_SOR_COUNTA0_0, 0x00000000); //0x54540100 - SOR_WRITE(SOR_NV_PDISP_SOR_COUNTA1_0, 0x00000000); //0x54540104 - SOR_WRITE(SOR_NV_PDISP_SOR_COUNTB0_0, 0x00000000); //0x54540108 - SOR_WRITE(SOR_NV_PDISP_SOR_COUNTB1_0, 0x00000000); //0x5454010c - SOR_WRITE(SOR_NV_PDISP_SOR_DEBUGA0_0, 0x00000000); //0x54540110 - SOR_WRITE(SOR_NV_PDISP_SOR_DEBUGA1_0, 0x00000000); //0x54540114 - SOR_WRITE(SOR_NV_PDISP_SOR_DEBUGB0_0, 0x00000000); //0x54540118 - SOR_WRITE(SOR_NV_PDISP_SOR_DEBUGB1_0, 0x00000000); //0x5454011c - SOR_WRITE(SOR_NV_PDISP_SOR_TRIG_0, 0x00000000); //0x54540120 - SOR_WRITE(SOR_NV_PDISP_SOR_MSCHECK_0, 0x80000000); //0x54540124 - SOR_WRITE(SOR_NV_PDISP_SOR_XBAR_CTRL_0, 0x8d111a23); //0x54540128 - SOR_WRITE(SOR_NV_PDISP_SOR_XBAR_POL_0, 0x00000000); //0x5454012c - SOR_WRITE(SOR_NV_PDISP_SOR_DP_LINKCTL0_0, 0x00000100); //0x54540130 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_LINKCTL1_0, 0x00000100); //0x54540134 - SOR_WRITE(SOR_NV_PDISP_SOR_LANE_DRIVE_CURRENT0_0, 0x40404040); //0x54540138 - SOR_WRITE(SOR_NV_PDISP_SOR_LANE_DRIVE_CURRENT1_0, 0x80808080); //0x5454013c - SOR_WRITE(SOR_NV_PDISP_SOR_LANE4_DRIVE_CURRENT0_0, 0x00000040); //0x54540140 - SOR_WRITE(SOR_NV_PDISP_SOR_LANE4_DRIVE_CURRENT1_0, 0x00000080); //0x54540144 - SOR_WRITE(SOR_NV_PDISP_SOR_LANE_PREEMPHASIS0_0, 0x00000000); //0x54540148 - SOR_WRITE(SOR_NV_PDISP_SOR_LANE_PREEMPHASIS1_0, 0x00000000); //0x5454014c - SOR_WRITE(SOR_NV_PDISP_SOR_LANE4_PREEMPHASIS0_0, 0x00000000); //0x54540150 - SOR_WRITE(SOR_NV_PDISP_SOR_LANE4_PREEMPHASIS1_0, 0x00000000); //0x54540154 - SOR_WRITE(SOR_NV_PDISP_SOR_POSTCURSOR0_0, 0x00000000); //0x54540158 - SOR_WRITE(SOR_NV_PDISP_SOR_POSTCURSOR1_0, 0x00000000); //0x5454015c - SOR_WRITE(SOR_NV_PDISP_SOR_DP_CONFIG0_0, 0x94000000); //0x54540160 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_CONFIG1_0, 0x94000000); //0x54540164 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_MN0_0, 0x00008000); //0x54540168 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_MN1_0, 0x00008000); //0x5454016c - SOR_WRITE(SOR_NV_PDISP_SOR_DP_PADCTL0_0, 0x00800000); //0x54540170 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_PADCTL1_0, 0x00000000); //0x54540174 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_DEBUG0_0, 0x00000000); //0x54540178 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_DEBUG1_0, 0x00000000); //0x5454017c - SOR_WRITE(SOR_NV_PDISP_SOR_DP_SPARE0_0, 0x00000002); //0x54540180 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_SPARE1_0, 0x00000000); //0x54540184 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_AUDIO_CTRL_0, 0x001f0001); //0x54540188 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_AUDIO_HBLANK_SYMBOLS_0, 0x00000000); //0x5454018c - SOR_WRITE(SOR_NV_PDISP_SOR_DP_AUDIO_VBLANK_SYMBOLS_0, 0x00000000); //0x54540190 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_GENERIC_INFOFRAME_HEADER_0, 0x00000000); //0x54540194 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_GENERIC_INFOFRAME_SUBPACK0_0,0x00000000); //0x54540198 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_GENERIC_INFOFRAME_SUBPACK1_0,0x00000000); //0x5454019c - SOR_WRITE(SOR_NV_PDISP_SOR_DP_GENERIC_INFOFRAME_SUBPACK2_0,0x00000000); //0x545401a0 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_GENERIC_INFOFRAME_SUBPACK3_0,0x00000000); //0x545401a4 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_GENERIC_INFOFRAME_SUBPACK4_0,0x00000000); //0x545401a8 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_GENERIC_INFOFRAME_SUBPACK5_0,0x00000000); //0x545401ac - SOR_WRITE(SOR_NV_PDISP_SOR_DP_GENERIC_INFOFRAME_SUBPACK6_0,0x00000000); //0x545401b0 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_TPG_0, 0x50505050); //0x545401b4 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_TPG_CONFIG_0, 0x00000000); //0x545401b8 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_LQ_CSTM0_0, 0x00000000); //0x545401bc - SOR_WRITE(SOR_NV_PDISP_SOR_DP_LQ_CSTM1_0, 0x00000000); //0x545401c0 - SOR_WRITE(SOR_NV_PDISP_SOR_DP_LQ_CSTM2_0, 0x00000000); //0x545401c4 printk(BIOS_SPEW, "initial SOR done\n"); } void init_dpaux_regs(void) { - struct clk_rst_ctlr *clkrst = (struct clk_rst_ctlr *)TEGRA_CLK_RST_BASE; -// u32 val; - - printk(BIOS_SPEW, "JZ: %s: entry\n", __func__); -#define SWR_DPAUX_RST (1 << 21) -#define CLK_ENB_DPAUX SWR_DPAUX_RST -// REG(CLK_RST_CONTROLLER_RST_DEVICES_X_0, SWR_DPAUX_RST, 1) -// REG(CLK_RST_CONTROLLER_RST_DEVICES_X_0, SWR_DPAUX_RST, 0) -// REG(CLK_RST_CONTROLLER_CLK_OUT_ENB_X_0, CLK_ENB_DPAUX, 1) - setbits_le32(&clkrst->rst_devices_x, SWR_DPAUX_RST); // Set Reset - clrbits_le32(&clkrst->rst_devices_x, SWR_DPAUX_RST); // Clear Reset - setbits_le32(&clkrst->clk_out_enb_x, CLK_ENB_DPAUX); // Set Enable + printk(BIOS_SPEW, "%s: entry\n", __func__); #if 1 #define DPAUX_WRITE(reg, val) \ @@ -560,29 +167,6 @@ void init_dpaux_regs(void) } #endif - DPAUX_WRITE(DPAUX_INTR_EN_AUX, 0x00000000); //0x545c0004 - DPAUX_WRITE(DPAUX_INTR_AUX, 0x00000000); //0x545c0014 - DPAUX_WRITE(DPAUX_DP_AUXDATA_WRITE_W0, 0x00000000); //0x545c0024 - DPAUX_WRITE(DPAUX_DP_AUXDATA_WRITE_W1, 0x00000000); //0x545c0034 - DPAUX_WRITE(DPAUX_DP_AUXDATA_WRITE_W2, 0x00000000); //0x545c0044 - DPAUX_WRITE(DPAUX_DP_AUXDATA_WRITE_W3, 0x00000000); //0x545c0054 - DPAUX_WRITE(DPAUX_DP_AUXDATA_READ_W0, 0x00000000); //0x545c0064 - DPAUX_WRITE(DPAUX_DP_AUXDATA_READ_W1, 0x00000000); //0x545c0074 - DPAUX_WRITE(DPAUX_DP_AUXDATA_READ_W2, 0x00000000); //0x545c0084 - DPAUX_WRITE(DPAUX_DP_AUXDATA_READ_W3, 0x00000000); //0x545c0094 - DPAUX_WRITE(DPAUX_DP_AUXADDR, 0x00000000); //0x545c00a4 - DPAUX_WRITE(DPAUX_DP_AUXCTL, 0x00000000); //0x545c00b4 - DPAUX_WRITE(DPAUX_DP_AUXSTAT, 0x10000000); //0x545c00c4 - DPAUX_WRITE(DPAUX_DP_AUX_SINKSTATLO, 0x00000000); //0x545c00d4 - DPAUX_WRITE(DPAUX_DP_AUX_SINKSTATHI, 0x00000000); //0x545c00e4 - DPAUX_WRITE(DPAUX_HPD_CONFIG, 0x07d000fa); //0x545c00f4 - DPAUX_WRITE(DPAUX_HPD_IRQ_CONFIG, 0x000000fa); //0x545c0104 - DPAUX_WRITE(DPAUX_DP_AUX_CONFIG, 0x00000190); //0x545c0114 - DPAUX_WRITE(DPAUX_HYBRID_PADCTL, 0x00002462); //0x545c0124 - DPAUX_WRITE(DPAUX_HYBRID_SPARE, 0x00000000); //0x545c0134 - DPAUX_WRITE(DPAUX_SCRATCH_REG0_0, 0x00000000); //0x545c0144 - DPAUX_WRITE(DPAUX_SCRATCH_REG1_0, 0x00000000); //0x545c0154 - DPAUX_WRITE(DPAUX_SCRATCH_REG2_0, 0x00000000); //0x545c0164 printk(BIOS_SPEW, "initial DPAUX done\n"); } @@ -634,48 +218,8 @@ static void dp_io_set_dpd(u32 power_down) void dp_io_powerup(void) { -//E_DPD = PMC.dpd2_status[25] -//PDBG = SOR_NV_PDISP_SOR_PLL2_0.AUX6(1) | SEQ.POWERDOWN_MACRO(1) & -//SOR_NV_PDISP_SOR_PLL2_0.AUX2(0) -//PDPLL = SOR_NV_PDISP_SOR_PLL0_0.PWR(1) | SEQ.PDPLL(0) & ~ SOR_NV_PDISP_SOR_PLL2_0.AUX1(0) -//VCOPD = SOR_NV_PDISP_SOR_PLL0_0.VCOPD(1) -//CAPPD = SOR_NV_PDISP_SOR_PLL2_0.AUX8(1) | SEQ.ASSERT_PLL_RESET(0) & -//~ SOR_NV_PDISP_SOR_PLL2_0.AUX1(0) -//PDPORT = SOR_NV_PDISP_SOR_PLL2_0.AUX7(1) | SEQ.PDPORT(1) & -//~ SOR_NV_PDISP_SOR_DP_LINKCTL0_0.ENABLE(0) -//PDCAL = SOR_NV_PDISP_SOR_DP_PADCTL0_0.PAD_CAL_PD(1) - -// struct clk_rst_ctlr *clkrst = -// (struct clk_rst_ctlr *)TEGRA_CLK_RST_BASE; - u32 reg_val; - printk(BIOS_SPEW, "%s: entry\n", __func__); -#if 0 - printk(BIOS_SPEW, "JZ: %s: %d: do nothing, ret\n", __func__, __LINE__); - return; -#endif - -#define SOR0_CLK_SEL0 (1 << 14) -#define SOR0_CLK_SEL1 (1 << 15) -// REG(CLK_RST_CONTROLLER_CLK_SOURCE_SOR0_0, SOR0_CLK_SEL1, 0); -// REG(CLK_RST_CONTROLLER_CLK_SOURCE_SOR0_0, SOR0_CLK_SEL0, 0);//sor safe clock - reg_val = READL((void *)(0x60006000 + 0x414)); - reg_val &= ~(SOR0_CLK_SEL0 | SOR0_CLK_SEL1); - WRITEL(reg_val, (void *)(0x60006000 + 0x414)); - -// clock(PLLDP, 270) - WRITEL(0, (void *)(0x60006000 + 0x594)); // plldp_misc - WRITEL(0x11400000, (void *)(0x60006000 + 0x598)); // plldp_ss_cfg - WRITEL(0x80305a01, (void *)(0x60006000 + 0x590));// plldp_base, 12 * 90 / 4 = 270 - WRITEL(0x11400000, (void *)(0x60006000 + 0x598)); // plldp_ss_cfg - WRITEL(0x40000000, (void *)(0x60006000 + 0x594)); // misc: enable lock - WRITEL(0xc0305a01, (void *)(0x60006000 + 0x590)); // base: enable - WRITEL(0xd8305a01, (void *)(0x60006000 + 0x590)); // base: check lock - WRITEL(0x58305a01, (void *)(0x60006000 + 0x590)); // base: disable bypass - WRITEL(0x11000000, (void *)(0x60006000 + 0x598)); // release clamp - udelay(10); // wait for plldp ready - SOR_WRITE(SOR_NV_PDISP_SOR_CLK_CNTRL_0, (6 << 2) | 2);//select PLLDP, lowest speed(6x) SOR_WRITE(SOR_NV_PDISP_SOR_DP_PADCTL0_0, 0x00800000); //set PDCAL SOR_WRITE(SOR_NV_PDISP_SOR_PLL0_0, 0x050003D5); //set PWR,VCOPD @@ -683,7 +227,6 @@ void dp_io_powerup(void) SOR_WRITE(SOR_NV_PDISP_SOR_PLL2_0, 0x01C20000); //set AUX1,6,7,8; clr AUX2 SOR_WRITE(SOR_NV_PDISP_SOR_PLL3_0, 0x38002220); - //REG(SOR_NV_PDISP_SOR_PLL3_0,PLLVDD_MODE, V1_8) dp_io_set_dpd(0); udelay(1); //Deassert E_DPD to enable core logic circuits, and wait for > 5us @@ -728,8 +271,6 @@ static int dpaux_check(u32 bytes, u32 data, u32 mask) printk(BIOS_SPEW, "******AuxRead Error:%04x: status %08x\n", 0x202, status); else { - //temp = (buf[3] << 24) | (buf[2] << 16) | (buf[1] << 8) | buf[0] ; - //memcpy(&temp, buf, 4); temp = DPAUX_READ(DPAUX_DP_AUXDATA_READ_W0); if ((temp & mask) != (data & mask)) { printk(BIOS_SPEW, "AuxCheck ERROR:(r_data) %08x & (mask) %08x != " @@ -803,7 +344,6 @@ static int dp_training(u32 level, u32 check, u32 speed) u32 cnt = 0; u32 cfg, cfg_d = 0; u32 wcfg; -// u32 status = 0; u8 buf[16]; while (cnt <= 5) { @@ -888,11 +428,7 @@ void dp_link_training(u32 lanes, u32 speed) SOR_WRITE(SOR_NV_PDISP_SOR_CLK_CNTRL_0, ((speed << 2) | 2)); udelay(100); - //REG(CLK_RST_CONTROLLER_CLK_SOURCE_SOR0_0,SOR0_CLK_SEL0, 1) //sor clk=pad macro output - reg_val = readl((void *)(0x60006000 + 0x414)); - reg_val |= SOR0_CLK_SEL0; - - writel(reg_val, (void *)(0x60006000 + 0x414)); + sor_clock_start(); SOR_WRITE(SOR_NV_PDISP_SOR_DP_LINKCTL0_0, (((0xF >> (4 - lanes)) << 16) | 1)); @@ -907,10 +443,6 @@ void dp_link_training(u32 lanes, u32 speed) printk(BIOS_SPEW, "set link rate and lane number: %dMHz, %d lanes\n", (speed * 27), lanes); -// printk(BIOS_SPEW,"JZ: dbg ret\n"); -// return; - -// %d = (%lanes<<8) | %speed dpaux_write(0x100, 2, ((lanes << 8) | speed)); printk(BIOS_SPEW, "precharge lane 10us\n"); reg_val = SOR_READ(SOR_NV_PDISP_SOR_DP_PADCTL0_0); @@ -963,7 +495,6 @@ static u32 div_f(u32 a, u32 b, u32 one) u32 dp_setup_timing(u32 panel_id, u32 width, u32 height); u32 dp_setup_timing(u32 panel_id, u32 width, u32 height) { - u32 reg_val; u32 pclk_freq = 0; /////////////////////////////////////////// @@ -978,11 +509,11 @@ u32 dp_setup_timing(u32 panel_id, u32 width, u32 height) // 720x480: 27.00 , 594/22, dp CEA // 640x480: 23.75 , 475/20, dp VESA - u32 PLL_FREQ = 570; + u32 PLL_FREQ = (12 / 12 * 283) / 1 / 2; /* 141.5 */ u32 PLL_DIV = 2; - u32 SYNC_WIDTH = (10 << 16) | 32; - u32 BACK_PORCH = (36 << 16) | 80; - u32 FRONT_PORCH = (3 << 16) | 48; + u32 SYNC_WIDTH = (8 << 16) | 46; + u32 BACK_PORCH = (6 << 16) | 44; + u32 FRONT_PORCH = (6 << 16) | 44; u32 HSYNC_NEG = 1; u32 VSYNC_NEG = 1; @@ -1006,27 +537,6 @@ u32 dp_setup_timing(u32 panel_id, u32 width, u32 height) return pclk_freq; } -// clock(plld2, %PLL_FREQ) // PLL_FREQ = 570 - writel(0, (void *)(0x60006000 + 0x4bc)); // plld2_misc - writel(0x13400000, (void *)(0x60006000 + 0x570)); // plld2_ss_cfg - writel(0x8008010c, (void *)(0x60006000 + 0x4b8)); // plld2_base - writel(0x80105F01, (void *)(0x60006000 + 0x4b8));// plld2_base: 12 * 95 / 2 = 570 - writel(0x40000000, (void *)(0x60006000 + 0x4bc)); // misc: enable lock - writel(0x80105f01, (void *)(0x60006000 + 0x4b8)); // base: enable - writel(0xc0105f01, (void *)(0x60006000 + 0x4b8)); // base: check lock - writel(0x58105f01, (void *)(0x60006000 + 0x4b8)); // base: disable bypass - writel(0x13800000, (void *)(0x60006000 + 0x570)); // plld2_ss_cfg - udelay(10); // wait for plld2 ready - -// REG(CLK_RST_CONTROLLER_CLK_SOURCE_DISP1_0, DISP1_CLK_SRC, PLLD2_OUT0) -#define DISP1_CLK_SRC (0x7 << 29) -#define PLLD2_OUT0 (0x5 << 29) - reg_val = readl((void *)(0x60006000 + 0x138)); - reg_val &= ~DISP1_CLK_SRC; - reg_val |= PLLD2_OUT0; - writel(reg_val, (void *)(0x60006000 + 0x138)); - udelay(10); - PLL_FREQ = PLL_FREQ * 1000000; pclk_freq = PLL_FREQ / PLL_DIV; PLL_FREQ_I = PLL_FREQ / 1000000; -- cgit v1.2.3