Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/bridge/sii8620: add HSIC initialization code

In case of MHL3 HSIC should be initialized.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Archit Taneja <architt@codeaurora.org>
Link: http://patchwork.freedesktop.org/patch/msgid/1485935272-17337-24-git-send-email-a.hajda@samsung.com

authored by

Andrzej Hajda and committed by
Archit Taneja
a21e658b 581a9237

+44 -4
+38
drivers/gpu/drm/bridge/sil-sii8620.c
··· 489 489 sink_str[ctx->sink_type], sink_name); 490 490 } 491 491 492 + static void sii8620_hsic_init(struct sii8620 *ctx) 493 + { 494 + if (!sii8620_is_mhl3(ctx)) 495 + return; 496 + 497 + sii8620_write(ctx, REG_FCGC, 498 + BIT_FCGC_HSIC_HOSTMODE | BIT_FCGC_HSIC_ENABLE); 499 + sii8620_setbits(ctx, REG_HRXCTRL3, 500 + BIT_HRXCTRL3_HRX_STAY_RESET | BIT_HRXCTRL3_STATUS_EN, ~0); 501 + sii8620_setbits(ctx, REG_TTXNUMB, MSK_TTXNUMB_TTX_NUMBPS, 4); 502 + sii8620_setbits(ctx, REG_TRXCTRL, BIT_TRXCTRL_TRX_FROM_SE_COC, ~0); 503 + sii8620_setbits(ctx, REG_HTXCTRL, BIT_HTXCTRL_HTX_DRVCONN1, 0); 504 + sii8620_setbits(ctx, REG_KEEPER, MSK_KEEPER_MODE, VAL_KEEPER_MODE_HOST); 505 + sii8620_write_seq_static(ctx, 506 + REG_TDMLLCTL, 0, 507 + REG_UTSRST, BIT_UTSRST_HRX_SRST | BIT_UTSRST_HTX_SRST | 508 + BIT_UTSRST_KEEPER_SRST | BIT_UTSRST_FC_SRST, 509 + REG_UTSRST, BIT_UTSRST_HRX_SRST | BIT_UTSRST_HTX_SRST, 510 + REG_HRXINTL, 0xff, 511 + REG_HRXINTH, 0xff, 512 + REG_TTXINTL, 0xff, 513 + REG_TTXINTH, 0xff, 514 + REG_TRXINTL, 0xff, 515 + REG_TRXINTH, 0xff, 516 + REG_HTXINTL, 0xff, 517 + REG_HTXINTH, 0xff, 518 + REG_FCINTR0, 0xff, 519 + REG_FCINTR1, 0xff, 520 + REG_FCINTR2, 0xff, 521 + REG_FCINTR3, 0xff, 522 + REG_FCINTR4, 0xff, 523 + REG_FCINTR5, 0xff, 524 + REG_FCINTR6, 0xff, 525 + REG_FCINTR7, 0xff 526 + ); 527 + } 528 + 492 529 static void sii8620_edid_read(struct sii8620 *ctx, int ret) 493 530 { 494 531 if (ret < 0) 495 532 return; 496 533 497 534 sii8620_set_upstream_edid(ctx); 535 + sii8620_hsic_init(ctx); 498 536 sii8620_enable_hpd(ctx); 499 537 } 500 538
+6 -4
drivers/gpu/drm/bridge/sil-sii8620.h
··· 353 353 #define REG_TTXNUMB 0x0116 354 354 #define MSK_TTXNUMB_TTX_AFFCTRL_3_0 0xf0 355 355 #define BIT_TTXNUMB_TTX_COM1_AT_SYNC_WAIT BIT(3) 356 - #define MSK_TTXNUMB_TTX_NUMBPS_2_0 0x07 356 + #define MSK_TTXNUMB_TTX_NUMBPS 0x07 357 357 358 358 /* TDM TX NUMSPISYM, default value: 0x04 */ 359 359 #define REG_TTXSPINUMS 0x0117 ··· 433 433 434 434 /* HSIC Keeper, default value: 0x00 */ 435 435 #define REG_KEEPER 0x0181 436 - #define MSK_KEEPER_KEEPER_MODE_1_0 0x03 436 + #define MSK_KEEPER_MODE 0x03 437 + #define VAL_KEEPER_MODE_HOST 0 438 + #define VAL_KEEPER_MODE_DEVICE 2 437 439 438 440 /* HSIC Flow Control General, default value: 0x02 */ 439 441 #define REG_FCGC 0x0183 440 - #define BIT_FCGC_HSIC_FC_HOSTMODE BIT(1) 441 - #define BIT_FCGC_HSIC_FC_ENABLE BIT(0) 442 + #define BIT_FCGC_HSIC_HOSTMODE BIT(1) 443 + #define BIT_FCGC_HSIC_ENABLE BIT(0) 442 444 443 445 /* HSIC Flow Control CTR13, default value: 0xfc */ 444 446 #define REG_FCCTR13 0x0191