Linux Audio

Check our new training course

Loading...
Note: File does not exist in v4.6.
  1/* SPDX-License-Identifier: MIT */
  2/*
  3 * Copyright © 2022 Intel Corporation
  4 */
  5
  6#ifndef __VLV_DSI_PLL_REGS_H__
  7#define __VLV_DSI_PLL_REGS_H__
  8
  9#include "vlv_dsi_regs.h"
 10
 11#define MIPIO_TXESC_CLK_DIV1			_MMIO(0x160004)
 12#define  GLK_TX_ESC_CLK_DIV1_MASK			0x3FF
 13#define MIPIO_TXESC_CLK_DIV2			_MMIO(0x160008)
 14#define  GLK_TX_ESC_CLK_DIV2_MASK			0x3FF
 15
 16#define BXT_MAX_VAR_OUTPUT_KHZ			39500
 17
 18#define BXT_MIPI_CLOCK_CTL			_MMIO(0x46090)
 19#define  BXT_MIPI1_DIV_SHIFT			26
 20#define  BXT_MIPI2_DIV_SHIFT			10
 21#define  BXT_MIPI_DIV_SHIFT(port)		\
 22			_MIPI_PORT(port, BXT_MIPI1_DIV_SHIFT, \
 23					BXT_MIPI2_DIV_SHIFT)
 24
 25/* TX control divider to select actual TX clock output from (8x/var) */
 26#define  BXT_MIPI1_TX_ESCLK_SHIFT		26
 27#define  BXT_MIPI2_TX_ESCLK_SHIFT		10
 28#define  BXT_MIPI_TX_ESCLK_SHIFT(port)		\
 29			_MIPI_PORT(port, BXT_MIPI1_TX_ESCLK_SHIFT, \
 30					BXT_MIPI2_TX_ESCLK_SHIFT)
 31#define  BXT_MIPI1_TX_ESCLK_FIXDIV_MASK		(0x3F << 26)
 32#define  BXT_MIPI2_TX_ESCLK_FIXDIV_MASK		(0x3F << 10)
 33#define  BXT_MIPI_TX_ESCLK_FIXDIV_MASK(port)	\
 34			_MIPI_PORT(port, BXT_MIPI1_TX_ESCLK_FIXDIV_MASK, \
 35					BXT_MIPI2_TX_ESCLK_FIXDIV_MASK)
 36#define  BXT_MIPI_TX_ESCLK_DIVIDER(port, val)	\
 37		(((val) & 0x3F) << BXT_MIPI_TX_ESCLK_SHIFT(port))
 38/* RX upper control divider to select actual RX clock output from 8x */
 39#define  BXT_MIPI1_RX_ESCLK_UPPER_SHIFT		21
 40#define  BXT_MIPI2_RX_ESCLK_UPPER_SHIFT		5
 41#define  BXT_MIPI_RX_ESCLK_UPPER_SHIFT(port)		\
 42			_MIPI_PORT(port, BXT_MIPI1_RX_ESCLK_UPPER_SHIFT, \
 43					BXT_MIPI2_RX_ESCLK_UPPER_SHIFT)
 44#define  BXT_MIPI1_RX_ESCLK_UPPER_FIXDIV_MASK		(3 << 21)
 45#define  BXT_MIPI2_RX_ESCLK_UPPER_FIXDIV_MASK		(3 << 5)
 46#define  BXT_MIPI_RX_ESCLK_UPPER_FIXDIV_MASK(port)	\
 47			_MIPI_PORT(port, BXT_MIPI1_RX_ESCLK_UPPER_FIXDIV_MASK, \
 48					BXT_MIPI2_RX_ESCLK_UPPER_FIXDIV_MASK)
 49#define  BXT_MIPI_RX_ESCLK_UPPER_DIVIDER(port, val)	\
 50		(((val) & 3) << BXT_MIPI_RX_ESCLK_UPPER_SHIFT(port))
 51/* 8/3X divider to select the actual 8/3X clock output from 8x */
 52#define  BXT_MIPI1_8X_BY3_SHIFT                19
 53#define  BXT_MIPI2_8X_BY3_SHIFT                3
 54#define  BXT_MIPI_8X_BY3_SHIFT(port)          \
 55			_MIPI_PORT(port, BXT_MIPI1_8X_BY3_SHIFT, \
 56					BXT_MIPI2_8X_BY3_SHIFT)
 57#define  BXT_MIPI1_8X_BY3_DIVIDER_MASK         (3 << 19)
 58#define  BXT_MIPI2_8X_BY3_DIVIDER_MASK         (3 << 3)
 59#define  BXT_MIPI_8X_BY3_DIVIDER_MASK(port)    \
 60			_MIPI_PORT(port, BXT_MIPI1_8X_BY3_DIVIDER_MASK, \
 61						BXT_MIPI2_8X_BY3_DIVIDER_MASK)
 62#define  BXT_MIPI_8X_BY3_DIVIDER(port, val)    \
 63			(((val) & 3) << BXT_MIPI_8X_BY3_SHIFT(port))
 64/* RX lower control divider to select actual RX clock output from 8x */
 65#define  BXT_MIPI1_RX_ESCLK_LOWER_SHIFT		16
 66#define  BXT_MIPI2_RX_ESCLK_LOWER_SHIFT		0
 67#define  BXT_MIPI_RX_ESCLK_LOWER_SHIFT(port)		\
 68			_MIPI_PORT(port, BXT_MIPI1_RX_ESCLK_LOWER_SHIFT, \
 69					BXT_MIPI2_RX_ESCLK_LOWER_SHIFT)
 70#define  BXT_MIPI1_RX_ESCLK_LOWER_FIXDIV_MASK		(3 << 16)
 71#define  BXT_MIPI2_RX_ESCLK_LOWER_FIXDIV_MASK		(3 << 0)
 72#define  BXT_MIPI_RX_ESCLK_LOWER_FIXDIV_MASK(port)	\
 73			_MIPI_PORT(port, BXT_MIPI1_RX_ESCLK_LOWER_FIXDIV_MASK, \
 74					BXT_MIPI2_RX_ESCLK_LOWER_FIXDIV_MASK)
 75#define  BXT_MIPI_RX_ESCLK_LOWER_DIVIDER(port, val)	\
 76		(((val) & 3) << BXT_MIPI_RX_ESCLK_LOWER_SHIFT(port))
 77
 78#define RX_DIVIDER_BIT_1_2                     0x3
 79#define RX_DIVIDER_BIT_3_4                     0xC
 80
 81#define BXT_DSI_PLL_CTL			_MMIO(0x161000)
 82#define  BXT_DSI_PLL_PVD_RATIO_SHIFT	16
 83#define  BXT_DSI_PLL_PVD_RATIO_MASK	(3 << BXT_DSI_PLL_PVD_RATIO_SHIFT)
 84#define  BXT_DSI_PLL_PVD_RATIO_1	(1 << BXT_DSI_PLL_PVD_RATIO_SHIFT)
 85#define  BXT_DSIC_16X_BY1		(0 << 10)
 86#define  BXT_DSIC_16X_BY2		(1 << 10)
 87#define  BXT_DSIC_16X_BY3		(2 << 10)
 88#define  BXT_DSIC_16X_BY4		(3 << 10)
 89#define  BXT_DSIC_16X_MASK		(3 << 10)
 90#define  BXT_DSIA_16X_BY1		(0 << 8)
 91#define  BXT_DSIA_16X_BY2		(1 << 8)
 92#define  BXT_DSIA_16X_BY3		(2 << 8)
 93#define  BXT_DSIA_16X_BY4		(3 << 8)
 94#define  BXT_DSIA_16X_MASK		(3 << 8)
 95#define  BXT_DSI_FREQ_SEL_SHIFT		8
 96#define  BXT_DSI_FREQ_SEL_MASK		(0xF << BXT_DSI_FREQ_SEL_SHIFT)
 97
 98#define BXT_DSI_PLL_RATIO_MAX		0x7D
 99#define BXT_DSI_PLL_RATIO_MIN		0x22
100#define GLK_DSI_PLL_RATIO_MAX		0x6F
101#define GLK_DSI_PLL_RATIO_MIN		0x22
102#define BXT_DSI_PLL_RATIO_MASK		0xFF
103#define BXT_REF_CLOCK_KHZ		19200
104
105#define BXT_DSI_PLL_ENABLE		_MMIO(0x46080)
106#define  BXT_DSI_PLL_DO_ENABLE		(1 << 31)
107#define  BXT_DSI_PLL_LOCKED		(1 << 30)
108
109#endif /* __VLV_DSI_PLL_REGS_H__ */