diff options
author | Andrzej Hajda <a.hajda@samsung.com> | 2017-02-01 02:47:50 -0500 |
---|---|---|
committer | Archit Taneja <architt@codeaurora.org> | 2017-02-02 04:45:30 -0500 |
commit | a21e658bfbcdbbac26e92a76aa22db507b439f7c (patch) | |
tree | 09e8d43029a9be0c511742084ec0c1353b237549 | |
parent | 581a923730b41e678579aa268d4155bf345859fd (diff) |
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
-rw-r--r-- | drivers/gpu/drm/bridge/sil-sii8620.c | 38 | ||||
-rw-r--r-- | drivers/gpu/drm/bridge/sil-sii8620.h | 10 |
2 files changed, 44 insertions, 4 deletions
diff --git a/drivers/gpu/drm/bridge/sil-sii8620.c b/drivers/gpu/drm/bridge/sil-sii8620.c index a0c5499f898b..5dd800d2e303 100644 --- a/drivers/gpu/drm/bridge/sil-sii8620.c +++ b/drivers/gpu/drm/bridge/sil-sii8620.c | |||
@@ -489,12 +489,50 @@ static void sii8620_sink_detected(struct sii8620 *ctx, int ret) | |||
489 | sink_str[ctx->sink_type], sink_name); | 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 | static void sii8620_edid_read(struct sii8620 *ctx, int ret) | 529 | static void sii8620_edid_read(struct sii8620 *ctx, int ret) |
493 | { | 530 | { |
494 | if (ret < 0) | 531 | if (ret < 0) |
495 | return; | 532 | return; |
496 | 533 | ||
497 | sii8620_set_upstream_edid(ctx); | 534 | sii8620_set_upstream_edid(ctx); |
535 | sii8620_hsic_init(ctx); | ||
498 | sii8620_enable_hpd(ctx); | 536 | sii8620_enable_hpd(ctx); |
499 | } | 537 | } |
500 | 538 | ||
diff --git a/drivers/gpu/drm/bridge/sil-sii8620.h b/drivers/gpu/drm/bridge/sil-sii8620.h index 312b07f38a09..51ab540cf092 100644 --- a/drivers/gpu/drm/bridge/sil-sii8620.h +++ b/drivers/gpu/drm/bridge/sil-sii8620.h | |||
@@ -353,7 +353,7 @@ | |||
353 | #define REG_TTXNUMB 0x0116 | 353 | #define REG_TTXNUMB 0x0116 |
354 | #define MSK_TTXNUMB_TTX_AFFCTRL_3_0 0xf0 | 354 | #define MSK_TTXNUMB_TTX_AFFCTRL_3_0 0xf0 |
355 | #define BIT_TTXNUMB_TTX_COM1_AT_SYNC_WAIT BIT(3) | 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 | /* TDM TX NUMSPISYM, default value: 0x04 */ | 358 | /* TDM TX NUMSPISYM, default value: 0x04 */ |
359 | #define REG_TTXSPINUMS 0x0117 | 359 | #define REG_TTXSPINUMS 0x0117 |
@@ -433,12 +433,14 @@ | |||
433 | 433 | ||
434 | /* HSIC Keeper, default value: 0x00 */ | 434 | /* HSIC Keeper, default value: 0x00 */ |
435 | #define REG_KEEPER 0x0181 | 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 | /* HSIC Flow Control General, default value: 0x02 */ | 440 | /* HSIC Flow Control General, default value: 0x02 */ |
439 | #define REG_FCGC 0x0183 | 441 | #define REG_FCGC 0x0183 |
440 | #define BIT_FCGC_HSIC_FC_HOSTMODE BIT(1) | 442 | #define BIT_FCGC_HSIC_HOSTMODE BIT(1) |
441 | #define BIT_FCGC_HSIC_FC_ENABLE BIT(0) | 443 | #define BIT_FCGC_HSIC_ENABLE BIT(0) |
442 | 444 | ||
443 | /* HSIC Flow Control CTR13, default value: 0xfc */ | 445 | /* HSIC Flow Control CTR13, default value: 0xfc */ |
444 | #define REG_FCCTR13 0x0191 | 446 | #define REG_FCCTR13 0x0191 |