aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrzej Hajda <a.hajda@samsung.com>2017-02-01 02:47:50 -0500
committerArchit Taneja <architt@codeaurora.org>2017-02-02 04:45:30 -0500
commita21e658bfbcdbbac26e92a76aa22db507b439f7c (patch)
tree09e8d43029a9be0c511742084ec0c1353b237549
parent581a923730b41e678579aa268d4155bf345859fd (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.c38
-rw-r--r--drivers/gpu/drm/bridge/sil-sii8620.h10
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
492static 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
492static void sii8620_edid_read(struct sii8620 *ctx, int ret) 529static 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