20 files added
7 files modified
| .. | .. |
|---|
| 8 | 8 | |
|---|
| 9 | 9 | #include <dt-bindings/gpio/gpio.h> |
|---|
| 10 | 10 | #include <dt-bindings/pinctrl/rockchip.h> |
|---|
| 11 | +#include <dt-bindings/display/media-bus-format.h> |
|---|
| 11 | 12 | #include "rk3568.dtsi" |
|---|
| 12 | 13 | #include "rk3568-evb.dtsi" |
|---|
| 13 | 14 | |
|---|
| .. | .. |
|---|
| 58 | 59 | regulator-name = "vcc3v3_pcie"; |
|---|
| 59 | 60 | regulator-min-microvolt = <3300000>; |
|---|
| 60 | 61 | regulator-max-microvolt = <3300000>; |
|---|
| 62 | + regulator-always-on; |
|---|
| 61 | 63 | enable-active-high; |
|---|
| 64 | + regulator-boot-on; |
|---|
| 62 | 65 | gpio = <&gpio0 RK_PD4 GPIO_ACTIVE_HIGH>; |
|---|
| 63 | 66 | startup-delay-us = <5000>; |
|---|
| 64 | 67 | vin-supply = <&dc_12v>; |
|---|
| .. | .. |
|---|
| 88 | 91 | |
|---|
| 89 | 92 | nk_io_init { |
|---|
| 90 | 93 | compatible = "nk_io_control"; |
|---|
| 91 | | -// usb_en_oc_gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>; //USB_EN_OC_GPIO0_A5 |
|---|
| 92 | | - lcd_bk_en_gpio = <&gpio0 RK_PB0 GPIO_ACTIVE_HIGH>; //LCD0_BKLT_EN_3V3 |
|---|
| 93 | | - lcd_pwblk_gpio = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>; //LCD0_BKLT_EN_3V3 |
|---|
| 94 | 94 | vcc3_io_en_gpio = <&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>; //VCC3_IO_EN_GPIO0_C4_3V3 |
|---|
| 95 | 95 | hub_host2_5V_rest_gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_HIGH>; //HUB_RST_GPIO4_D2_3V3 |
|---|
| 96 | 96 | hub_host3_5v_gpio = <&gpio4 RK_PB2 GPIO_ACTIVE_HIGH>; //HOST3_EN_GPIO4_B2_1V8 |
|---|
| 97 | | -// hub_host3_5V_rest_gpio = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>; |
|---|
| 98 | 97 | vcc_5v_io = <&gpio1 RK_PA4 GPIO_ACTIVE_HIGH>; //VCC5_IO_EN_GPIO1_A4_3V3 |
|---|
| 99 | 98 | vcc_12v_io = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>; //VCC12_IO_EN_GPIO0_C7_3V3 |
|---|
| 100 | 99 | en_4g_gpio = <&gpio0 RK_PC6 GPIO_ACTIVE_HIGH>; //4G_PWREN_H_GPIO0_C6 |
|---|
| .. | .. |
|---|
| 102 | 101 | air_mode_4g_gpio = <&gpio1 RK_PB0 GPIO_ACTIVE_HIGH>; //4G_AIR_MODE_GPIO01_B0_3V3 |
|---|
| 103 | 102 | wake_4g_gpio = <&gpio1 RK_PB1 GPIO_ACTIVE_HIGH>; //4G_WAKEUP_GPIO01_B1_3V3 |
|---|
| 104 | 103 | hp_en_gpio = <&gpio3 RK_PA6 GPIO_ACTIVE_HIGH>;//HP_EN_GPIO3_A6_3V3 |
|---|
| 105 | | - spk_out_gpio = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>;//AMP_SD_GPIO4_C2_3V3 |
|---|
| 106 | | - |
|---|
| 107 | | - edp_enable_gpio = <&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>; |
|---|
| 108 | | - edp_gpio0 = <&gpio3 RK_PD2 GPIO_ACTIVE_HIGH>; //7511_GPIO0-GPIO3_D2 |
|---|
| 109 | | - edp_gpio1 = <&gpio3 RK_PD3 GPIO_ACTIVE_HIGH>; //7511_GPIO1-GPIO3_D3 |
|---|
| 110 | | - edp_gpio2 = <&gpio3 RK_PD4 GPIO_ACTIVE_HIGH>; //7511_GPIO2-GPIO3_D4 |
|---|
| 111 | | - edp_gpio3 = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>; //7511_GPIO3-GPIO3_D5 |
|---|
| 112 | | - edp_reset = <&gpio3 RK_PD1 GPIO_ACTIVE_LOW>; //7511_RST_GPIO3_D1 |
|---|
| 113 | | -// tp_reset = <&gpio3 RK_PA7 GPIO_ACTIVE_HIGH>; |
|---|
| 114 | | -// vddio_mipi = <&gpio1 RK_PA4 GPIO_ACTIVE_HIGH>; |
|---|
| 115 | | - |
|---|
| 104 | + spk_out_gpio = <&gpio4 RK_PC2 GPIO_ACTIVE_HIGH>;//AMP_SD_GPIO4_C2_3V3 |
|---|
| 116 | 105 | wifi_power_en_gpio = <&gpio3 RK_PC6 GPIO_ACTIVE_HIGH>; //WIFI_PWREN_GPIO3_C6_1V8 |
|---|
| 117 | | - |
|---|
| 106 | +// pcie_power_en_gpio = <&gpio0 RK_PD4 GPIO_ACTIVE_HIGH>;//PCIE_PWREN_H_GPIO0_D4 |
|---|
| 118 | 107 | pinctrl-names = "default"; |
|---|
| 119 | | - pinctrl-0 = <&nk_io_gpio>; |
|---|
| 120 | | - nodka_lvds = <9>; |
|---|
| 108 | + pinctrl-0 = <&nk_io_gpio>; |
|---|
| 121 | 109 | }; |
|---|
| 110 | + |
|---|
| 111 | + panel: panel { |
|---|
| 112 | + compatible = "simple-panel"; |
|---|
| 113 | + backlight = <&backlight>; |
|---|
| 114 | + power-supply = <&vcc3v3_lcd0_n>; |
|---|
| 115 | + enable-gpios = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>; //LCD0_VDD_H_GPIO2_D4 |
|---|
| 116 | + reset-gpios = <&gpio3 RK_PD1 GPIO_ACTIVE_LOW>; //7511_RST_GPIO3_D1 |
|---|
| 117 | + edp-bl-gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>; //LCD0_BKLT_EN_3V3 |
|---|
| 118 | + edp-bl-en = <&gpio0 RK_PB0 GPIO_ACTIVE_HIGH>; //LCD0_BKLT_EN_3V3 |
|---|
| 119 | + bus-format = <MEDIA_BUS_FMT_RGB888_1X24>; |
|---|
| 120 | + bpc = <8>; |
|---|
| 121 | + prepare-delay-ms = <200>; |
|---|
| 122 | + enable-delay-ms = <20>; |
|---|
| 123 | + lvds-gpio0 = <&gpio3 RK_PD2 GPIO_ACTIVE_HIGH>; //7511_GPIO0-GPIO3_D2 |
|---|
| 124 | + lvds-gpio1 = <&gpio3 RK_PD3 GPIO_ACTIVE_HIGH>; //7511_GPIO1-GPIO3_D3 |
|---|
| 125 | + lvds-gpio2 = <&gpio3 RK_PD4 GPIO_ACTIVE_HIGH>; //7511_GPIO2-GPIO3_D4 |
|---|
| 126 | + lvds-gpio3 = <&gpio3 RK_PD5 GPIO_ACTIVE_HIGH>; //7511_GPIO3-GPIO3_D5 |
|---|
| 127 | + nodka-lvds = <9>; |
|---|
| 128 | + |
|---|
| 129 | + display-timings { |
|---|
| 130 | + native-mode = <&timing0>; |
|---|
| 131 | + timing0: timing0 { |
|---|
| 132 | + clock-frequency = <142300000>; |
|---|
| 133 | + hactive = <1920>; |
|---|
| 134 | + vactive = <1080>; |
|---|
| 135 | + hfront-porch = <48>; |
|---|
| 136 | + hsync-len = <32>; |
|---|
| 137 | + hback-porch = <100>; |
|---|
| 138 | + vfront-porch = <7>; |
|---|
| 139 | + vsync-len = <20>; |
|---|
| 140 | + vback-porch = <23>; |
|---|
| 141 | + hsync-active = <0>; |
|---|
| 142 | + vsync-active = <0>; |
|---|
| 143 | + de-active = <0>; |
|---|
| 144 | + pixelclk-active = <0>; |
|---|
| 145 | + }; |
|---|
| 146 | + }; |
|---|
| 147 | + ports { |
|---|
| 148 | + panel_in: endpoint { |
|---|
| 149 | + remote-endpoint = <&edp_out>; |
|---|
| 150 | + }; |
|---|
| 151 | + }; |
|---|
| 152 | + }; |
|---|
| 122 | 153 | }; |
|---|
| 123 | 154 | |
|---|
| 124 | 155 | &combphy0_us { |
|---|
| .. | .. |
|---|
| 134 | 165 | }; |
|---|
| 135 | 166 | |
|---|
| 136 | 167 | &csi2_dphy_hw { |
|---|
| 137 | | - status = "okay"; |
|---|
| 168 | + status = "disabled"; |
|---|
| 138 | 169 | }; |
|---|
| 139 | 170 | |
|---|
| 140 | 171 | &csi2_dphy0 { |
|---|
| 141 | | - status = "okay"; |
|---|
| 172 | + status = "disabled"; |
|---|
| 142 | 173 | |
|---|
| 143 | 174 | ports { |
|---|
| 144 | 175 | #address-cells = <1>; |
|---|
| .. | .. |
|---|
| 181 | 212 | * video_phy0 needs to be enabled |
|---|
| 182 | 213 | * when dsi0 is enabled |
|---|
| 183 | 214 | */ |
|---|
| 215 | +&video_phy0 { |
|---|
| 216 | + status = "disabled"; |
|---|
| 217 | +}; |
|---|
| 218 | + |
|---|
| 184 | 219 | &dsi0 { |
|---|
| 185 | | - status = "okay"; |
|---|
| 220 | + status = "disabled"; |
|---|
| 186 | 221 | }; |
|---|
| 187 | 222 | |
|---|
| 188 | 223 | &dsi0_in_vp0 { |
|---|
| .. | .. |
|---|
| 190 | 225 | }; |
|---|
| 191 | 226 | |
|---|
| 192 | 227 | &dsi0_in_vp1 { |
|---|
| 193 | | - status = "okay"; |
|---|
| 228 | + status = "disabled"; |
|---|
| 194 | 229 | }; |
|---|
| 195 | 230 | |
|---|
| 196 | 231 | &dsi0_panel { |
|---|
| .. | .. |
|---|
| 201 | 236 | * video_phy1 needs to be enabled |
|---|
| 202 | 237 | * when dsi1 is enabled |
|---|
| 203 | 238 | */ |
|---|
| 239 | + |
|---|
| 240 | +&video_phy1 { |
|---|
| 241 | + status = "disabled"; |
|---|
| 242 | +}; |
|---|
| 204 | 243 | &dsi1 { |
|---|
| 205 | 244 | status = "disabled"; |
|---|
| 206 | 245 | }; |
|---|
| .. | .. |
|---|
| 217 | 256 | power-supply = <&vcc3v3_lcd1_n>; |
|---|
| 218 | 257 | }; |
|---|
| 219 | 258 | |
|---|
| 259 | +/* |
|---|
| 260 | +* edp_start |
|---|
| 261 | +*/ |
|---|
| 262 | + |
|---|
| 220 | 263 | &edp { |
|---|
| 221 | | - hpd-gpios = <&gpio0 RK_PC2 GPIO_ACTIVE_HIGH>; |
|---|
| 222 | | - status = "okay"; |
|---|
| 264 | + force-hpd; |
|---|
| 265 | + status = "okay"; |
|---|
| 266 | + ports { |
|---|
| 267 | + port@1 { |
|---|
| 268 | + reg = <1>; |
|---|
| 269 | + edp_out: endpoint { |
|---|
| 270 | + remote-endpoint = <&panel_in>; |
|---|
| 271 | + }; |
|---|
| 272 | + }; |
|---|
| 273 | + }; |
|---|
| 223 | 274 | }; |
|---|
| 224 | 275 | |
|---|
| 225 | 276 | &edp_phy { |
|---|
| 226 | | - status = "okay"; |
|---|
| 277 | + status = "okay"; |
|---|
| 227 | 278 | }; |
|---|
| 228 | 279 | |
|---|
| 229 | 280 | &edp_in_vp0 { |
|---|
| 230 | | - status = "okay"; |
|---|
| 281 | + status = "disabled"; |
|---|
| 231 | 282 | }; |
|---|
| 232 | 283 | |
|---|
| 233 | 284 | &edp_in_vp1 { |
|---|
| 285 | + status = "okay"; |
|---|
| 286 | +}; |
|---|
| 287 | + |
|---|
| 288 | +&route_edp { |
|---|
| 289 | + status = "okay"; |
|---|
| 290 | + connect = <&vp1_out_edp>; |
|---|
| 291 | +}; |
|---|
| 292 | + |
|---|
| 293 | +&route_edp { |
|---|
| 294 | + status = "okay"; |
|---|
| 295 | +}; |
|---|
| 296 | +/* |
|---|
| 297 | +* edp_end |
|---|
| 298 | +*/ |
|---|
| 299 | + |
|---|
| 300 | +/* |
|---|
| 301 | +* Hdmi_start |
|---|
| 302 | +*/ |
|---|
| 303 | + |
|---|
| 304 | +&hdmi { |
|---|
| 305 | + status = "okay"; |
|---|
| 306 | + rockchip,phy-table = |
|---|
| 307 | + <92812500 0x8009 0x0000 0x0270>, |
|---|
| 308 | + <165000000 0x800b 0x0000 0x026d>, |
|---|
| 309 | + <185625000 0x800b 0x0000 0x01ed>, |
|---|
| 310 | + <297000000 0x800b 0x0000 0x01ad>, |
|---|
| 311 | + <594000000 0x8029 0x0000 0x0088>, |
|---|
| 312 | + <000000000 0x0000 0x0000 0x0000>; |
|---|
| 313 | +}; |
|---|
| 314 | + |
|---|
| 315 | +&route_hdmi { |
|---|
| 316 | + status = "okay"; |
|---|
| 317 | + connect = <&vp0_out_hdmi>; |
|---|
| 318 | +}; |
|---|
| 319 | + |
|---|
| 320 | +&hdmi_in_vp0 { |
|---|
| 321 | + status = "okay"; |
|---|
| 322 | +}; |
|---|
| 323 | + |
|---|
| 324 | +&hdmi_in_vp1 { |
|---|
| 234 | 325 | status = "disabled"; |
|---|
| 235 | 326 | }; |
|---|
| 327 | + |
|---|
| 328 | +&hdmi_sound { |
|---|
| 329 | + status = "okay"; |
|---|
| 330 | +}; |
|---|
| 331 | + |
|---|
| 332 | +/* |
|---|
| 333 | + * Hdmi_END |
|---|
| 334 | +*/ |
|---|
| 236 | 335 | |
|---|
| 237 | 336 | &gmac0 { |
|---|
| 238 | 337 | phy-mode = "rgmii"; |
|---|
| .. | .. |
|---|
| 409 | 508 | }; |
|---|
| 410 | 509 | }; |
|---|
| 411 | 510 | |
|---|
| 412 | | -&video_phy0 { |
|---|
| 413 | | - status = "okay"; |
|---|
| 414 | | -}; |
|---|
| 415 | 511 | |
|---|
| 416 | | -&video_phy1 { |
|---|
| 417 | | - status = "disabled"; |
|---|
| 418 | | -}; |
|---|
| 419 | 512 | |
|---|
| 420 | 513 | &pcie30phy { |
|---|
| 421 | 514 | status = "okay"; |
|---|
| 422 | 515 | }; |
|---|
| 423 | 516 | |
|---|
| 424 | | -&pcie3x2 { |
|---|
| 425 | | - reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>; |
|---|
| 517 | +&pcie2x1 { |
|---|
| 518 | + reset-gpios = <&gpio3 RK_PC1 GPIO_ACTIVE_HIGH>; |
|---|
| 426 | 519 | vpcie3v3-supply = <&vcc3v3_pcie>; |
|---|
| 427 | 520 | status = "okay"; |
|---|
| 428 | 521 | }; |
|---|
| .. | .. |
|---|
| 477 | 570 | }; |
|---|
| 478 | 571 | |
|---|
| 479 | 572 | &rkisp { |
|---|
| 480 | | - status = "okay"; |
|---|
| 573 | + status = "disabled"; |
|---|
| 481 | 574 | }; |
|---|
| 482 | 575 | |
|---|
| 483 | 576 | &rkisp_mmu { |
|---|
| 484 | | - status = "okay"; |
|---|
| 577 | + status = "disabled"; |
|---|
| 485 | 578 | }; |
|---|
| 486 | 579 | |
|---|
| 487 | 580 | &rkisp_vir0 { |
|---|
| 488 | | - status = "okay"; |
|---|
| 581 | + status = "disabled"; |
|---|
| 489 | 582 | |
|---|
| 490 | 583 | port { |
|---|
| 491 | 584 | #address-cells = <1>; |
|---|
| .. | .. |
|---|
| 499 | 592 | }; |
|---|
| 500 | 593 | |
|---|
| 501 | 594 | &route_dsi0 { |
|---|
| 502 | | - status = "okay"; |
|---|
| 595 | + status = "disabled"; |
|---|
| 503 | 596 | connect = <&vp1_out_dsi0>; |
|---|
| 504 | 597 | }; |
|---|
| 505 | 598 | |
|---|
| 506 | | -&route_edp { |
|---|
| 507 | | - status = "okay"; |
|---|
| 508 | | - connect = <&vp0_out_edp>; |
|---|
| 509 | | -}; |
|---|
| 599 | + |
|---|
| 510 | 600 | |
|---|
| 511 | 601 | &sata2 { |
|---|
| 512 | 602 | status = "okay"; |
|---|
| .. | .. |
|---|
| 545 | 635 | }; |
|---|
| 546 | 636 | |
|---|
| 547 | 637 | &vcc3v3_lcd0_n { |
|---|
| 548 | | - gpio = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>; |
|---|
| 638 | + gpio = <&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>; |
|---|
| 549 | 639 | enable-active-high; |
|---|
| 550 | 640 | }; |
|---|
| 551 | 641 | |
|---|
| .. | .. |
|---|
| 291 | 291 | regulator-min-microvolt = <3300000>; |
|---|
| 292 | 292 | regulator-max-microvolt = <3300000>; |
|---|
| 293 | 293 | enable-active-high; |
|---|
| 294 | | - gpio = <&gpio2 RK_PD4 GPIO_ACTIVE_HIGH>; |
|---|
| 294 | + gpio = <&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>; //VCC3_IO_EN_GPIO0_C4_3V3 |
|---|
| 295 | 295 | vin-supply = <&vcc3v3_sys>; |
|---|
| 296 | 296 | |
|---|
| 297 | 297 | regulator-state-mem { |
|---|
| .. | .. |
|---|
| 1070 | 1070 | status = "okay"; |
|---|
| 1071 | 1071 | }; |
|---|
| 1072 | 1072 | |
|---|
| 1073 | | -&hdmi { |
|---|
| 1074 | | - status = "okay"; |
|---|
| 1075 | | - rockchip,phy-table = |
|---|
| 1076 | | - <92812500 0x8009 0x0000 0x0270>, |
|---|
| 1077 | | - <165000000 0x800b 0x0000 0x026d>, |
|---|
| 1078 | | - <185625000 0x800b 0x0000 0x01ed>, |
|---|
| 1079 | | - <297000000 0x800b 0x0000 0x01ad>, |
|---|
| 1080 | | - <594000000 0x8029 0x0000 0x0088>, |
|---|
| 1081 | | - <000000000 0x0000 0x0000 0x0000>; |
|---|
| 1082 | | -}; |
|---|
| 1083 | 1073 | |
|---|
| 1084 | | -&hdmi_in_vp0 { |
|---|
| 1085 | | - status = "okay"; |
|---|
| 1086 | | -}; |
|---|
| 1087 | | - |
|---|
| 1088 | | -&hdmi_in_vp1 { |
|---|
| 1089 | | - status = "disabled"; |
|---|
| 1090 | | -}; |
|---|
| 1091 | | - |
|---|
| 1092 | | -&hdmi_sound { |
|---|
| 1093 | | - status = "okay"; |
|---|
| 1094 | | -}; |
|---|
| 1095 | 1074 | |
|---|
| 1096 | 1075 | &i2c0 { |
|---|
| 1097 | 1076 | status = "okay"; |
|---|
| .. | .. |
|---|
| 1691 | 1670 | status = "okay"; |
|---|
| 1692 | 1671 | }; |
|---|
| 1693 | 1672 | |
|---|
| 1694 | | -&route_hdmi { |
|---|
| 1695 | | - status = "okay"; |
|---|
| 1696 | | - connect = <&vp0_out_hdmi>; |
|---|
| 1697 | | -}; |
|---|
| 1673 | + |
|---|
| 1698 | 1674 | |
|---|
| 1699 | 1675 | &saradc { |
|---|
| 1700 | 1676 | status = "okay"; |
|---|
| .. | .. |
|---|
| 256 | 256 | connect = <&vp0_out_dsi1>; |
|---|
| 257 | 257 | }; |
|---|
| 258 | 258 | route_edp: route-edp { |
|---|
| 259 | | - status = "disabled"; |
|---|
| 259 | + status = "okay"; |
|---|
| 260 | 260 | logo,uboot = "logo.bmp"; |
|---|
| 261 | 261 | logo,kernel = "logo_kernel.bmp"; |
|---|
| 262 | 262 | logo,mode = "center"; |
|---|
| 263 | 263 | charge_logo,mode = "center"; |
|---|
| 264 | | - connect = <&vp0_out_edp>; |
|---|
| 264 | + connect = <&vp1_out_edp>; |
|---|
| 265 | 265 | }; |
|---|
| 266 | 266 | route_hdmi: route-hdmi { |
|---|
| 267 | | - status = "disabled"; |
|---|
| 267 | + status = "okay"; |
|---|
| 268 | 268 | logo,uboot = "logo.bmp"; |
|---|
| 269 | 269 | logo,kernel = "logo_kernel.bmp"; |
|---|
| 270 | 270 | logo,mode = "center"; |
|---|
| 271 | 271 | charge_logo,mode = "center"; |
|---|
| 272 | | - connect = <&vp1_out_hdmi>; |
|---|
| 272 | + connect = <&vp0_out_hdmi>; |
|---|
| 273 | 273 | }; |
|---|
| 274 | 274 | route_lvds: route-lvds { |
|---|
| 275 | 275 | status = "disabled"; |
|---|
| .. | .. |
|---|
| 2397 | 2397 | reg-names = "pcie-dbi", "pcie-apb"; |
|---|
| 2398 | 2398 | resets = <&cru SRST_PCIE20_POWERUP>; |
|---|
| 2399 | 2399 | reset-names = "pipe"; |
|---|
| 2400 | | - status = "disabled"; |
|---|
| 2400 | + status = "okay"; |
|---|
| 2401 | 2401 | |
|---|
| 2402 | 2402 | pcie2x1_intc: legacy-interrupt-controller { |
|---|
| 2403 | 2403 | interrupt-controller; |
|---|
| .. | .. |
|---|
| 61 | 61 | {
|
|---|
| 62 | 62 | struct device_node *node = pdev->dev.of_node;
|
|---|
| 63 | 63 | struct nk_io_pdata *pdata;
|
|---|
| 64 | | - int gpio0, gpio1, gpio2, gpio3, reset_pin, ch342_reset;
|
|---|
| 65 | 64 | int ret;
|
|---|
| 66 | | - int lvds_index;
|
|---|
| 67 | | - int i=0;
|
|---|
| 68 | | - static int lvds_gpio[4] ;
|
|---|
| 65 | +
|
|---|
| 69 | 66 |
|
|---|
| 70 | 67 | enum of_gpio_flags flags;
|
|---|
| 71 | 68 |
|
|---|
| .. | .. |
|---|
| 97 | 94 | goto err;
|
|---|
| 98 | 95 | }
|
|---|
| 99 | 96 | }
|
|---|
| 100 | | -
|
|---|
| 97 | +#if 0
|
|---|
| 101 | 98 | //vcc3_io_en_gpio
|
|---|
| 102 | 99 | ret = of_get_named_gpio_flags(node, "vcc3_io_en_gpio", 0, &flags);
|
|---|
| 103 | 100 | if (ret < 0) {
|
|---|
| .. | .. |
|---|
| 117 | 114 | goto err;
|
|---|
| 118 | 115 | }
|
|---|
| 119 | 116 | }
|
|---|
| 120 | | -
|
|---|
| 117 | +#endif
|
|---|
| 121 | 118 | //vcc_12v_io
|
|---|
| 122 | 119 | ret = of_get_named_gpio_flags(node, "vcc_12v_io", 0, &flags);
|
|---|
| 123 | 120 | if (ret < 0) {
|
|---|
| .. | .. |
|---|
| 287 | 284 | printk("%s() gpio_direction_output hp_en_gpio set ERROR\n", __FUNCTION__);
|
|---|
| 288 | 285 | }
|
|---|
| 289 | 286 | }
|
|---|
| 290 | | -
|
|---|
| 287 | +#if 0
|
|---|
| 288 | + //pcie_power_en_gpio
|
|---|
| 289 | + ret = of_get_named_gpio_flags(node, "pcie_power_en_gpio", 0, &flags);
|
|---|
| 290 | + if (ret < 0) {
|
|---|
| 291 | + printk("%s() Can not read property pcie_power_en_gpio\n", __FUNCTION__);
|
|---|
| 292 | + } else {
|
|---|
| 293 | + pdata->pcie_power_en_gpio = ret;
|
|---|
| 294 | +
|
|---|
| 295 | + ret = devm_gpio_request(&pdev->dev, pdata->pcie_power_en_gpio, "pcie_power_en_gpio");
|
|---|
| 296 | + if(ret < 0){
|
|---|
| 297 | + printk("%s() devm_gpio_request pcie_power_en_gpio request ERROR\n", __FUNCTION__);
|
|---|
| 298 | + }
|
|---|
| 299 | + ret = gpio_direction_output(pdata->pcie_power_en_gpio,1);
|
|---|
| 300 | + if(ret < 0){
|
|---|
| 301 | + printk("%s() gpio_direction_output pcie_power_en_gpio set ERROR\n", __FUNCTION__);
|
|---|
| 302 | + }
|
|---|
| 303 | + }
|
|---|
| 304 | +#endif
|
|---|
| 291 | 305 | //wifi_power_en_gpio
|
|---|
| 292 | 306 | ret = of_get_named_gpio_flags(node, "wifi_power_en_gpio", 0, &flags);
|
|---|
| 293 | 307 | if (ret < 0) {
|
|---|
| .. | .. |
|---|
| 377 | 391 | }
|
|---|
| 378 | 392 | }
|
|---|
| 379 | 393 |
|
|---|
| 380 | | - //ch342_enable-gpio;
|
|---|
| 381 | | - ret = of_get_named_gpio_flags(node, "ch342_power", 0, &flags);
|
|---|
| 394 | + //lcd_bk_en_gpio;
|
|---|
| 395 | + ret = of_get_named_gpio_flags(node, "lcd_bk_en_gpio", 0, &flags);
|
|---|
| 382 | 396 | if (ret < 0) {
|
|---|
| 383 | | - printk("%s() Can not read property ch342_gpio\n", __FUNCTION__);
|
|---|
| 397 | + printk("%s() Can not read property lcd_bk_en_gpio\n", __FUNCTION__);
|
|---|
| 384 | 398 | } else {
|
|---|
| 385 | | - pdata->ch342_power = ret;
|
|---|
| 399 | + pdata->lcd_bk_en_gpio = ret;
|
|---|
| 386 | 400 |
|
|---|
| 387 | | - ret = devm_gpio_request(&pdev->dev, pdata->ch342_power, "ch342_power");
|
|---|
| 401 | + ret = devm_gpio_request(&pdev->dev, pdata->lcd_bk_en_gpio, "lcd_bk_en_gpio");
|
|---|
| 388 | 402 | if(ret < 0){
|
|---|
| 389 | | - printk("%s() devm_gpio_request ch342_power request ERROR\n", __FUNCTION__);
|
|---|
| 403 | + printk("%s() devm_gpio_request lcd_bk_en_gpio request ERROR\n", __FUNCTION__);
|
|---|
| 390 | 404 | }
|
|---|
| 391 | 405 |
|
|---|
| 392 | | - ret = gpio_direction_output(pdata->ch342_power,1);
|
|---|
| 406 | + ret = gpio_direction_output(pdata->lcd_bk_en_gpio,1);
|
|---|
| 393 | 407 | if(ret < 0){
|
|---|
| 394 | | - printk("%s() gpio_direction_input ch342_power set ERROR\n", __FUNCTION__);
|
|---|
| 408 | + printk("%s() gpio_direction_output lcd_bk_en_gpio set ERROR\n", __FUNCTION__);
|
|---|
| 395 | 409 | }
|
|---|
| 396 | 410 | }
|
|---|
| 397 | | -*/
|
|---|
| 411 | +
|
|---|
| 412 | + //lcd_pwblk_gpio;
|
|---|
| 413 | + ret = of_get_named_gpio_flags(node, "lcd_pwblk_gpio", 0, &flags);
|
|---|
| 414 | + if (ret < 0) {
|
|---|
| 415 | + printk("%s() Can not read property lcd_pwblk_gpio\n", __FUNCTION__);
|
|---|
| 416 | + } else {
|
|---|
| 417 | + pdata->lcd_pwblk_gpio = ret;
|
|---|
| 418 | +
|
|---|
| 419 | + ret = devm_gpio_request(&pdev->dev, pdata->lcd_pwblk_gpio, "lcd_pwblk_gpio");
|
|---|
| 420 | + if(ret < 0){
|
|---|
| 421 | + printk("%s() devm_gpio_request lcd_pwblk_gpio request ERROR\n", __FUNCTION__);
|
|---|
| 422 | + }
|
|---|
| 423 | +
|
|---|
| 424 | + ret = gpio_direction_output(pdata->lcd_pwblk_gpio,1);
|
|---|
| 425 | + if(ret < 0){
|
|---|
| 426 | + printk("%s() gpio_direction_output lcd_pwblk_gpio set ERROR\n", __FUNCTION__);
|
|---|
| 427 | + }
|
|---|
| 428 | + }
|
|---|
| 429 | +
|
|---|
| 398 | 430 |
|
|---|
| 399 | 431 | //edp_set_pixel-s
|
|---|
| 400 | 432 | ret = of_get_named_gpio_flags(node, "edp_reset", 0, &flags);
|
|---|
| .. | .. |
|---|
| 498 | 530 | gpio_direction_output(gpio2, lvds_gpio[2]);
|
|---|
| 499 | 531 | gpio_direction_output(gpio3, lvds_gpio[3]);
|
|---|
| 500 | 532 |
|
|---|
| 533 | +
|
|---|
| 534 | + gpio_direction_output(reset_pin, 0);
|
|---|
| 535 | + usleep_range(80000, 100000);
|
|---|
| 536 | + gpio_direction_output(reset_pin, 1);
|
|---|
| 537 | + usleep_range(80000, 100000);
|
|---|
| 538 | +*/
|
|---|
| 501 | 539 | printk(" #######nk_io_control_probe end####### \n");
|
|---|
| 502 | 540 | return 0;
|
|---|
| 503 | 541 |
|
|---|
| .. | .. |
|---|
| 542 | 580 |
|
|---|
| 543 | 581 | static int nk_io_control_resume(struct platform_device *pdev)
|
|---|
| 544 | 582 | {
|
|---|
| 545 | | - int ret,reset_pin;
|
|---|
| 546 | | - printk("nk_io resume !!!!\n");
|
|---|
| 547 | | - ret = gpio_get_value(120);
|
|---|
| 548 | | -
|
|---|
| 549 | | -#if 0
|
|---|
| 550 | | - gpio_set_value(8,1);
|
|---|
| 551 | | - ret = gpio_get_value(8);
|
|---|
| 552 | | - printk("vcc12v gpio value : %d\n",ret);
|
|---|
| 553 | | -#endif
|
|---|
| 554 | | -#if 0
|
|---|
| 555 | | - gpio_set_value(15,1);
|
|---|
| 556 | | - ret = gpio_get_value(15);
|
|---|
| 557 | | - printk("edp_en gpio value : %d\n",ret);
|
|---|
| 558 | | - gpio_set_value(21,1);
|
|---|
| 559 | | - ret = gpio_get_value(21);
|
|---|
| 560 | | - printk("hub_host3_5v_gpio value : %d\n",ret);
|
|---|
| 561 | | -#endif
|
|---|
| 562 | | -#if 0
|
|---|
| 563 | | - usleep_range(80000, 100000);
|
|---|
| 564 | | - gpio_set_value(120,0);
|
|---|
| 565 | | -// gpio_direction_output(120, 0);
|
|---|
| 566 | | - usleep_range(80000, 100000);
|
|---|
| 567 | | - ret = gpio_get_value(120);
|
|---|
| 568 | | - printk("edp_reset gpio value : %d\n",ret);
|
|---|
| 569 | | -// gpio_direction_output(120, 1);
|
|---|
| 570 | | - gpio_set_value(120,1);
|
|---|
| 571 | | - usleep_range(80000, 100000);
|
|---|
| 572 | | - ret = gpio_get_value(120);
|
|---|
| 573 | | - printk("edp_reset gpio value : %d\n",ret);
|
|---|
| 574 | | -#endif
|
|---|
| 575 | | - //enable = 1;
|
|---|
| 576 | | - //LED_SET(11);
|
|---|
| 577 | 583 | return 0;
|
|---|
| 578 | 584 | }
|
|---|
| 579 | 585 |
|
|---|
| .. | .. |
|---|
| 28 | 28 | unsigned int edp_power_supply_gpio; |
|---|
| 29 | 29 | unsigned int edp_enable_gpio; |
|---|
| 30 | 30 | unsigned int spk_out_gpio; |
|---|
| 31 | | - unsigned int vddio_mipi; |
|---|
| 31 | + unsigned int pcie_power_en_gpio; |
|---|
| 32 | 32 | // unsigned int tp_reset; |
|---|
| 33 | 33 | }; |
|---|
| 34 | 34 | |
|---|
| .. | .. |
|---|
| 1 | +#!/bin/bash |
|---|
| 2 | +CONFIG_PATH="/root/.config/nodka_lcd/lcd.config" |
|---|
| 3 | +EDP_PARMFILE_PATH="/nodka_test/lcd_parameters/eDP/" |
|---|
| 4 | +LVDS_PARMFILE_PATH="/nodka_test/lcd_parameters/LVDS/" |
|---|
| 5 | + |
|---|
| 6 | +choose_button=$(grep choose_button $CONFIG_PATH) |
|---|
| 7 | +choose_button=${choose_button:14} |
|---|
| 8 | +echo $choose_button |
|---|
| 9 | + |
|---|
| 10 | +edp_type=$(grep edp_type $CONFIG_PATH) |
|---|
| 11 | +edp_type=${edp_type:9} |
|---|
| 12 | +echo $edp_type |
|---|
| 13 | + |
|---|
| 14 | +lvds_type=$(grep lvds_type $CONFIG_PATH) |
|---|
| 15 | +lvds_type=${lvds_type:10} |
|---|
| 16 | +echo $lvds_type |
|---|
| 17 | + |
|---|
| 18 | +if [[ $choose_button = "button_eDP" ]];then |
|---|
| 19 | + cp $EDP_PARMFILE_PATH$edp_type /nodka_test/nodka_lcd |
|---|
| 20 | +else |
|---|
| 21 | + cp $LVDS_PARMFILE_PATH$lvds_type /nodka_test/nodka_lcd |
|---|
| 22 | +fi |
|---|
| 23 | +sync |
|---|
| 24 | + |
|---|
| 25 | + |
|---|
| 26 | +lcdparamservice |
|---|
| 27 | + |
|---|
| 28 | + |
|---|
| .. | .. |
|---|
| 1 | +panel-type = 1; |
|---|
| 2 | + |
|---|
| 3 | +unprepare-delay-ms = 100; |
|---|
| 4 | +enable-delay-ms = 100; |
|---|
| 5 | +disable-delay-ms = 0; |
|---|
| 6 | +prepare-delay-ms = 100; |
|---|
| 7 | +reset-delay-ms = 100; |
|---|
| 8 | +init-delay-ms = 100; |
|---|
| 9 | +width-mm = 240; |
|---|
| 10 | +height-mm = 300; |
|---|
| 11 | + |
|---|
| 12 | +clock-frequency = 72500000; |
|---|
| 13 | +hactive = 1280; |
|---|
| 14 | +hfront-porch = 70; |
|---|
| 15 | +hsync-len = 72; |
|---|
| 16 | +hback-porch = 160; |
|---|
| 17 | +vactive = 800; |
|---|
| 18 | +vfront-porch = 4; |
|---|
| 19 | +vsync-len = 21; |
|---|
| 20 | +vback-porch = 42; |
|---|
| 21 | +hsync-active = 0; |
|---|
| 22 | +vsync-activee = 0; |
|---|
| 23 | +de-active = 0; |
|---|
| 24 | +pixelclk-active = 0; |
|---|
| 25 | +nodka_lvds = 15; |
|---|
| .. | .. |
|---|
| 1 | +panel-type = 1; |
|---|
| 2 | + |
|---|
| 3 | +unprepare-delay-ms = 100; |
|---|
| 4 | +enable-delay-ms = 100; |
|---|
| 5 | +disable-delay-ms = 0; |
|---|
| 6 | +prepare-delay-ms = 100; |
|---|
| 7 | +reset-delay-ms = 100; |
|---|
| 8 | +init-delay-ms = 100; |
|---|
| 9 | +width-mm = 240; |
|---|
| 10 | +height-mm = 300; |
|---|
| 11 | + |
|---|
| 12 | +clock-frequency = 70000000; |
|---|
| 13 | +hactive = 1024; |
|---|
| 14 | +hfront-porch = 58; |
|---|
| 15 | +hsync-len = 320; |
|---|
| 16 | +hback-porch = 44; |
|---|
| 17 | +vactive = 768; |
|---|
| 18 | +vfront-porch = 3; |
|---|
| 19 | +vsync-len = 15; |
|---|
| 20 | +vback-porch = 38; |
|---|
| 21 | +hsync-active = 0; |
|---|
| 22 | +vsync-activee = 0; |
|---|
| 23 | +de-active = 0; |
|---|
| 24 | +pixelclk-active = 0; |
|---|
| 25 | +nodka_lvds = 13; |
|---|
| .. | .. |
|---|
| 1 | +panel-type = 1; |
|---|
| 2 | + |
|---|
| 3 | +unprepare-delay-ms = 100; |
|---|
| 4 | +enable-delay-ms = 100; |
|---|
| 5 | +disable-delay-ms = 0; |
|---|
| 6 | +prepare-delay-ms = 100; |
|---|
| 7 | +reset-delay-ms = 100; |
|---|
| 8 | +init-delay-ms = 100; |
|---|
| 9 | +width-mm = 240; |
|---|
| 10 | +height-mm = 300; |
|---|
| 11 | + |
|---|
| 12 | +clock-frequency = 70000000; |
|---|
| 13 | +hactive = 1024; |
|---|
| 14 | +hfront-porch = 48; |
|---|
| 15 | +hsync-len = 320; |
|---|
| 16 | +hback-porch = 44; |
|---|
| 17 | +vactive = 768; |
|---|
| 18 | +vfront-porch = 3; |
|---|
| 19 | +vsync-len = 15; |
|---|
| 20 | +vback-porch = 38; |
|---|
| 21 | +hsync-active = 0; |
|---|
| 22 | +vsync-activee = 0; |
|---|
| 23 | +de-active = 0; |
|---|
| 24 | +pixelclk-active = 0; |
|---|
| 25 | +nodka_lvds = 13; |
|---|
| .. | .. |
|---|
| 1 | +panel-type = 1; |
|---|
| 2 | + |
|---|
| 3 | +unprepare-delay-ms = 100; |
|---|
| 4 | +enable-delay-ms = 100; |
|---|
| 5 | +disable-delay-ms = 0; |
|---|
| 6 | +prepare-delay-ms = 100; |
|---|
| 7 | +reset-delay-ms = 100; |
|---|
| 8 | +init-delay-ms = 100; |
|---|
| 9 | +width-mm = 240; |
|---|
| 10 | +height-mm = 300; |
|---|
| 11 | + |
|---|
| 12 | +clock-frequency = 107900000; |
|---|
| 13 | +hactive = 1280; |
|---|
| 14 | +hfront-porch = 96; |
|---|
| 15 | +hsync-len = 160; |
|---|
| 16 | +hback-porch = 408; |
|---|
| 17 | +vactive = 1024; |
|---|
| 18 | +vfront-porch = 7; |
|---|
| 19 | +vsync-len = 19; |
|---|
| 20 | +vback-porch = 42; |
|---|
| 21 | +hsync-active = 0; |
|---|
| 22 | +vsync-activee = 0; |
|---|
| 23 | +de-active = 0; |
|---|
| 24 | +pixelclk-active = 0; |
|---|
| 25 | +nodka_lvds = 12; |
|---|
| .. | .. |
|---|
| 1 | +panel-type = 1; |
|---|
| 2 | + |
|---|
| 3 | +unprepare-delay-ms = 100; |
|---|
| 4 | +enable-delay-ms = 100; |
|---|
| 5 | +disable-delay-ms = 0; |
|---|
| 6 | +prepare-delay-ms = 100; |
|---|
| 7 | +reset-delay-ms = 100; |
|---|
| 8 | +init-delay-ms = 100; |
|---|
| 9 | +width-mm = 240; |
|---|
| 10 | +height-mm = 300; |
|---|
| 11 | + |
|---|
| 12 | +clock-frequency = 78000000; |
|---|
| 13 | +hactive = 1366; |
|---|
| 14 | +hfront-porch = 28; |
|---|
| 15 | +hsync-len = 40; |
|---|
| 16 | +hback-porch = 240; |
|---|
| 17 | +vactive = 768; |
|---|
| 18 | +vfront-porch = 3; |
|---|
| 19 | +vsync-len = 17; |
|---|
| 20 | +vback-porch = 40; |
|---|
| 21 | +hsync-active = 0; |
|---|
| 22 | +vsync-activee = 0; |
|---|
| 23 | +de-active = 0; |
|---|
| 24 | +pixelclk-active = 0; |
|---|
| 25 | +nodka_lvds = 11; |
|---|
| .. | .. |
|---|
| 1 | +panel-type = 1; |
|---|
| 2 | + |
|---|
| 3 | +unprepare-delay-ms = 100; |
|---|
| 4 | +enable-delay-ms = 100; |
|---|
| 5 | +disable-delay-ms = 0; |
|---|
| 6 | +prepare-delay-ms = 100; |
|---|
| 7 | +reset-delay-ms = 100; |
|---|
| 8 | +init-delay-ms = 100; |
|---|
| 9 | +width-mm = 240; |
|---|
| 10 | +height-mm = 300; |
|---|
| 11 | + |
|---|
| 12 | +clock-frequency = 107900000; |
|---|
| 13 | +hactive = 1280; |
|---|
| 14 | +hfront-porch = 96; |
|---|
| 15 | +hsync-len = 160; |
|---|
| 16 | +hback-porch = 408; |
|---|
| 17 | +vactive = 1024; |
|---|
| 18 | +vfront-porch = 7; |
|---|
| 19 | +vsync-len = 19; |
|---|
| 20 | +vback-porch = 42; |
|---|
| 21 | +hsync-active = 0; |
|---|
| 22 | +vsync-activee = 0; |
|---|
| 23 | +de-active = 0; |
|---|
| 24 | +pixelclk-active = 0; |
|---|
| 25 | +nodka_lvds = 12; |
|---|
| .. | .. |
|---|
| 1 | +panel-type = 1; |
|---|
| 2 | + |
|---|
| 3 | +unprepare-delay-ms = 100; |
|---|
| 4 | +enable-delay-ms = 100; |
|---|
| 5 | +disable-delay-ms = 0; |
|---|
| 6 | +prepare-delay-ms = 100; |
|---|
| 7 | +reset-delay-ms = 100; |
|---|
| 8 | +init-delay-ms = 100; |
|---|
| 9 | +width-mm = 240; |
|---|
| 10 | +height-mm = 300; |
|---|
| 11 | + |
|---|
| 12 | +clock-frequency = 91000000; |
|---|
| 13 | +hactive = 1440; |
|---|
| 14 | +hfront-porch = 20; |
|---|
| 15 | +hsync-len = 60; |
|---|
| 16 | +hback-porch = 160; |
|---|
| 17 | +vactive = 900; |
|---|
| 18 | +vfront-porch = 6; |
|---|
| 19 | +vsync-len = 16; |
|---|
| 20 | +vback-porch = 48; |
|---|
| 21 | +hsync-active = 0; |
|---|
| 22 | +vsync-activee = 0; |
|---|
| 23 | +de-active = 0; |
|---|
| 24 | +pixelclk-active = 0; |
|---|
| 25 | +nodka_lvds = 7; |
|---|
| .. | .. |
|---|
| 1 | +panel-type = 1; |
|---|
| 2 | + |
|---|
| 3 | +unprepare-delay-ms = 100; |
|---|
| 4 | +enable-delay-ms = 100; |
|---|
| 5 | +disable-delay-ms = 0; |
|---|
| 6 | +prepare-delay-ms = 100; |
|---|
| 7 | +reset-delay-ms = 100; |
|---|
| 8 | +init-delay-ms = 100; |
|---|
| 9 | +width-mm = 240; |
|---|
| 10 | +height-mm = 300; |
|---|
| 11 | + |
|---|
| 12 | +clock-frequency = 142300000; |
|---|
| 13 | +hactive = 1980; |
|---|
| 14 | +hfront-porch = 48; |
|---|
| 15 | +hsync-len = 80; |
|---|
| 16 | +hback-porch = 180; |
|---|
| 17 | +vactive = 1080; |
|---|
| 18 | +vfront-porch = 7; |
|---|
| 19 | +vsync-len = 27; |
|---|
| 20 | +vback-porch = 50; |
|---|
| 21 | +hsync-active = 0; |
|---|
| 22 | +vsync-activee = 0; |
|---|
| 23 | +de-active = 0; |
|---|
| 24 | +pixelclk-active = 0; |
|---|
| 25 | +nodka_lvds = 9; |
|---|
| .. | .. |
|---|
| 1 | +panel-type = 1; |
|---|
| 2 | + |
|---|
| 3 | +unprepare-delay-ms = 100; |
|---|
| 4 | +enable-delay-ms = 100; |
|---|
| 5 | +disable-delay-ms = 0; |
|---|
| 6 | +prepare-delay-ms = 100; |
|---|
| 7 | +reset-delay-ms = 100; |
|---|
| 8 | +init-delay-ms = 100; |
|---|
| 9 | +width-mm = 240; |
|---|
| 10 | +height-mm = 300; |
|---|
| 11 | + |
|---|
| 12 | +clock-frequency = 142300000; |
|---|
| 13 | +hactive = 1980; |
|---|
| 14 | +hfront-porch = 48; |
|---|
| 15 | +hsync-len = 80; |
|---|
| 16 | +hback-porch = 180; |
|---|
| 17 | +vactive = 1080; |
|---|
| 18 | +vfront-porch = 7; |
|---|
| 19 | +vsync-len = 27; |
|---|
| 20 | +vback-porch = 50; |
|---|
| 21 | +hsync-active = 0; |
|---|
| 22 | +vsync-activee = 0; |
|---|
| 23 | +de-active = 0; |
|---|
| 24 | +pixelclk-active = 0; |
|---|
| 25 | +nodka_lvds = 9; |
|---|
| .. | .. |
|---|
| 1 | +panel-type = 1; |
|---|
| 2 | + |
|---|
| 3 | +unprepare-delay-ms = 100; |
|---|
| 4 | +enable-delay-ms = 100; |
|---|
| 5 | +disable-delay-ms = 0; |
|---|
| 6 | +prepare-delay-ms = 100; |
|---|
| 7 | +reset-delay-ms = 100; |
|---|
| 8 | +init-delay-ms = 100; |
|---|
| 9 | +width-mm = 240; |
|---|
| 10 | +height-mm = 300; |
|---|
| 11 | + |
|---|
| 12 | +clock-frequency = 142300000; |
|---|
| 13 | +hactive = 1980; |
|---|
| 14 | +hfront-porch = 48; |
|---|
| 15 | +hsync-len = 80; |
|---|
| 16 | +hback-porch = 180; |
|---|
| 17 | +vactive = 1080; |
|---|
| 18 | +vfront-porch = 7; |
|---|
| 19 | +vsync-len = 27; |
|---|
| 20 | +vback-porch = 50; |
|---|
| 21 | +hsync-active = 0; |
|---|
| 22 | +vsync-activee = 0; |
|---|
| 23 | +de-active = 0; |
|---|
| 24 | +pixelclk-active = 0; |
|---|
| 25 | +nodka_lvds = 9; |
|---|
| .. | .. |
|---|
| 1 | +panel-type = 1; |
|---|
| 2 | + |
|---|
| 3 | +unprepare-delay-ms = 100; |
|---|
| 4 | +enable-delay-ms = 100; |
|---|
| 5 | +disable-delay-ms = 0; |
|---|
| 6 | +prepare-delay-ms = 100; |
|---|
| 7 | +reset-delay-ms = 100; |
|---|
| 8 | +init-delay-ms = 100; |
|---|
| 9 | +width-mm = 240; |
|---|
| 10 | +height-mm = 300; |
|---|
| 11 | + |
|---|
| 12 | +clock-frequency = 40000000; |
|---|
| 13 | +hactive = 800; |
|---|
| 14 | +hfront-porch = 4; |
|---|
| 15 | +hsync-len = 214; |
|---|
| 16 | +hback-porch = 260; |
|---|
| 17 | +vactive = 600; |
|---|
| 18 | +vfront-porch = 4; |
|---|
| 19 | +vsync-len = 16; |
|---|
| 20 | +vback-porch = 39; |
|---|
| 21 | +hsync-active = 0; |
|---|
| 22 | +vsync-activee = 0; |
|---|
| 23 | +de-active = 0; |
|---|
| 24 | +pixelclk-active = 0; |
|---|
| 25 | +nodka_lvds = 6; |
|---|
| .. | .. |
|---|
| 1 | +panel-type = 1; |
|---|
| 2 | + |
|---|
| 3 | +unprepare-delay-ms = 100; |
|---|
| 4 | +enable-delay-ms = 100; |
|---|
| 5 | +disable-delay-ms = 0; |
|---|
| 6 | +prepare-delay-ms = 100; |
|---|
| 7 | +reset-delay-ms = 100; |
|---|
| 8 | +init-delay-ms = 100; |
|---|
| 9 | +width-mm = 240; |
|---|
| 10 | +height-mm = 300; |
|---|
| 11 | + |
|---|
| 12 | +clock-frequency = 78000000; |
|---|
| 13 | +hactive = 1366; |
|---|
| 14 | +hfront-porch = 28; |
|---|
| 15 | +hsync-len = 40; |
|---|
| 16 | +hback-porch = 140; |
|---|
| 17 | +vactive = 768; |
|---|
| 18 | +vfront-porch = 3; |
|---|
| 19 | +vsync-len = 17; |
|---|
| 20 | +vback-porch = 40; |
|---|
| 21 | +hsync-active = 0; |
|---|
| 22 | +vsync-activee = 0; |
|---|
| 23 | +de-active = 0; |
|---|
| 24 | +pixelclk-active = 0; |
|---|
| 25 | +nodka_lvds = 11; |
|---|
| .. | .. |
|---|
| 1 | +panel-type = 1; |
|---|
| 2 | + |
|---|
| 3 | +unprepare-delay-ms = 100; |
|---|
| 4 | +enable-delay-ms = 100; |
|---|
| 5 | +disable-delay-ms = 0; |
|---|
| 6 | +prepare-delay-ms = 100; |
|---|
| 7 | +reset-delay-ms = 100; |
|---|
| 8 | +init-delay-ms = 100; |
|---|
| 9 | +width-mm = 240; |
|---|
| 10 | +height-mm = 300; |
|---|
| 11 | + |
|---|
| 12 | +clock-frequency = 142300000; |
|---|
| 13 | +hactive = 1980; |
|---|
| 14 | +hfront-porch = 48; |
|---|
| 15 | +hsync-len = 80; |
|---|
| 16 | +hback-porch = 180; |
|---|
| 17 | +vactive = 1080; |
|---|
| 18 | +vfront-porch = 7; |
|---|
| 19 | +vsync-len = 27; |
|---|
| 20 | +vback-porch = 50; |
|---|
| 21 | +hsync-active = 0; |
|---|
| 22 | +vsync-activee = 0; |
|---|
| 23 | +de-active = 0; |
|---|
| 24 | +pixelclk-active = 0; |
|---|
| 25 | +nodka_lvds = 9; |
|---|
| .. | .. |
|---|
| 1 | +panel-type = 1; |
|---|
| 2 | + |
|---|
| 3 | +unprepare-delay-ms = 100; |
|---|
| 4 | +enable-delay-ms = 100; |
|---|
| 5 | +disable-delay-ms = 0; |
|---|
| 6 | +prepare-delay-ms = 100; |
|---|
| 7 | +reset-delay-ms = 100; |
|---|
| 8 | +init-delay-ms = 100; |
|---|
| 9 | +width-mm = 240; |
|---|
| 10 | +height-mm = 300; |
|---|
| 11 | + |
|---|
| 12 | +clock-frequency = 142300000; |
|---|
| 13 | +hactive = 1980; |
|---|
| 14 | +hfront-porch = 48; |
|---|
| 15 | +hsync-len = 80; |
|---|
| 16 | +hback-porch = 180; |
|---|
| 17 | +vactive = 1080; |
|---|
| 18 | +vfront-porch = 7; |
|---|
| 19 | +vsync-len = 27; |
|---|
| 20 | +vback-porch = 50; |
|---|
| 21 | +hsync-active = 0; |
|---|
| 22 | +vsync-activee = 0; |
|---|
| 23 | +de-active = 0; |
|---|
| 24 | +pixelclk-active = 0; |
|---|
| 25 | +nodka_lvds = 9; |
|---|
| .. | .. |
|---|
| 1 | +panel-type = 1; |
|---|
| 2 | + |
|---|
| 3 | +unprepare-delay-ms = 100; |
|---|
| 4 | +enable-delay-ms = 100; |
|---|
| 5 | +disable-delay-ms = 0; |
|---|
| 6 | +prepare-delay-ms = 100; |
|---|
| 7 | +reset-delay-ms = 100; |
|---|
| 8 | +init-delay-ms = 100; |
|---|
| 9 | +width-mm = 240; |
|---|
| 10 | +height-mm = 300; |
|---|
| 11 | + |
|---|
| 12 | +clock-frequency = 142300000; |
|---|
| 13 | +hactive = 1980; |
|---|
| 14 | +hfront-porch = 48; |
|---|
| 15 | +hsync-len = 80; |
|---|
| 16 | +hback-porch = 180; |
|---|
| 17 | +vactive = 1080; |
|---|
| 18 | +vfront-porch = 7; |
|---|
| 19 | +vsync-len = 27; |
|---|
| 20 | +vback-porch = 50; |
|---|
| 21 | +hsync-active = 0; |
|---|
| 22 | +vsync-activee = 0; |
|---|
| 23 | +de-active = 0; |
|---|
| 24 | +pixelclk-active = 0; |
|---|
| 25 | +nodka_lvds = 9; |
|---|
| .. | .. |
|---|
| 1 | +panel-type = 1; |
|---|
| 2 | + |
|---|
| 3 | +unprepare-delay-ms = 100; |
|---|
| 4 | +enable-delay-ms = 100; |
|---|
| 5 | +disable-delay-ms = 0; |
|---|
| 6 | +prepare-delay-ms = 100; |
|---|
| 7 | +reset-delay-ms = 100; |
|---|
| 8 | +init-delay-ms = 100; |
|---|
| 9 | +width-mm = 240; |
|---|
| 10 | +height-mm = 300; |
|---|
| 11 | + |
|---|
| 12 | +clock-frequency = 141400000; |
|---|
| 13 | +hactive = 1980; |
|---|
| 14 | +hfront-porch = 48; |
|---|
| 15 | +hsync-len = 80; |
|---|
| 16 | +hback-porch = 220; |
|---|
| 17 | +vactive = 1080; |
|---|
| 18 | +vfront-porch = 7; |
|---|
| 19 | +vsync-len = 9; |
|---|
| 20 | +vback-porch = 22; |
|---|
| 21 | +hsync-active = 0; |
|---|
| 22 | +vsync-activee = 0; |
|---|
| 23 | +de-active = 0; |
|---|
| 24 | +pixelclk-active = 0; |
|---|
| 25 | +nodka_lvds = 9; |
|---|
| .. | .. |
|---|
| 1 | +#include <string.h> |
|---|
| 2 | +#include <stdlib.h> |
|---|
| 3 | +#include <unistd.h> |
|---|
| 4 | +#include <termio.h> |
|---|
| 5 | +#include <stdio.h> |
|---|
| 6 | +#include <sys/ioctl.h> |
|---|
| 7 | +#include <sys/time.h> |
|---|
| 8 | +#include <ctype.h> |
|---|
| 9 | +#include <errno.h> |
|---|
| 10 | +#include <fcntl.h> |
|---|
| 11 | +//#include <cutils/properties.h> |
|---|
| 12 | +#include <sys/utsname.h> |
|---|
| 13 | +//#include <cutils/list.h> |
|---|
| 14 | +//#include <cutils/log.h> |
|---|
| 15 | +//#include <cutils/sockets.h> |
|---|
| 16 | +#include <sys/reboot.h> |
|---|
| 17 | +//#include <cutils/iosched_policy.h> |
|---|
| 18 | + |
|---|
| 19 | +#undef LOG_TAG |
|---|
| 20 | +#define LOG_TAG "LcdParamService" |
|---|
| 21 | + |
|---|
| 22 | +typedef unsigned short uint16; |
|---|
| 23 | +typedef unsigned long uint32; |
|---|
| 24 | +typedef unsigned char uint8; |
|---|
| 25 | + |
|---|
| 26 | + |
|---|
| 27 | +#define LCD_PARAMETE_FILE_UPATH "find /media/demo/usb0 -name nodka_lcd" |
|---|
| 28 | +#define LCD_PARAMETE_FILE_SDPATH "find /nodka_test -name nodka_lcd" |
|---|
| 29 | +//#define OEM_PARTITIOM_NODE_PATH "/dev/block/by-name/lcdparam" |
|---|
| 30 | +//#define BASEPARAMETER_PATH "dev/block/platform/fe330000.sdhci/by-name/baseparameter" |
|---|
| 31 | +#define BASEPARAMETER_PATH "/dev/block/by-name/baseparameter" |
|---|
| 32 | +/*#define OEM_PARTITIOM_NODE_PATH "data/oem"*/ |
|---|
| 33 | + |
|---|
| 34 | +/*#define RKNAND_GET_VENDOR_SECTOR0 _IOW('v', 16, unsigned int)*/ |
|---|
| 35 | +/*#define RKNAND_STORE_VENDOR_SECTOR0 _IOW('v', 17, unsigned int)*/ |
|---|
| 36 | + |
|---|
| 37 | + |
|---|
| 38 | +#define RKNAND_SYS_STORGAE_DATA_LEN 512 //oem size |
|---|
| 39 | +/*#define VENDOR_SECTOR_OP_TAG 0x444E4556 // "VEND"*/ |
|---|
| 40 | + |
|---|
| 41 | +#define POLY 0xEDB88320L //CRC stand |
|---|
| 42 | +#define CONFIG_NUM 27 |
|---|
| 43 | +#define BASE_OFFSET 256 * 1024 |
|---|
| 44 | + |
|---|
| 45 | +char *key[CONFIG_NUM] = |
|---|
| 46 | +{ |
|---|
| 47 | + "panel-type", |
|---|
| 48 | + |
|---|
| 49 | + "unprepare-delay-ms", |
|---|
| 50 | + "enable-delay-ms", |
|---|
| 51 | + "disable-delay-ms", |
|---|
| 52 | + "prepare-delay-ms", |
|---|
| 53 | + "reset-delay-ms", |
|---|
| 54 | + "init-delay-ms", |
|---|
| 55 | + "width-mm", |
|---|
| 56 | + "height-mm", |
|---|
| 57 | + |
|---|
| 58 | + "clock-frequency", |
|---|
| 59 | + "hactive", |
|---|
| 60 | + "hfront-porch", |
|---|
| 61 | + "hsync-len", |
|---|
| 62 | + "hback-porch", |
|---|
| 63 | + "vactive", |
|---|
| 64 | + "vfront-porch", |
|---|
| 65 | + "vsync-len", |
|---|
| 66 | + "vback-porch", |
|---|
| 67 | + "hsync-active", |
|---|
| 68 | + "vsync-active", |
|---|
| 69 | + "de-active", |
|---|
| 70 | + "pixelclk-active", |
|---|
| 71 | + |
|---|
| 72 | + "dsi,flags", |
|---|
| 73 | + "dsi,format", |
|---|
| 74 | + "dsi,lanes", |
|---|
| 75 | + "panel-init-sequence", |
|---|
| 76 | + |
|---|
| 77 | + "nodka_lvds" |
|---|
| 78 | +}; |
|---|
| 79 | + |
|---|
| 80 | +typedef struct tagRKNAND_SYS_STORGAE |
|---|
| 81 | +{ |
|---|
| 82 | + /*unsigned long tag;*/ |
|---|
| 83 | + /*unsigned long len;*/ |
|---|
| 84 | + unsigned char data[RKNAND_SYS_STORGAE_DATA_LEN]; |
|---|
| 85 | +}RKNAND_SYS_STORGAE; |
|---|
| 86 | + |
|---|
| 87 | + |
|---|
| 88 | +static uint32 crc32_tab[256]; |
|---|
| 89 | +static uint32 nand_crc = 0; |
|---|
| 90 | + |
|---|
| 91 | +char *strreplace(char *s, char old, char new) |
|---|
| 92 | +{ |
|---|
| 93 | + for (; *s; ++s) |
|---|
| 94 | + if (*s == old) |
|---|
| 95 | + *s = new; |
|---|
| 96 | + return s; |
|---|
| 97 | +} |
|---|
| 98 | + |
|---|
| 99 | +void rknand_print_hex_data(uint8 *s,uint32 * buf,uint32 len) |
|---|
| 100 | +{ |
|---|
| 101 | + uint32 i; |
|---|
| 102 | + printf("%s\n",s); |
|---|
| 103 | + for(i=0;i<len;i+=4) |
|---|
| 104 | + { |
|---|
| 105 | + printf("%lx %lx %lx %lx\n",buf[i],buf[i+1],buf[i+2],buf[i+3]); |
|---|
| 106 | + } |
|---|
| 107 | +} |
|---|
| 108 | + |
|---|
| 109 | + |
|---|
| 110 | +void init_crc32_tab(void) |
|---|
| 111 | +{ |
|---|
| 112 | + int i = 0; |
|---|
| 113 | + int j = 0; |
|---|
| 114 | + uint32 crc = 0; |
|---|
| 115 | + |
|---|
| 116 | + for(i = 0; i < 256; i++) |
|---|
| 117 | + { |
|---|
| 118 | + crc = (uint32)i; |
|---|
| 119 | + for(j = 0; j < 8; j++) |
|---|
| 120 | + { |
|---|
| 121 | + if(crc & 0x00000001L) |
|---|
| 122 | + crc = (crc >> 1) ^ POLY; |
|---|
| 123 | + else |
|---|
| 124 | + crc = crc >> 1; |
|---|
| 125 | + } |
|---|
| 126 | + crc32_tab[i] = crc; |
|---|
| 127 | + } |
|---|
| 128 | + |
|---|
| 129 | +} |
|---|
| 130 | + |
|---|
| 131 | +uint32 get_crc32(uint32 crc_init, uint8 *crc_buf, uint32 buf_size) |
|---|
| 132 | +{ |
|---|
| 133 | + uint32 crc = crc_init ^ 0xffffffff; |
|---|
| 134 | + |
|---|
| 135 | + init_crc32_tab(); |
|---|
| 136 | + while(buf_size--) |
|---|
| 137 | + crc = (crc >> 8) ^ crc32_tab[(crc & 0xff) ^ *crc_buf++]; |
|---|
| 138 | + return crc ^ 0xfffffff; |
|---|
| 139 | +} |
|---|
| 140 | + |
|---|
| 141 | +uint32 getfile_crc(FILE *fp) |
|---|
| 142 | +{ |
|---|
| 143 | + uint32 size = 4 *1024; |
|---|
| 144 | + uint8 crc_buf[size]; |
|---|
| 145 | + uint32 readln = 0; |
|---|
| 146 | + uint crc = 0; |
|---|
| 147 | + |
|---|
| 148 | + while((readln = fread(crc_buf, sizeof(uint8), size, fp)) > 0) |
|---|
| 149 | + crc = get_crc32(crc, crc_buf, readln); |
|---|
| 150 | + |
|---|
| 151 | + return crc; |
|---|
| 152 | + |
|---|
| 153 | +} |
|---|
| 154 | + |
|---|
| 155 | +/* |
|---|
| 156 | + *去除字符串左端空格 |
|---|
| 157 | + */ |
|---|
| 158 | +char *strtriml(char *pstr) |
|---|
| 159 | +{ |
|---|
| 160 | + int i = 0,j; |
|---|
| 161 | + j = strlen(pstr) - 1; |
|---|
| 162 | + while (isspace(pstr[i]) && (i <= j)) |
|---|
| 163 | + i++; |
|---|
| 164 | + if (0<i) |
|---|
| 165 | + strcpy(pstr, &pstr[i]); |
|---|
| 166 | + return pstr; |
|---|
| 167 | +} |
|---|
| 168 | + |
|---|
| 169 | +/* |
|---|
| 170 | + *去除字符串右端空格 |
|---|
| 171 | + */ |
|---|
| 172 | +char *strtrimr(char *pstr) |
|---|
| 173 | +{ |
|---|
| 174 | + int i; |
|---|
| 175 | + i = strlen(pstr) - 1; |
|---|
| 176 | + while (isspace(pstr[i]) && (i >= 0)) |
|---|
| 177 | + pstr[i--] = '\0'; |
|---|
| 178 | + return pstr; |
|---|
| 179 | +} |
|---|
| 180 | + |
|---|
| 181 | +/* |
|---|
| 182 | + *去除字符串两端空格 |
|---|
| 183 | + */ |
|---|
| 184 | +char *strtrim(char *pstr) |
|---|
| 185 | +{ |
|---|
| 186 | + char *p; |
|---|
| 187 | + p = strtrimr(pstr); |
|---|
| 188 | + return strtriml(p); |
|---|
| 189 | +} |
|---|
| 190 | + |
|---|
| 191 | + |
|---|
| 192 | +char *strdelchr(char *pstr, int chr) |
|---|
| 193 | +{ |
|---|
| 194 | + int i = 0; |
|---|
| 195 | + int l = 0; |
|---|
| 196 | + int ll = 0; |
|---|
| 197 | + ll = l = strlen(pstr); |
|---|
| 198 | + |
|---|
| 199 | + while(i < l) |
|---|
| 200 | + { |
|---|
| 201 | + if(pstr[i] == chr) |
|---|
| 202 | + { |
|---|
| 203 | + memmove((pstr + i), (pstr + i + 1), (ll - i -1)); |
|---|
| 204 | + pstr[ll - 1] = '\0'; |
|---|
| 205 | + ll--; |
|---|
| 206 | + } |
|---|
| 207 | + i++; |
|---|
| 208 | + } |
|---|
| 209 | + /* for(i = 0; i < l; i++) */ |
|---|
| 210 | + /* { */ |
|---|
| 211 | + /* if(pstr[i] == chr) */ |
|---|
| 212 | + /* { */ |
|---|
| 213 | + /* memmove((pstr + i), (pstr + i + 1), (l - i -1)); */ |
|---|
| 214 | + /* pstr[l - 1] = '\0'; */ |
|---|
| 215 | + /* break; */ |
|---|
| 216 | + /* } */ |
|---|
| 217 | + /* } */ |
|---|
| 218 | + return pstr; |
|---|
| 219 | +} |
|---|
| 220 | + |
|---|
| 221 | + |
|---|
| 222 | +void strrmspace(char * str) |
|---|
| 223 | +{ |
|---|
| 224 | + char *p1, *p2; |
|---|
| 225 | + char ch; |
|---|
| 226 | + p1 = str; //first pointer |
|---|
| 227 | + p2 = str; // second pointer to the remaining string |
|---|
| 228 | + if (p1==NULL) return; |
|---|
| 229 | + while (*p1) |
|---|
| 230 | + { |
|---|
| 231 | + if (*p1 != ' ') |
|---|
| 232 | + { |
|---|
| 233 | + ch = *p1; |
|---|
| 234 | + *p2 = ch; |
|---|
| 235 | + p1++; |
|---|
| 236 | + p2++; |
|---|
| 237 | + } |
|---|
| 238 | + else |
|---|
| 239 | + { |
|---|
| 240 | + p1++; |
|---|
| 241 | + } |
|---|
| 242 | + } |
|---|
| 243 | + *p2 = '\0'; |
|---|
| 244 | +} |
|---|
| 245 | +uint32 getfile_crc_from_nand(void) |
|---|
| 246 | +{ |
|---|
| 247 | + int ret = 0; |
|---|
| 248 | + uint32 crc = 0; |
|---|
| 249 | + |
|---|
| 250 | + RKNAND_SYS_STORGAE sysData; |
|---|
| 251 | + |
|---|
| 252 | + int sys_fd; |
|---|
| 253 | + |
|---|
| 254 | + if (0 != access(BASEPARAMETER_PATH, R_OK | W_OK)){ |
|---|
| 255 | + printf("access fail!!!\n"); |
|---|
| 256 | + return -1; |
|---|
| 257 | + } |
|---|
| 258 | + |
|---|
| 259 | + memset(sysData.data, '\0', sizeof(sysData.data)); |
|---|
| 260 | + /*sysData.tag = VENDOR_SECTOR_OP_TAG;*/ |
|---|
| 261 | + /*sysData.len = RKNAND_SYS_STORGAE_DATA_LEN-8;*/ |
|---|
| 262 | + /*sys_fd = fopen(OEM_PARTITIOM_NODE_PATH, "r");*/ |
|---|
| 263 | + /*[>sys_fd = open("/dev/rknand_sys_storage",O_RDWR,0);<]*/ |
|---|
| 264 | + /*if(sys_fd == NULL)*/ |
|---|
| 265 | + /*{*/ |
|---|
| 266 | + /*printf("fopen err %s err=%d\n",OEM_PARTITIOM_NODE_PATH, sys_fd);*/ |
|---|
| 267 | + /*return -1;*/ |
|---|
| 268 | + /*}*/ |
|---|
| 269 | + |
|---|
| 270 | + sys_fd = open(BASEPARAMETER_PATH, O_RDONLY); |
|---|
| 271 | + |
|---|
| 272 | + if (sys_fd < 0) |
|---|
| 273 | + { |
|---|
| 274 | + printf("fopen err %s sys_fd=,%d\n",BASEPARAMETER_PATH, sys_fd); |
|---|
| 275 | + return -1; |
|---|
| 276 | + } |
|---|
| 277 | + lseek(sys_fd, BASE_OFFSET, SEEK_SET); |
|---|
| 278 | + ret = read (sys_fd, (void*)&sysData, sizeof(sysData)); |
|---|
| 279 | + if (ret < 0) |
|---|
| 280 | + { |
|---|
| 281 | + printf("read err %s sys_fd=,%d\n",BASEPARAMETER_PATH, sys_fd ); |
|---|
| 282 | + return -1; |
|---|
| 283 | + } |
|---|
| 284 | + |
|---|
| 285 | + /*ret = ioctl(sys_fd, RKNAND_GET_VENDOR_SECTOR0, &sysData);*/ |
|---|
| 286 | + /*fread((void*)&sysData,sizeof(sysData),1,sys_fd);*/ |
|---|
| 287 | + /* rknand_print_hex_data("getfile_crc_from_nand data:",(uint32*)sysData.data,32); */ |
|---|
| 288 | + /* crc = sysData.data[24 * 4]; */ |
|---|
| 289 | + /* crc = (crc << 8) + sysData.data[24 * 4 + 1]; */ |
|---|
| 290 | + /* crc = (crc << 8) + sysData.data[24 * 4 + 2]; */ |
|---|
| 291 | + /* crc = (crc << 8) + sysData.data[24 * 4 + 3]; */ |
|---|
| 292 | + /* printf("-luoxt- crc data = 0x%02x%02x%02x%02x", sysData.data[24 * 4], */ |
|---|
| 293 | + /* sysData.data[24 * 4 + 1], */ |
|---|
| 294 | + /* sysData.data[24 * 4 + 2], */ |
|---|
| 295 | + /* sysData.data[24 * 4 + 3]); */ |
|---|
| 296 | + |
|---|
| 297 | + for(int i = 0; i < CONFIG_NUM+1; i++){ |
|---|
| 298 | + crc = sysData.data[i * 4]; |
|---|
| 299 | + crc = (crc << 8) + sysData.data[i * 4 + 1]; |
|---|
| 300 | + crc = (crc << 8) + sysData.data[i * 4 + 2]; |
|---|
| 301 | + crc = (crc << 8) + sysData.data[i * 4 + 3]; |
|---|
| 302 | + printf("-luoxt- %d nand crc data = 0X%02X%02X%02X%02X\n", i, sysData.data[i * 4], |
|---|
| 303 | + sysData.data[i * 4 + 1], |
|---|
| 304 | + sysData.data[i * 4 + 2], |
|---|
| 305 | + sysData.data[i * 4 + 3]); |
|---|
| 306 | + } |
|---|
| 307 | + |
|---|
| 308 | + |
|---|
| 309 | + crc = sysData.data[RKNAND_SYS_STORGAE_DATA_LEN-4]; |
|---|
| 310 | + crc = (crc << 8) + sysData.data[RKNAND_SYS_STORGAE_DATA_LEN-3]; |
|---|
| 311 | + crc = (crc << 8) + sysData.data[RKNAND_SYS_STORGAE_DATA_LEN-2]; |
|---|
| 312 | + crc = (crc << 8) + sysData.data[RKNAND_SYS_STORGAE_DATA_LEN-1]; |
|---|
| 313 | + printf("-luoxt- nand crc data = 0X%02X%02X%02X%02X\n", sysData.data[RKNAND_SYS_STORGAE_DATA_LEN-4], |
|---|
| 314 | + sysData.data[RKNAND_SYS_STORGAE_DATA_LEN-3], |
|---|
| 315 | + sysData.data[RKNAND_SYS_STORGAE_DATA_LEN-2], |
|---|
| 316 | + sysData.data[RKNAND_SYS_STORGAE_DATA_LEN-1]); |
|---|
| 317 | + close(sys_fd); |
|---|
| 318 | + |
|---|
| 319 | + return crc; |
|---|
| 320 | +} |
|---|
| 321 | + |
|---|
| 322 | +int rk_update_lcd_parameters_from_sdcard(void) |
|---|
| 323 | +{ |
|---|
| 324 | + |
|---|
| 325 | + int ret = 0; |
|---|
| 326 | + FILE *fp = 0; |
|---|
| 327 | + char line[1024] = {0}; |
|---|
| 328 | + int i = 0; |
|---|
| 329 | + RKNAND_SYS_STORGAE sysData; |
|---|
| 330 | + int sys_fd = 0; |
|---|
| 331 | + static uint32 file_crc = 0; //file lcdparameter crc data |
|---|
| 332 | + static int updated = 0; // had store the param into the nand |
|---|
| 333 | + static char got_crc = 0; //get file crc flag |
|---|
| 334 | + char lcdparameter_buf[128]; |
|---|
| 335 | + FILE *stream; |
|---|
| 336 | + |
|---|
| 337 | + memset( lcdparameter_buf, '\0', sizeof(lcdparameter_buf) ); |
|---|
| 338 | + memset(sysData.data, '\0', sizeof(sysData.data)); |
|---|
| 339 | + if((access(LCD_PARAMETE_FILE_UPATH,F_OK))!=-1) |
|---|
| 340 | + { |
|---|
| 341 | + printf("update form udisk\n"); |
|---|
| 342 | + stream = popen(LCD_PARAMETE_FILE_UPATH, "r"); |
|---|
| 343 | + } |
|---|
| 344 | + else |
|---|
| 345 | + { |
|---|
| 346 | + printf("update form emmc\n"); |
|---|
| 347 | + stream = popen(LCD_PARAMETE_FILE_SDPATH, "r"); |
|---|
| 348 | + } |
|---|
| 349 | + fread( lcdparameter_buf, sizeof(char), sizeof(lcdparameter_buf), stream); |
|---|
| 350 | + strreplace(lcdparameter_buf,'\n','\0'); |
|---|
| 351 | + pclose(stream); |
|---|
| 352 | + |
|---|
| 353 | + /* |
|---|
| 354 | + while(access(lcdparameter_buf, 0)) |
|---|
| 355 | + { |
|---|
| 356 | + if(updated) |
|---|
| 357 | + updated = 0; |
|---|
| 358 | + if(got_crc) |
|---|
| 359 | + got_crc = 0; |
|---|
| 360 | + return -1; |
|---|
| 361 | + } |
|---|
| 362 | + */ |
|---|
| 363 | + |
|---|
| 364 | + if(!updated) |
|---|
| 365 | + { |
|---|
| 366 | + if (!got_crc) |
|---|
| 367 | + { |
|---|
| 368 | + fp = fopen(lcdparameter_buf, "r"); |
|---|
| 369 | + //fp = fopen("/root/rk_lcd_parameters", "rb"); |
|---|
| 370 | + printf("---XYP_DEBUG--- ======== %s %d ========\n", __func__, __LINE__); |
|---|
| 371 | + if(fp == NULL) |
|---|
| 372 | + { |
|---|
| 373 | + printf("open %s failed\n", lcdparameter_buf); |
|---|
| 374 | + return -1; |
|---|
| 375 | + } |
|---|
| 376 | + else |
|---|
| 377 | + { |
|---|
| 378 | + printf("success open file %s \n", lcdparameter_buf); |
|---|
| 379 | + } |
|---|
| 380 | + |
|---|
| 381 | + file_crc = getfile_crc(fp); |
|---|
| 382 | + got_crc = 1; |
|---|
| 383 | + printf(" file crc is 0X%08lX nand_crc is 0X%08lX \n", file_crc, nand_crc ); |
|---|
| 384 | + fclose(fp); |
|---|
| 385 | + } |
|---|
| 386 | + |
|---|
| 387 | + /*sysData.tag = VENDOR_SECTOR_OP_TAG;*/ |
|---|
| 388 | + /*sysData.len = RKNAND_SYS_STORGAE_DATA_LEN - 8;*/ |
|---|
| 389 | + |
|---|
| 390 | + if((nand_crc != file_crc)) |
|---|
| 391 | + { |
|---|
| 392 | + fp = fopen(lcdparameter_buf, "r"); |
|---|
| 393 | + if(fp == NULL) |
|---|
| 394 | + { |
|---|
| 395 | + printf("open %s failed\n", lcdparameter_buf); |
|---|
| 396 | + return -1; |
|---|
| 397 | + } |
|---|
| 398 | + else |
|---|
| 399 | + { |
|---|
| 400 | + printf("success open file %s\n", lcdparameter_buf); |
|---|
| 401 | + } |
|---|
| 402 | + |
|---|
| 403 | + |
|---|
| 404 | + while(fgets(line, 1023, fp)) |
|---|
| 405 | + { |
|---|
| 406 | + char *p = strtrim(line); |
|---|
| 407 | + int len = strlen(p); |
|---|
| 408 | + if(len <= 0) |
|---|
| 409 | + { |
|---|
| 410 | + continue; |
|---|
| 411 | + } |
|---|
| 412 | + else if(p[0]=='#') |
|---|
| 413 | + { |
|---|
| 414 | + continue; |
|---|
| 415 | + } |
|---|
| 416 | + else if( (!(strstr(p, "="))) && (!(strstr(p, ";"))) && (!(strstr(p, "screen_")))) |
|---|
| 417 | + { |
|---|
| 418 | + continue; |
|---|
| 419 | + } |
|---|
| 420 | + else |
|---|
| 421 | + { |
|---|
| 422 | + // get key and value string like "screen_lvds_format = 1" spilt by ";" |
|---|
| 423 | + char *key_val_str = strtok(p, ";"); |
|---|
| 424 | + char *value = strchr(key_val_str, '='); |
|---|
| 425 | + char cmd[4] = {'\0'}; |
|---|
| 426 | + if(value == NULL) |
|---|
| 427 | + continue; |
|---|
| 428 | + for(i = 0; i < CONFIG_NUM; i++) |
|---|
| 429 | + { |
|---|
| 430 | + if(strstr(p, key[i])) |
|---|
| 431 | + { |
|---|
| 432 | + char *val = strdelchr(value, '='); |
|---|
| 433 | + strrmspace(val); |
|---|
| 434 | + uint32 config1 = atoi(val); |
|---|
| 435 | + |
|---|
| 436 | + if (strstr(p, "panel-init-sequence")) |
|---|
| 437 | + { |
|---|
| 438 | + int count=0; |
|---|
| 439 | + int cmdlen=strlen(val)/2; |
|---|
| 440 | + |
|---|
| 441 | + sysData.data[i * 4] =(uint8) (cmdlen >> 24); |
|---|
| 442 | + sysData.data[i * 4 + 1] =(uint8) (cmdlen >> 16); |
|---|
| 443 | + sysData.data[i * 4 + 2] =(uint8) (cmdlen >> 8); |
|---|
| 444 | + sysData.data[i * 4 + 3] =(uint8) (cmdlen >> 0); |
|---|
| 445 | + printf("-luoxt- %s=%lu val %s\n", key[i], config1, val); |
|---|
| 446 | + i ++; |
|---|
| 447 | + while(1) |
|---|
| 448 | + { |
|---|
| 449 | + cmd [0] = '0'; |
|---|
| 450 | + cmd [1] = 'x'; |
|---|
| 451 | + cmd [2] = *val; |
|---|
| 452 | + cmd [3] = *(++val); |
|---|
| 453 | + uint8 cmdu8 = strtol(cmd,NULL,16); |
|---|
| 454 | + sysData.data[i * 4 + count++] = cmdu8; |
|---|
| 455 | + |
|---|
| 456 | + printf("v1-luoxt- cmd=%d count=%d total=%d\n", cmdu8, count, cmdlen); |
|---|
| 457 | + if (count < cmdlen) |
|---|
| 458 | + ++val; //next cmd |
|---|
| 459 | + else |
|---|
| 460 | + break; |
|---|
| 461 | + } |
|---|
| 462 | + |
|---|
| 463 | + } |
|---|
| 464 | + else{ |
|---|
| 465 | + sysData.data[i * 4] =(uint8) (config1 >> 24); |
|---|
| 466 | + sysData.data[i * 4 + 1] =(uint8) (config1 >> 16); |
|---|
| 467 | + sysData.data[i * 4 + 2] =(uint8) (config1 >> 8); |
|---|
| 468 | + sysData.data[i * 4 + 3] =(uint8) (config1 >> 0); |
|---|
| 469 | + printf("-luoxt- %s=%lu val %s\n", key[i], config1, val); |
|---|
| 470 | + } |
|---|
| 471 | + break; |
|---|
| 472 | + } |
|---|
| 473 | + } |
|---|
| 474 | + |
|---|
| 475 | + } |
|---|
| 476 | + |
|---|
| 477 | + } |
|---|
| 478 | + // file crc data |
|---|
| 479 | + sysData.data[RKNAND_SYS_STORGAE_DATA_LEN-4] = (uint8) (file_crc >> 24); |
|---|
| 480 | + sysData.data[RKNAND_SYS_STORGAE_DATA_LEN-3] = (uint8) (file_crc >> 16); |
|---|
| 481 | + sysData.data[RKNAND_SYS_STORGAE_DATA_LEN-2] = (uint8) (file_crc >> 8); |
|---|
| 482 | + sysData.data[RKNAND_SYS_STORGAE_DATA_LEN-1] = (uint8) (file_crc >> 0); |
|---|
| 483 | + printf("-luoxt- crc32 = 0X%02X%02X%02X%02X\n", sysData.data[RKNAND_SYS_STORGAE_DATA_LEN-4], |
|---|
| 484 | + sysData.data[RKNAND_SYS_STORGAE_DATA_LEN-3], |
|---|
| 485 | + sysData.data[RKNAND_SYS_STORGAE_DATA_LEN-2], |
|---|
| 486 | + sysData.data[RKNAND_SYS_STORGAE_DATA_LEN-1]); |
|---|
| 487 | + |
|---|
| 488 | + /* rknand_print_hex_data("lcd paramters save:",(uint32*)sysData.data,32); */ |
|---|
| 489 | + /*ret = ioctl(sys_fd, RKNAND_STORE_VENDOR_SECTOR0, &sysData);*/ |
|---|
| 490 | + |
|---|
| 491 | + if (0 == access(BASEPARAMETER_PATH, 0)) |
|---|
| 492 | + { |
|---|
| 493 | + sys_fd = open(BASEPARAMETER_PATH, O_WRONLY); |
|---|
| 494 | + |
|---|
| 495 | + if (sys_fd < 0) |
|---|
| 496 | + { |
|---|
| 497 | + printf("open err %s err=%d\n",BASEPARAMETER_PATH, sys_fd); |
|---|
| 498 | + return -1; |
|---|
| 499 | + } |
|---|
| 500 | + |
|---|
| 501 | + lseek(sys_fd, BASE_OFFSET, SEEK_SET); |
|---|
| 502 | + ret = write (sys_fd, (void*)&sysData.data[0], RKNAND_SYS_STORGAE_DATA_LEN); |
|---|
| 503 | + if (ret < 0) |
|---|
| 504 | + { |
|---|
| 505 | + printf("read err %s err=%d\n",BASEPARAMETER_PATH, sys_fd); |
|---|
| 506 | + return -1; |
|---|
| 507 | + } |
|---|
| 508 | + } |
|---|
| 509 | + |
|---|
| 510 | + close(sys_fd); |
|---|
| 511 | + if(ret==-1){ |
|---|
| 512 | + printf("save lcdparam error\n"); |
|---|
| 513 | + } |
|---|
| 514 | + else |
|---|
| 515 | + { |
|---|
| 516 | + updated = 1; |
|---|
| 517 | + nand_crc = file_crc; |
|---|
| 518 | + fclose(fp); |
|---|
| 519 | + sync(); |
|---|
| 520 | + reboot(RB_AUTOBOOT); |
|---|
| 521 | + } |
|---|
| 522 | + fclose(fp); |
|---|
| 523 | + return ret; |
|---|
| 524 | + } |
|---|
| 525 | + } |
|---|
| 526 | + return ret; |
|---|
| 527 | +} |
|---|
| 528 | + |
|---|
| 529 | +int main(void) |
|---|
| 530 | +{ |
|---|
| 531 | + char command[128]; |
|---|
| 532 | + strcpy( command, "dd if=/dev/zero of=/dev/block/by-name/baseparameter" ); |
|---|
| 533 | + printf("CLEAN PARAMETERS\n"); |
|---|
| 534 | + system(command); |
|---|
| 535 | + nand_crc = getfile_crc_from_nand(); |
|---|
| 536 | + while(1) |
|---|
| 537 | + { |
|---|
| 538 | + |
|---|
| 539 | + rk_update_lcd_parameters_from_sdcard(); |
|---|
| 540 | + //gettimeofday(&tv,NULL); |
|---|
| 541 | + //fprintf(stderr, "[%ld] rk_update_lcd_parameters_from_sdcard sleep....\n", tv.tv_usec); |
|---|
| 542 | + //usleep(100000); |
|---|
| 543 | + sleep(5); |
|---|
| 544 | + } |
|---|
| 545 | + return 0; |
|---|
| 546 | +} |
|---|
| 547 | + |
|---|
| | +Subproject commit 68212c16b229080742280f954b3ffde173e63fcc |
|---|
old mode 100644new mode 100755| .. | .. |
|---|
| 16 | 16 | |
|---|
| 17 | 17 | DECLARE_GLOBAL_DATA_PTR; |
|---|
| 18 | 18 | |
|---|
| 19 | + |
|---|
| 20 | +#if 1 |
|---|
| 21 | +struct display_fixup_data { |
|---|
| 22 | + int type; |
|---|
| 23 | + |
|---|
| 24 | + int delay_prepare; |
|---|
| 25 | + int delay_enable; |
|---|
| 26 | + int delay_disable; |
|---|
| 27 | + int delay_unprepare; |
|---|
| 28 | + int delay_reset; |
|---|
| 29 | + int delay_init; |
|---|
| 30 | + int size_width; |
|---|
| 31 | + int size_height; |
|---|
| 32 | + |
|---|
| 33 | + int clock_frequency; |
|---|
| 34 | + int hactive; |
|---|
| 35 | + int hfront_porch; |
|---|
| 36 | + int hsync_len; |
|---|
| 37 | + int hback_porch; |
|---|
| 38 | + int vactive; |
|---|
| 39 | + int vfront_porch; |
|---|
| 40 | + int vsync_len; |
|---|
| 41 | + int vback_porch; |
|---|
| 42 | + int hsync_active; |
|---|
| 43 | + int vsync_active; |
|---|
| 44 | + int de_active; |
|---|
| 45 | + int pixelclk_active; |
|---|
| 46 | + |
|---|
| 47 | + /* for DSI Panel */ |
|---|
| 48 | + int flags; |
|---|
| 49 | + int format; |
|---|
| 50 | + int lanes; |
|---|
| 51 | + int init_cmd_length; |
|---|
| 52 | + u8 *init_cmd; |
|---|
| 53 | + |
|---|
| 54 | + int nodka_lvds; |
|---|
| 55 | +}; |
|---|
| 56 | +enum { |
|---|
| 57 | + PANEL_TYPE_DSI, |
|---|
| 58 | + PANEL_TYPE_EDP, |
|---|
| 59 | + PANEL_TYPE_LVDS, |
|---|
| 60 | +}; |
|---|
| 61 | + |
|---|
| 62 | +#define CUSTOM_PARTITION_NAME "baseparameter" |
|---|
| 63 | +#define LCD_PARAM_MAX_COUNT 27 |
|---|
| 64 | + |
|---|
| 65 | +int lcdParam[LCD_PARAM_MAX_COUNT]; |
|---|
| 66 | +char param_buf_temp[4*1024] = {0}; |
|---|
| 67 | + |
|---|
| 68 | +void set_lcdparam_test_edp(struct display_fixup_data *data) |
|---|
| 69 | +{ |
|---|
| 70 | + |
|---|
| 71 | + data->type = PANEL_TYPE_DSI; |
|---|
| 72 | + data->delay_prepare = 100; |
|---|
| 73 | + data->delay_enable = 100; |
|---|
| 74 | + data->delay_disable = 100; |
|---|
| 75 | + data->delay_unprepare = 100; |
|---|
| 76 | + data->delay_reset = 100; |
|---|
| 77 | + data->delay_init = 100; |
|---|
| 78 | + data->size_width = 240; |
|---|
| 79 | + data->size_height = 300; |
|---|
| 80 | + data->clock_frequency = 60000000; |
|---|
| 81 | + data->hactive = 1024; |
|---|
| 82 | + data->hfront_porch = 12; |
|---|
| 83 | + data->hsync_len = 16; |
|---|
| 84 | + data->hback_porch = 48; |
|---|
| 85 | + data->vactive = 600; |
|---|
| 86 | + data->vfront_porch = 8; |
|---|
| 87 | + data->vsync_len = 4; |
|---|
| 88 | + data->vback_porch = 8; |
|---|
| 89 | + data->hsync_active = 0; |
|---|
| 90 | + data->vsync_active = 0; |
|---|
| 91 | + data->de_active = 0; |
|---|
| 92 | + data->pixelclk_active = 0; |
|---|
| 93 | + data->flags = 0; |
|---|
| 94 | + data->format = 0; |
|---|
| 95 | + data->lanes = 4; |
|---|
| 96 | + *(data->init_cmd + 0) = 0x05; |
|---|
| 97 | + *(data->init_cmd + 1) = 0x00; |
|---|
| 98 | + *(data->init_cmd + 2) = 0x01; |
|---|
| 99 | + *(data->init_cmd + 3) = 0x01; |
|---|
| 100 | + |
|---|
| 101 | + *(data->init_cmd + 4) = 0x05; |
|---|
| 102 | + *(data->init_cmd + 5) = 0x00; |
|---|
| 103 | + *(data->init_cmd + 6) = 0x01; |
|---|
| 104 | + *(data->init_cmd + 7) = 0x02; |
|---|
| 105 | + |
|---|
| 106 | + *(data->init_cmd + 8) = 0x05; |
|---|
| 107 | + *(data->init_cmd + 9) = 0x00; |
|---|
| 108 | + *(data->init_cmd + 10) = 0x01; |
|---|
| 109 | + *(data->init_cmd + 11) = 0x03; |
|---|
| 110 | + |
|---|
| 111 | + *(data->init_cmd + 12) = 0x05; |
|---|
| 112 | + *(data->init_cmd + 13) = 0x00; |
|---|
| 113 | + *(data->init_cmd + 14) = 0x01; |
|---|
| 114 | + *(data->init_cmd + 15) = 0x05; |
|---|
| 115 | + |
|---|
| 116 | +} |
|---|
| 117 | + |
|---|
| 118 | +int get_lcdparam_info_from_custom_partition(struct display_fixup_data *data) |
|---|
| 119 | +{ |
|---|
| 120 | + |
|---|
| 121 | + struct blk_desc *dev_desc; |
|---|
| 122 | + disk_partition_t part_info; |
|---|
| 123 | + char *boot_partname = CUSTOM_PARTITION_NAME; |
|---|
| 124 | + int ret,i; |
|---|
| 125 | + |
|---|
| 126 | + dev_desc = rockchip_get_bootdev(); |
|---|
| 127 | + if (!dev_desc) { |
|---|
| 128 | + printf("%s: dev_desc is NULL!\n", __func__); |
|---|
| 129 | + return -ENODEV; |
|---|
| 130 | + } |
|---|
| 131 | + |
|---|
| 132 | + ret = part_get_info_by_name(dev_desc, boot_partname, &part_info); |
|---|
| 133 | + if (ret < 0) { |
|---|
| 134 | + printf("%s: failed to get %s part, ret=%d\n", |
|---|
| 135 | + __func__, boot_partname, ret); |
|---|
| 136 | + /* RKIMG can support part table without 'boot' */ |
|---|
| 137 | + return -1; |
|---|
| 138 | + } |
|---|
| 139 | + |
|---|
| 140 | + printf("block num: %lu, name %s ,type %s,block size :%lu\n",part_info.size,part_info.name,part_info.type,part_info.blksz); |
|---|
| 141 | + |
|---|
| 142 | + ret = blk_dread(dev_desc, part_info.start + 512, 1, param_buf_temp); |
|---|
| 143 | + if (ret != 1) { |
|---|
| 144 | + printf("%s: failed to read screen parameter, ret=%d\n", |
|---|
| 145 | + __func__, ret); |
|---|
| 146 | + return -1; |
|---|
| 147 | + } |
|---|
| 148 | + |
|---|
| 149 | + for (i = 0; i < LCD_PARAM_MAX_COUNT; i++) { |
|---|
| 150 | + lcdParam[i] = param_buf_temp[i * 4]; |
|---|
| 151 | + lcdParam[i] = (lcdParam[i] << 8) + param_buf_temp[i * 4 + 1]; |
|---|
| 152 | + lcdParam[i] = (lcdParam[i] << 8) + param_buf_temp[i * 4 + 2]; |
|---|
| 153 | + lcdParam[i] = (lcdParam[i] << 8) + param_buf_temp[i * 4 + 3]; |
|---|
| 154 | + if(lcdParam[i] < 0){ |
|---|
| 155 | + lcdParam[i] = -lcdParam[i]; |
|---|
| 156 | + } |
|---|
| 157 | + if(lcdParam[i] > 100000 && i != 9){ |
|---|
| 158 | + lcdParam[i] = 0; |
|---|
| 159 | + } |
|---|
| 160 | + printf("--get-- lcd_param %d\n",lcdParam[i]); |
|---|
| 161 | + } |
|---|
| 162 | + |
|---|
| 163 | + if(lcdParam[14] == 0 || lcdParam[10] == 0){ |
|---|
| 164 | + return -1; |
|---|
| 165 | + } |
|---|
| 166 | + printf("-get- crc32 = 0X%02X%02X%02X%02X\n", |
|---|
| 167 | + param_buf_temp[LCD_PARAM_MAX_COUNT * 4], param_buf_temp[LCD_PARAM_MAX_COUNT * 4 + 1], |
|---|
| 168 | + param_buf_temp[LCD_PARAM_MAX_COUNT * 4 + 2], param_buf_temp[LCD_PARAM_MAX_COUNT * 4 + 3]); |
|---|
| 169 | + |
|---|
| 170 | + data->type = lcdParam[0]; |
|---|
| 171 | + data->delay_prepare = lcdParam[4]; |
|---|
| 172 | + data->delay_enable = lcdParam[2]; |
|---|
| 173 | + data->delay_disable = lcdParam[3]; |
|---|
| 174 | + data->delay_unprepare = lcdParam[1]; |
|---|
| 175 | + data->delay_reset = lcdParam[5]; |
|---|
| 176 | + data->delay_init = lcdParam[6]; |
|---|
| 177 | + data->size_width = lcdParam[7]; |
|---|
| 178 | + data->size_height = lcdParam[8]; |
|---|
| 179 | + data->clock_frequency = lcdParam[9]; |
|---|
| 180 | + data->hactive = lcdParam[10]; |
|---|
| 181 | + data->hfront_porch = lcdParam[11]; |
|---|
| 182 | + data->hsync_len = lcdParam[12]; |
|---|
| 183 | + data->hback_porch = lcdParam[13]; |
|---|
| 184 | + data->vactive = lcdParam[14]; |
|---|
| 185 | + data->vfront_porch = lcdParam[15]; |
|---|
| 186 | + data->vsync_len = lcdParam[16]; |
|---|
| 187 | + data->vback_porch = lcdParam[17]; |
|---|
| 188 | + data->hsync_active = lcdParam[18]; |
|---|
| 189 | + data->vsync_active = lcdParam[19]; |
|---|
| 190 | + data->de_active = lcdParam[20]; |
|---|
| 191 | + data->pixelclk_active = lcdParam[21]; |
|---|
| 192 | + data->flags = lcdParam[22]; |
|---|
| 193 | + data->format = lcdParam[23]; |
|---|
| 194 | + data->lanes = lcdParam[24]; |
|---|
| 195 | + data->init_cmd_length = lcdParam[25] = 16; |
|---|
| 196 | + data->nodka_lvds = lcdParam[26]; |
|---|
| 197 | + data->init_cmd = malloc(sizeof(*(data->init_cmd)) * data->init_cmd_length); |
|---|
| 198 | + for(i = 0; i < data->init_cmd_length; i++){ |
|---|
| 199 | + *(data->init_cmd + i) = param_buf_temp[100 + i]; |
|---|
| 200 | + // printf("init cmd = %x\n",param_buf_temp[100 + i]); |
|---|
| 201 | + |
|---|
| 202 | + } |
|---|
| 203 | + |
|---|
| 204 | +// set_lcdparam_test_edp(data); |
|---|
| 205 | + |
|---|
| 206 | + return 0; |
|---|
| 207 | +} |
|---|
| 208 | + |
|---|
| 209 | +#endif |
|---|
| 210 | + |
|---|
| 211 | + |
|---|
| 212 | +static int find_connector_node(const void *blob, int node) |
|---|
| 213 | +{ |
|---|
| 214 | + int phandle, remote; |
|---|
| 215 | + int nodedepth; |
|---|
| 216 | + |
|---|
| 217 | + phandle = fdt_getprop_u32_default_node(blob, node, 0, |
|---|
| 218 | + "remote-endpoint", -1); |
|---|
| 219 | + remote = fdt_node_offset_by_phandle(blob, phandle); |
|---|
| 220 | + nodedepth = fdt_node_depth(blob, remote); |
|---|
| 221 | + |
|---|
| 222 | + return fdt_supernode_atdepth_offset(blob, remote, |
|---|
| 223 | + nodedepth - 3, NULL); |
|---|
| 224 | +} |
|---|
| 225 | + |
|---|
| 226 | +static int get_panel_node(const void *blob, int conn_node) |
|---|
| 227 | +{ |
|---|
| 228 | + int panel, ports, port, ep, remote, ph, nodedepth; |
|---|
| 229 | + |
|---|
| 230 | + panel = fdt_subnode_offset(blob, conn_node, "panel"); |
|---|
| 231 | + printf("panel_1=%d\n",panel); |
|---|
| 232 | + if (panel > 0) { |
|---|
| 233 | + return panel; |
|---|
| 234 | + } |
|---|
| 235 | + |
|---|
| 236 | + ports = fdt_subnode_offset(blob, conn_node, "ports"); |
|---|
| 237 | + if (ports < 0) |
|---|
| 238 | + { |
|---|
| 239 | + return -ENODEV; |
|---|
| 240 | + } |
|---|
| 241 | + |
|---|
| 242 | + fdt_for_each_subnode(port, blob, ports) { |
|---|
| 243 | + fdt_for_each_subnode(ep, blob, port) { |
|---|
| 244 | + ph = fdt_getprop_u32_default_node(blob, ep, 0, |
|---|
| 245 | + "remote-endpoint", 0); |
|---|
| 246 | + if (!ph) |
|---|
| 247 | + continue; |
|---|
| 248 | + |
|---|
| 249 | + remote = fdt_node_offset_by_phandle(blob, ph); |
|---|
| 250 | + |
|---|
| 251 | + nodedepth = fdt_node_depth(blob, remote); |
|---|
| 252 | + if (nodedepth < 2) |
|---|
| 253 | + continue; |
|---|
| 254 | + |
|---|
| 255 | + panel = fdt_supernode_atdepth_offset(blob, remote, |
|---|
| 256 | + nodedepth - 2, |
|---|
| 257 | + NULL); |
|---|
| 258 | + break; |
|---|
| 259 | + } |
|---|
| 260 | + } |
|---|
| 261 | + printf("panel_2=%d\n",panel); |
|---|
| 262 | + return panel; |
|---|
| 263 | +} |
|---|
| 264 | + |
|---|
| 265 | +static int fdt_fixup_node_status(void *blob, int node, enum fdt_status status) |
|---|
| 266 | +{ |
|---|
| 267 | + int ret; |
|---|
| 268 | + |
|---|
| 269 | +// printf("My fixup %s %d\n", fdt_get_name(blob, node, NULL), status); |
|---|
| 270 | + |
|---|
| 271 | +set_status: |
|---|
| 272 | + ret = fdt_set_node_status(blob, node, status, 0); |
|---|
| 273 | + if (ret == -FDT_ERR_NOSPACE) { |
|---|
| 274 | + ret = fdt_increase_size(blob, 512); |
|---|
| 275 | + if (!ret) |
|---|
| 276 | + goto set_status; |
|---|
| 277 | + else |
|---|
| 278 | + goto err_size; |
|---|
| 279 | + } else if (ret < 0) { |
|---|
| 280 | + printf("Can't set node status: %s\n", fdt_strerror(ret)); |
|---|
| 281 | + return ret; |
|---|
| 282 | + } |
|---|
| 283 | + |
|---|
| 284 | + return 0; |
|---|
| 285 | + |
|---|
| 286 | +err_size: |
|---|
| 287 | + printf("Can't increase blob size: %s\n", fdt_strerror(ret)); |
|---|
| 288 | + return ret; |
|---|
| 289 | +} |
|---|
| 290 | + |
|---|
| 291 | +static int fdt_fixup_panel_init_sequence(void *fdt, int node,const struct display_fixup_data *data) |
|---|
| 292 | +{ |
|---|
| 293 | + #if 0 |
|---|
| 294 | + u8 init_buf[] = {0x05, 0x00, 0x01, 0x78, 0x15, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x01, 0x14,0x39, 0x01, 0x03, 0x02, 0x29, 0x11}; |
|---|
| 295 | + u8 exit_buf[] = {0x05, 0x64, 0x01, 0x29, 0x05, 0x64, 0x01, 0x11}; |
|---|
| 296 | + #endif |
|---|
| 297 | + int ret; |
|---|
| 298 | + |
|---|
| 299 | +add_seq: |
|---|
| 300 | + ret = fdt_setprop(fdt, node, "panel-init-sequence", data->init_cmd, data->init_cmd_length); |
|---|
| 301 | + if (ret == -FDT_ERR_NOSPACE) { |
|---|
| 302 | + printf(" init sequence FDT_ERR_NOSPACE\n"); |
|---|
| 303 | + ret = fdt_increase_size(fdt, data->init_cmd_length * 4);//gln the length needs precision |
|---|
| 304 | + if (!ret) |
|---|
| 305 | + goto add_seq; |
|---|
| 306 | + else |
|---|
| 307 | + goto err_size; |
|---|
| 308 | + } else if (ret < 0) { |
|---|
| 309 | + printf("Can't add property: %s\n", fdt_strerror(ret)); |
|---|
| 310 | + return ret; |
|---|
| 311 | + } |
|---|
| 312 | + |
|---|
| 313 | +#if 0 |
|---|
| 314 | +add_init_seq: |
|---|
| 315 | + ret = fdt_setprop(fdt, node, "panel-init-sequence", init_buf, sizeof(init_buf)); |
|---|
| 316 | + if (ret == -FDT_ERR_NOSPACE) { |
|---|
| 317 | + printf(" init sequence FDT_ERR_NOSPACE\n"); |
|---|
| 318 | + ret = fdt_increase_size(fdt, 512);//gln the length needs precision |
|---|
| 319 | + if (!ret) |
|---|
| 320 | + goto add_init_seq; |
|---|
| 321 | + else |
|---|
| 322 | + goto err_size; |
|---|
| 323 | + } else if (ret < 0) { |
|---|
| 324 | + printf("Can't add property: %s\n", fdt_strerror(ret)); |
|---|
| 325 | + return ret; |
|---|
| 326 | + } |
|---|
| 327 | +add_exit_seq: |
|---|
| 328 | + ret = fdt_setprop(fdt, node, "panel-exit-sequence", exit_buf, sizeof(exit_buf)); |
|---|
| 329 | + if (ret == -FDT_ERR_NOSPACE) { |
|---|
| 330 | + printf(" init sequence FDT_ERR_NOSPACE\n"); |
|---|
| 331 | + ret = fdt_increase_size(fdt, 512);//gln the length needs precision |
|---|
| 332 | + if (!ret) |
|---|
| 333 | + goto add_exit_seq; |
|---|
| 334 | + else |
|---|
| 335 | + goto err_size; |
|---|
| 336 | + } else if (ret < 0) { |
|---|
| 337 | + printf("Can't add property: %s\n", fdt_strerror(ret)); |
|---|
| 338 | + return ret; |
|---|
| 339 | + } |
|---|
| 340 | +#endif |
|---|
| 341 | + |
|---|
| 342 | + return 0; |
|---|
| 343 | + |
|---|
| 344 | +err_size: |
|---|
| 345 | + printf("Can't increase blob size: %s\n", fdt_strerror(ret)); |
|---|
| 346 | + return ret; |
|---|
| 347 | +} |
|---|
| 348 | + |
|---|
| 349 | +static int fdt_fixup_setprop_u32(void *fdt, int node, const char *name, u32 data) |
|---|
| 350 | +{ |
|---|
| 351 | + int ret; |
|---|
| 352 | + |
|---|
| 353 | +set_prop: |
|---|
| 354 | + ret = fdt_setprop_u32(fdt, node, name, data); |
|---|
| 355 | + if (ret == -FDT_ERR_NOSPACE) { |
|---|
| 356 | + ret = fdt_increase_size(fdt, 512); |
|---|
| 357 | + if (!ret) |
|---|
| 358 | + goto set_prop; |
|---|
| 359 | + else |
|---|
| 360 | + goto err_size; |
|---|
| 361 | + } else if (ret < 0) { |
|---|
| 362 | + printf("Can't add property: %s\n", fdt_strerror(ret)); |
|---|
| 363 | + return ret; |
|---|
| 364 | + } |
|---|
| 365 | + |
|---|
| 366 | + return 0; |
|---|
| 367 | + |
|---|
| 368 | +err_size: |
|---|
| 369 | + printf("Can't increase blob size: %s\n", fdt_strerror(ret)); |
|---|
| 370 | + return ret; |
|---|
| 371 | +} |
|---|
| 372 | + |
|---|
| 373 | +static void fdt_fixup_display_timing(void *blob, int node, |
|---|
| 374 | + const struct display_fixup_data *data) |
|---|
| 375 | +{ |
|---|
| 376 | + fdt_fixup_setprop_u32(blob, node, "clock-frequency", data->clock_frequency); |
|---|
| 377 | + fdt_fixup_setprop_u32(blob, node, "hactive", data->hactive); |
|---|
| 378 | + fdt_fixup_setprop_u32(blob, node, "hfront-porch", data->hfront_porch); |
|---|
| 379 | + fdt_fixup_setprop_u32(blob, node, "hsync-len", data->hsync_len); |
|---|
| 380 | + fdt_fixup_setprop_u32(blob, node, "hback-porch", data->hback_porch); |
|---|
| 381 | + fdt_fixup_setprop_u32(blob, node, "vactive", data->vactive); |
|---|
| 382 | + fdt_fixup_setprop_u32(blob, node, "vfront-porch", data->vfront_porch); |
|---|
| 383 | + fdt_fixup_setprop_u32(blob, node, "vsync-len", data->vsync_len); |
|---|
| 384 | + fdt_fixup_setprop_u32(blob, node, "vback-porch", data->vback_porch); |
|---|
| 385 | + fdt_fixup_setprop_u32(blob, node, "hsync-active", data->hsync_active); |
|---|
| 386 | + fdt_fixup_setprop_u32(blob, node, "vsync-active", data->vsync_active); |
|---|
| 387 | + fdt_fixup_setprop_u32(blob, node, "de-active", data->de_active); |
|---|
| 388 | + fdt_fixup_setprop_u32(blob, node, "pixelclk-active", data->pixelclk_active); |
|---|
| 389 | +} |
|---|
| 390 | + |
|---|
| 391 | +static void fdt_fixup_panel_node(void *blob, int node, const char *name, |
|---|
| 392 | + const struct display_fixup_data *data) |
|---|
| 393 | +{ |
|---|
| 394 | + if (!strcmp(name, "dsi")) { |
|---|
| 395 | + fdt_setprop_u32(blob, node, "dsi,flags", data->flags); |
|---|
| 396 | + fdt_setprop_u32(blob, node, "dsi,format", data->format); |
|---|
| 397 | + fdt_setprop_u32(blob, node, "dsi,lanes", data->lanes); |
|---|
| 398 | + fdt_fixup_panel_init_sequence(blob, node,data); |
|---|
| 399 | + } |
|---|
| 400 | + fdt_fixup_setprop_u32(blob, node, "prepare-delay-ms", data->delay_prepare); |
|---|
| 401 | + fdt_fixup_setprop_u32(blob, node, "enable-delay-ms", data->delay_enable); |
|---|
| 402 | + fdt_fixup_setprop_u32(blob, node, "disable-delay-ms", data->delay_disable); |
|---|
| 403 | + fdt_fixup_setprop_u32(blob, node, "unprepare-delay-ms", data->delay_unprepare); |
|---|
| 404 | + fdt_fixup_setprop_u32(blob, node, "reset-delay-ms", data->delay_reset); |
|---|
| 405 | + fdt_fixup_setprop_u32(blob, node, "init-delay-ms", data->delay_init); |
|---|
| 406 | + fdt_fixup_setprop_u32(blob, node, "width-mm", data->size_width); |
|---|
| 407 | + fdt_fixup_setprop_u32(blob, node, "height-mm", data->size_height); |
|---|
| 408 | + |
|---|
| 409 | +} |
|---|
| 410 | +static void fdt_fixup_nodka_lvds(void *blob, int node, |
|---|
| 411 | + const struct display_fixup_data *data) |
|---|
| 412 | +{ |
|---|
| 413 | + if ( data->nodka_lvds != 0 ) |
|---|
| 414 | + fdt_fixup_setprop_u32(blob, node, "nodka-lvds", data->nodka_lvds); |
|---|
| 415 | +} |
|---|
| 416 | + |
|---|
| 417 | + |
|---|
| 418 | +static int fdt_fixup_display_sub_route(void *blob, const char *name, |
|---|
| 419 | + enum fdt_status status, |
|---|
| 420 | + const struct display_fixup_data *data) |
|---|
| 421 | +{ |
|---|
| 422 | + int route, phandle, connect, connector, panel, dt, timing, route_lvds; |
|---|
| 423 | + char path[64]; |
|---|
| 424 | + char path_lvds[16] = "/panel"; |
|---|
| 425 | + int ret; |
|---|
| 426 | + sprintf(path, "/display-subsystem/route/route-%s", name); |
|---|
| 427 | + |
|---|
| 428 | + |
|---|
| 429 | + route = fdt_path_offset(blob, path); |
|---|
| 430 | + printf("route : %d \n",route); |
|---|
| 431 | + if (route < 0) |
|---|
| 432 | + return route; |
|---|
| 433 | + |
|---|
| 434 | + route_lvds = fdt_path_offset(blob, path_lvds); |
|---|
| 435 | + if (route_lvds < 0) |
|---|
| 436 | + { |
|---|
| 437 | + printf("can not get route_lvds = %d\n",route_lvds); |
|---|
| 438 | + return route_lvds; |
|---|
| 439 | + } |
|---|
| 440 | + /* fixup lvds gpio channel*/ |
|---|
| 441 | + fdt_fixup_nodka_lvds(blob, route_lvds, data); |
|---|
| 442 | + |
|---|
| 443 | + /* fixup route status */ |
|---|
| 444 | + ret = fdt_fixup_node_status(blob, route, status); |
|---|
| 445 | + if (ret < 0) |
|---|
| 446 | + return ret; |
|---|
| 447 | + phandle = fdt_getprop_u32_default_node(blob, route, 0, "connect", -1); |
|---|
| 448 | + if (phandle < 0) |
|---|
| 449 | + return phandle; |
|---|
| 450 | + connect = fdt_node_offset_by_phandle(blob, phandle); |
|---|
| 451 | + if (connect < 0) |
|---|
| 452 | + return connect; |
|---|
| 453 | + connector = find_connector_node(blob, connect); |
|---|
| 454 | + if (connector < 0) |
|---|
| 455 | + return connector; |
|---|
| 456 | + /* fixup connector status */ |
|---|
| 457 | + ret = fdt_fixup_node_status(blob, connector, status); |
|---|
| 458 | + if (ret < 0) |
|---|
| 459 | + return ret; |
|---|
| 460 | + if (status != FDT_STATUS_OKAY) { |
|---|
| 461 | + return 0; |
|---|
| 462 | + } |
|---|
| 463 | + panel = get_panel_node(blob, connector); |
|---|
| 464 | + if (panel < 0) |
|---|
| 465 | + return panel; |
|---|
| 466 | + /* fixup panel info */ |
|---|
| 467 | + fdt_fixup_panel_node(blob, panel, name, data); |
|---|
| 468 | + dt = fdt_subnode_offset(blob, panel, "display-timings"); |
|---|
| 469 | + if (dt < 0) { |
|---|
| 470 | + return dt; |
|---|
| 471 | + } |
|---|
| 472 | + timing = fdt_subnode_offset(blob, dt, "timing"); |
|---|
| 473 | + if (timing < 0) { |
|---|
| 474 | + phandle = fdt_getprop_u32_default_node(blob, dt, 0, "native-mode", -1); |
|---|
| 475 | + if (phandle < 0) |
|---|
| 476 | + return phandle; |
|---|
| 477 | + |
|---|
| 478 | + timing = fdt_node_offset_by_phandle(blob, phandle); |
|---|
| 479 | + if (timing < 0) |
|---|
| 480 | + return timing; |
|---|
| 481 | + } |
|---|
| 482 | + |
|---|
| 483 | + /* fixup panel display timing */ |
|---|
| 484 | + fdt_fixup_display_timing(blob, timing, data); |
|---|
| 485 | + return 0; |
|---|
| 486 | +} |
|---|
| 487 | + |
|---|
| 488 | +static void fdt_fixup_display_route(void *blob, const struct display_fixup_data *data) |
|---|
| 489 | +{ |
|---|
| 490 | + if (data->type == PANEL_TYPE_DSI) { |
|---|
| 491 | + fdt_fixup_display_sub_route(blob, "dsi", FDT_STATUS_OKAY, data); |
|---|
| 492 | + fdt_fixup_display_sub_route(blob, "edp", FDT_STATUS_DISABLED, data); |
|---|
| 493 | + fdt_fixup_display_sub_route(blob, "lvds", FDT_STATUS_DISABLED, data); |
|---|
| 494 | + } else if (data->type == PANEL_TYPE_EDP) { |
|---|
| 495 | + fdt_fixup_display_sub_route(blob, "dsi", FDT_STATUS_DISABLED, data); |
|---|
| 496 | + fdt_fixup_display_sub_route(blob, "edp", FDT_STATUS_OKAY, data); |
|---|
| 497 | + fdt_fixup_display_sub_route(blob, "lvds", FDT_STATUS_DISABLED, data); |
|---|
| 498 | + } else if (data->type == PANEL_TYPE_LVDS) { |
|---|
| 499 | + fdt_fixup_display_sub_route(blob, "lvds", FDT_STATUS_OKAY, data); |
|---|
| 500 | + fdt_fixup_display_sub_route(blob, "dsi", FDT_STATUS_DISABLED, data); |
|---|
| 501 | + fdt_fixup_display_sub_route(blob, "edp", FDT_STATUS_DISABLED, data); |
|---|
| 502 | + } |
|---|
| 503 | +} |
|---|
| 504 | + |
|---|
| 505 | + |
|---|
| 506 | + |
|---|
| 507 | + |
|---|
| 508 | + |
|---|
| 509 | + |
|---|
| 510 | + |
|---|
| 511 | + |
|---|
| 512 | + |
|---|
| 19 | 513 | #ifdef CONFIG_USING_KERNEL_DTB_V2 |
|---|
| 20 | 514 | static int dm_rm_kernel_dev(void) |
|---|
| 21 | 515 | { |
|---|
| .. | .. |
|---|
| 301 | 795 | #endif |
|---|
| 302 | 796 | ulong fdt_addr = 0; |
|---|
| 303 | 797 | int ret = -ENODEV; |
|---|
| 798 | + struct display_fixup_data fix_data; |
|---|
| 304 | 799 | |
|---|
| 305 | 800 | printf("DM: v%d\n", IS_ENABLED(CONFIG_USING_KERNEL_DTB_V2) ? 2 : 1); |
|---|
| 306 | 801 | |
|---|
| .. | .. |
|---|
| 372 | 867 | phandles_fixup_cru((void *)gd->fdt_blob); |
|---|
| 373 | 868 | phandles_fixup_gpio((void *)gd->fdt_blob, (void *)ufdt_blob); |
|---|
| 374 | 869 | #endif |
|---|
| 870 | + if (!get_lcdparam_info_from_custom_partition(&fix_data)) |
|---|
| 871 | + fdt_fixup_display_route((void *)fdt_addr, &fix_data); |
|---|
| 375 | 872 | |
|---|
| 376 | 873 | gd->flags |= GD_FLG_KDTB_READY; |
|---|
| 377 | 874 | gd->of_root_f = gd->of_root; |
|---|
old mode 100644new mode 100755| .. | .. |
|---|
| 45 | 45 | bool power_invert; |
|---|
| 46 | 46 | u32 bus_format; |
|---|
| 47 | 47 | unsigned int bpc; |
|---|
| 48 | + unsigned int lvds_index; |
|---|
| 48 | 49 | |
|---|
| 49 | 50 | struct { |
|---|
| 50 | 51 | unsigned int prepare; |
|---|
| .. | .. |
|---|
| 66 | 67 | struct udevice *backlight; |
|---|
| 67 | 68 | struct gpio_desc enable_gpio; |
|---|
| 68 | 69 | struct gpio_desc reset_gpio; |
|---|
| 70 | + struct gpio_desc edp_bl_on; |
|---|
| 71 | + struct gpio_desc edp_bl_en; |
|---|
| 72 | + |
|---|
| 73 | + struct gpio_desc lvds_gpio0; |
|---|
| 74 | + struct gpio_desc lvds_gpio1; |
|---|
| 75 | + struct gpio_desc lvds_gpio2; |
|---|
| 76 | + struct gpio_desc lvds_gpio3; |
|---|
| 69 | 77 | |
|---|
| 70 | 78 | int cmd_type; |
|---|
| 71 | 79 | struct gpio_desc spi_sdi_gpio; |
|---|
| .. | .. |
|---|
| 275 | 283 | |
|---|
| 276 | 284 | if (priv->prepared) |
|---|
| 277 | 285 | return; |
|---|
| 286 | + |
|---|
| 287 | + /*7511 LVDS IO Control start*/ |
|---|
| 288 | + printk("nodka_lvds_index = %d\n",plat->lvds_index); |
|---|
| 289 | + |
|---|
| 290 | + ret = plat->lvds_index & 1; |
|---|
| 291 | + if (dm_gpio_is_valid(&priv->lvds_gpio0)) |
|---|
| 292 | + dm_gpio_set_value(&priv->lvds_gpio0, ret); |
|---|
| 293 | + ret = dm_gpio_get_value(&priv->lvds_gpio0); |
|---|
| 294 | + printf("lvds_gpio0 : %d\n",ret); |
|---|
| 295 | + |
|---|
| 296 | + ret = plat->lvds_index >> 1 & 1; |
|---|
| 297 | + if (dm_gpio_is_valid(&priv->lvds_gpio1)) |
|---|
| 298 | + dm_gpio_set_value(&priv->lvds_gpio1, ret); |
|---|
| 299 | + ret = dm_gpio_get_value(&priv->lvds_gpio1); |
|---|
| 300 | + printf("lvds_gpio1 : %d\n",ret); |
|---|
| 301 | + |
|---|
| 302 | + ret = plat->lvds_index >> 2 & 1; |
|---|
| 303 | + if (dm_gpio_is_valid(&priv->lvds_gpio2)) |
|---|
| 304 | + dm_gpio_set_value(&priv->lvds_gpio2, ret); |
|---|
| 305 | + ret = dm_gpio_get_value(&priv->lvds_gpio2); |
|---|
| 306 | + printf("lvds_gpio2 : %d\n",ret); |
|---|
| 307 | + |
|---|
| 308 | + ret = plat->lvds_index >> 3 & 1; |
|---|
| 309 | + if (dm_gpio_is_valid(&priv->lvds_gpio3)) |
|---|
| 310 | + dm_gpio_set_value(&priv->lvds_gpio3, ret); |
|---|
| 311 | + ret = dm_gpio_get_value(&priv->lvds_gpio3); |
|---|
| 312 | + printf("lvds_gpio3 : %d\n",ret); |
|---|
| 313 | + mdelay(100); |
|---|
| 314 | +/*7511 LVDS IO Control end*/ |
|---|
| 278 | 315 | |
|---|
| 279 | 316 | if (priv->power_supply) |
|---|
| 280 | 317 | regulator_set_enable(priv->power_supply, !plat->power_invert); |
|---|
| 281 | | - |
|---|
| 318 | + |
|---|
| 319 | + if (dm_gpio_is_valid(&priv->edp_bl_on)) |
|---|
| 320 | + dm_gpio_set_value(&priv->edp_bl_on, 1); |
|---|
| 321 | + |
|---|
| 322 | + if (dm_gpio_is_valid(&priv->edp_bl_en)) |
|---|
| 323 | + dm_gpio_set_value(&priv->edp_bl_en, 1); |
|---|
| 324 | + |
|---|
| 282 | 325 | if (dm_gpio_is_valid(&priv->enable_gpio)) |
|---|
| 283 | 326 | dm_gpio_set_value(&priv->enable_gpio, 1); |
|---|
| 284 | | - |
|---|
| 327 | + |
|---|
| 285 | 328 | if (plat->delay.prepare) |
|---|
| 286 | 329 | mdelay(plat->delay.prepare); |
|---|
| 287 | | - |
|---|
| 330 | + |
|---|
| 288 | 331 | if (dm_gpio_is_valid(&priv->reset_gpio)) |
|---|
| 289 | 332 | dm_gpio_set_value(&priv->reset_gpio, 1); |
|---|
| 290 | | - |
|---|
| 291 | | - if (plat->delay.reset) |
|---|
| 292 | | - mdelay(plat->delay.reset); |
|---|
| 293 | | - |
|---|
| 333 | + mdelay(50); |
|---|
| 294 | 334 | if (dm_gpio_is_valid(&priv->reset_gpio)) |
|---|
| 295 | 335 | dm_gpio_set_value(&priv->reset_gpio, 0); |
|---|
| 336 | + |
|---|
| 337 | + mdelay(200); |
|---|
| 296 | 338 | |
|---|
| 297 | 339 | if (plat->delay.init) |
|---|
| 298 | 340 | mdelay(plat->delay.init); |
|---|
| .. | .. |
|---|
| 407 | 449 | plat->delay.disable = dev_read_u32_default(dev, "disable-delay-ms", 0); |
|---|
| 408 | 450 | plat->delay.init = dev_read_u32_default(dev, "init-delay-ms", 0); |
|---|
| 409 | 451 | plat->delay.reset = dev_read_u32_default(dev, "reset-delay-ms", 0); |
|---|
| 452 | + plat->lvds_index = dev_read_u32_default(dev, "nodka-lvds", 0); |
|---|
| 410 | 453 | |
|---|
| 411 | 454 | plat->bus_format = dev_read_u32_default(dev, "bus-format", |
|---|
| 412 | 455 | MEDIA_BUS_FMT_RBG888_1X24); |
|---|
| .. | .. |
|---|
| 457 | 500 | int ret; |
|---|
| 458 | 501 | const char *cmd_type; |
|---|
| 459 | 502 | |
|---|
| 503 | + ret = gpio_request_by_name(dev, "edp-bl-gpios", 0, |
|---|
| 504 | + &priv->edp_bl_on, GPIOD_IS_OUT); |
|---|
| 505 | + if (ret && ret != -ENOENT) { |
|---|
| 506 | + printf("%s: Cannot get enable GPIO: %d\n", __func__, ret); |
|---|
| 507 | + return ret; |
|---|
| 508 | + } |
|---|
| 509 | + |
|---|
| 510 | + ret = gpio_request_by_name(dev, "edp-bl-en", 0, |
|---|
| 511 | + &priv->edp_bl_en, GPIOD_IS_OUT); |
|---|
| 512 | + if (ret && ret != -ENOENT) { |
|---|
| 513 | + printf("%s: Cannot get enable GPIO: %d\n", __func__, ret); |
|---|
| 514 | + return ret; |
|---|
| 515 | + } |
|---|
| 516 | + |
|---|
| 460 | 517 | ret = gpio_request_by_name(dev, "enable-gpios", 0, |
|---|
| 461 | 518 | &priv->enable_gpio, GPIOD_IS_OUT); |
|---|
| 462 | 519 | if (ret && ret != -ENOENT) { |
|---|
| .. | .. |
|---|
| 471 | 528 | return ret; |
|---|
| 472 | 529 | } |
|---|
| 473 | 530 | |
|---|
| 531 | + ret = gpio_request_by_name(dev, "lvds-gpio0", 0, |
|---|
| 532 | + &priv->lvds_gpio0, GPIOD_IS_OUT); |
|---|
| 533 | + if (ret && ret != -ENOENT) { |
|---|
| 534 | + printf("%s: Cannot get lvds-gpio0: %d\n", __func__, ret); |
|---|
| 535 | + return ret; |
|---|
| 536 | + } |
|---|
| 537 | + |
|---|
| 538 | + ret = gpio_request_by_name(dev, "lvds-gpio1", 0, |
|---|
| 539 | + &priv->lvds_gpio1, GPIOD_IS_OUT); |
|---|
| 540 | + if (ret && ret != -ENOENT) { |
|---|
| 541 | + printf("%s: Cannot get lvds-gpio1: %d\n", __func__, ret); |
|---|
| 542 | + return ret; |
|---|
| 543 | + } |
|---|
| 544 | + |
|---|
| 545 | + ret = gpio_request_by_name(dev, "lvds-gpio2", 0, |
|---|
| 546 | + &priv->lvds_gpio2, GPIOD_IS_OUT); |
|---|
| 547 | + if (ret && ret != -ENOENT) { |
|---|
| 548 | + printf("%s: Cannot get lvds-gpio2: %d\n", __func__, ret); |
|---|
| 549 | + return ret; |
|---|
| 550 | + } |
|---|
| 551 | + |
|---|
| 552 | + ret = gpio_request_by_name(dev, "lvds-gpio3", 0, |
|---|
| 553 | + &priv->lvds_gpio3, GPIOD_IS_OUT); |
|---|
| 554 | + if (ret && ret != -ENOENT) { |
|---|
| 555 | + printf("%s: Cannot get lvds-gpio3: %d\n", __func__, ret); |
|---|
| 556 | + return ret; |
|---|
| 557 | + } |
|---|
| 558 | + |
|---|
| 474 | 559 | ret = uclass_get_device_by_phandle(UCLASS_PANEL_BACKLIGHT, dev, |
|---|
| 475 | 560 | "backlight", &priv->backlight); |
|---|
| 476 | 561 | if (ret && ret != -ENOENT) { |
|---|