piSmasher Configuration Libraries
piSmasher peripheral device configuration libraries
TDA998x Device Control Functions

Modules

 I2C Interface/Control
 
 TDA998x Audio
 
 TDA998x EDID
 
 TDA998x Hotplug
 
 TDA998x Video Input
 
 TDA998x Video Output
 

Functions

static uint8_t set_pix_clk (enum tda998x_vid_fmt fmt, enum tda998x_vert_freq freq, uint8_t *pclk)
 
static const struct vidfmt_descget_vidfmt_desc (enum tda998x_vid_fmt vid_fmt)
 
static int set_de_vs (struct tda998x_dev *dev, enum tda998x_vid_fmt vout_fmt, enum tda998x_format_3d format_3d)
 
static int set_pix_repeat (struct tda998x_dev *dev, enum tda998x_vid_fmt vout_fmt, uint8_t pix_rpt, enum tda998x_format_3d format_3d)
 Set Pixel Repetition. More...
 
static int set_sampling (struct tda998x_dev *dev)
 
static uint8_t chksum (uint8_t *data, int len)
 
static int set_video_config (struct tda998x_dev *dev, struct tda998x_vid_frm *vid)
 Set Video Configuration. More...
 
static int tda998x_set_tmds_output (struct tda998x_dev *dev, enum buffer_out_srl_force tmds)
 Set TMDS Output. More...
 
int hot_plug_restore (struct tda998x_dev *dev)
 
int tda998x_handle_interrupt (struct tda998x_dev *dev)
 

Variables

int16_t offset [MTX_OFFSET_LEN]
 
enum tda998x_hdmi_reg reg
 
uint8_t mask
 
uint8_t val
 
uint16_t npix
 
uint16_t nline
 
uint16_t line_start
 
uint16_t pix_start
 
uint16_t line_end
 
uint16_t pix_end
 
uint16_t hs_start
 
uint16_t hs_end
 
uint16_t act_vid_start
 
uint16_t act_vid_end
 
uint16_t de_start
 
uint16_t de_end
 
uint16_t vs2
 
uint8_t pix_rpt
 
uint8_t v_toggle
 
uint8_t h_toggle
 
uint16_t hfp
 
uint16_t vfp
 
uint16_t href
 
uint16_t vref
 
uint8_t pll_sc
 
enum vidformat_fmt reg_fmt
 
enum tda998x_vid_fmt vid_fmt
 
enum vidformat_fmt reg_fmt
 

Detailed Description

Function Documentation

◆ set_pix_repeat()

static int set_pix_repeat ( struct tda998x_dev dev,
enum tda998x_vid_fmt  vout_fmt,
uint8_t  pix_rpt,
enum tda998x_format_3d  format_3d 
)
static

#include <projects/lib/tda998x.c>

Set Pixel Repetition.

Parameters
devTDA998x device structure pointer
Returns
0 on success, non-zero error status otherwise
1577 {
1578  int ret = 0;
1579 
1580  ret = write_reg_mask(dev,
1581  PLL_SERIAL_2,
1582  PLL_SERIAL_2_SRL_PR_MASK,
1583  pix_rpt << 4);
1584  if (ret < 0)
1585  return ret;
1586 
1587  /* Set pixel repetition count for Repetitor module */
1588  ret = write_reg(dev, RPT_CNTRL, pix_rpt);
1589  if (ret < 0)
1590  return ret;
1591 
1592  ret = write_reg_mask(dev,
1593  PLL_SERIAL_1,
1594  PLL_SERIAL_1_SRL_MAN_IZ,
1595  0);
1596  if (ret < 0)
1597  return ret;
1598 
1599  ret = write_reg_mask(dev,
1600  PLL_SERIAL_3,
1601  PLL_SERIAL_3_SRL_DE,
1602  0);
1603  if (ret < 0)
1604  return ret;
1605 
1606  ret = write_reg(dev, SERIALIZER, 0);
1607  if (ret < 0)
1608  return ret;
1609 
1610  return 0;
1611 }
static int write_reg(struct tda998x_dev *dev, enum tda998x_hdmi_reg reg, uint8_t data)
Write Register.
Definition: tda998x.c:1283
static int write_reg_mask(struct tda998x_dev *dev, enum tda998x_hdmi_reg reg, uint8_t mask, uint8_t val)
Register Mask Write Write a value with mask bits to a register.
Definition: tda998x.c:1371

◆ set_video_config()

static int set_video_config ( struct tda998x_dev dev,
struct tda998x_vid_frm vid 
)
static

#include <projects/lib/tda998x.c>

Set Video Configuration.

Parameters
devTDA998x device structure pointer
vidVideo frame structure pointer
Returns
0 on success, non-zero error status otherwise
1701 {
1702  int ret;
1703 
1704  ret = write_reg(dev, VIDFORMAT, 0x1F);
1705  if (ret < 0)
1706  return ret;
1707 
1708  ret = write_reg(dev, VIDFORMAT, 0x00);
1709  if (ret < 0)
1710  return ret;
1711 
1712  ret = write_reg16(dev, NPIX_MSB, vid->npix);
1713  if (ret < 0)
1714  return ret;
1715 
1716  ret = write_reg16(dev, NLINE_MSB, vid->nline);
1717  if (ret < 0)
1718  return ret;
1719 
1720  ret = write_reg16(dev, VS_LINE_STRT_1_MSB, vid->line_start);
1721  if (ret < 0)
1722  return ret;
1723 
1724  ret = write_reg16(dev, VS_PIX_STRT_1_MSB, vid->pix_start);
1725  if (ret < 0)
1726  return ret;
1727 
1728  ret = write_reg16(dev, VS_LINE_END_1_MSB, vid->line_end);
1729  if (ret < 0)
1730  return ret;
1731 
1732  ret = write_reg16(dev, VS_PIX_END_1_MSB, vid->pix_end);
1733  if (ret < 0)
1734  return ret;
1735 
1736  ret = write_reg16(dev, HS_PIX_START_MSB, vid->hs_start);
1737  if (ret < 0)
1738  return ret;
1739 
1740  ret = write_reg16(dev, HS_PIX_STOP_MSB, vid->hs_end);
1741  if (ret < 0)
1742  return ret;
1743 
1744  ret = write_reg16(dev, VWIN_START_1_MSB, vid->act_vid_start);
1745  if (ret < 0)
1746  return ret;
1747 
1748  ret = write_reg16(dev, VWIN_END_1_MSB, vid->act_vid_end);
1749  if (ret < 0)
1750  return ret;
1751 
1752  ret = write_reg16(dev, DE_START_MSB, vid->de_start);
1753  if (ret < 0)
1754  return ret;
1755 
1756  ret = write_reg16(dev, DE_STOP_MSB, vid->de_end);
1757  if (ret < 0)
1758  return ret;
1759 
1760  return 0;
1761 }
static int write_reg(struct tda998x_dev *dev, enum tda998x_hdmi_reg reg, uint8_t data)
Write Register.
Definition: tda998x.c:1283
static int write_reg16(struct tda998x_dev *dev, enum tda998x_hdmi_reg reg, uint16_t data)
Write 16-bit Register.
Definition: tda998x.c:1299

◆ tda998x_set_tmds_output()

static int tda998x_set_tmds_output ( struct tda998x_dev dev,
enum buffer_out_srl_force  tmds 
)
static

#include <projects/lib/tda998x.c>

Set TMDS Output.

Parameters
devTDA998x device structure pointer
tmdsTMDS serializer output selection
Returns
0 on success, non-zero error status otherwise
2953 {
2954  int ret;
2955 
2956 
2957 
2958  /* Set the TMDS output mode */
2959  ret = write_reg_mask(dev,
2960  BUFFER_OUT,
2961  BUFFER_OUT_SRL_FORCE_MASK,
2962  (uint8_t) tmds);
2963  if (ret < 0)
2964  return ret;
2965 
2966  return 0;
2967 }
static int write_reg_mask(struct tda998x_dev *dev, enum tda998x_hdmi_reg reg, uint8_t mask, uint8_t val)
Register Mask Write Write a value with mask bits to a register.
Definition: tda998x.c:1371

Variable Documentation

◆ pll_sc

uint8_t pll_sc

PLL scaler