piSmasher Configuration Libraries
piSmasher peripheral device configuration libraries

Functions

static int tda998x_vidin_set_blanking (struct tda998x_dev *dev, enum vip_cntrl_4_blnkit src, enum vip_cntrl_4_blc code)
 Set Video Input Blanking Source and Code. More...
 
static int tda998x_vidin_set_config (struct tda998x_dev *dev, enum tda998x_vidin_mode vin_mode, enum tda998x_vid_fmt vout_fmt, enum tda998x_format_3d format_3d, enum tda998x_pix_edge edge, enum tda998x_pix_rate pix_rate, enum tda998x_upsample upsampleMode)
 
static int tda998x_vidin_set_fine (struct tda998x_dev *dev, enum vip_cntrl_3_sp_sync sp_sync, uint8_t sp_cnt, enum vip_cntrl_5_clkpol clkpol)
 Set Video Input Fine. More...
 
static int tda998x_vidin_set_mapping (struct tda998x_dev *dev, const enum vip_cntrl_swap *swap, const enum vip_cntrl_mirr *mirr)
 Set Video Input Port Mapping. More...
 
static int tda998x_vidin_set_port_enable (struct tda998x_dev *dev)
 Set Video Input Port Pin Enable. More...
 
static int tda998x_vidin_set_sync (struct tda998x_dev *dev, enum vip_cntrl_3_emb emb, enum tbg_cntrl_0_sync_mthd mthd, bool tgl_v, bool tgl_h, bool tgl_x, uint16_t ref_pix, uint16_t ref_line)
 Set Video Input Synchronization. More...
 

Detailed Description

Function Documentation

◆ tda998x_vidin_set_blanking()

static int tda998x_vidin_set_blanking ( struct tda998x_dev dev,
enum vip_cntrl_4_blnkit  src,
enum vip_cntrl_4_blc  code 
)
static

#include <projects/lib/tda998x.c>

Set Video Input Blanking Source and Code.

Parameters
devTDA998x device structure pointer
srcBlanking source
codeBlanking code
Returns
0 on success, non-zero error status otherwise
2986 {
2987  int ret;
2988 
2989  ret = write_reg_mask(dev,
2990  VIP_CNTRL_4,
2991  VIP_CNTRL_4_BLNKIT_MASK | VIP_CNTRL_4_BLC_MASK,
2992  (uint8_t) src | (uint8_t) code);
2993  if (ret < 0)
2994  return ret;
2995 
2996  return 0;
2997 }
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
Definition: tda998x.c:648

◆ tda998x_vidin_set_fine()

static int tda998x_vidin_set_fine ( struct tda998x_dev dev,
enum vip_cntrl_3_sp_sync  sp_sync,
uint8_t  sp_cnt,
enum vip_cntrl_5_clkpol  clkpol 
)
static

#include <projects/lib/tda998x.c>

Set Video Input Fine.

Parameters
devTDA998x device structure pointer
sp_syncSubpacket synchronization selection
sp_cntSubpacket count
clkpolClock polarity
Returns
0 on success, non-zero error status otherwise
3151 {
3152  int ret;
3153 
3154  if (dev == NULL)
3155  return ERR_NULL_PARAM;
3156 
3157  if (sp_sync == SPSYNC_FIXED) {
3158  ret = write_reg_mask(dev,
3159  VIP_CNTRL_5,
3160  VIP_CNTRL_5_SP_CNT_MASK,
3161  sp_cnt << 1);
3162  if (ret < 0)
3163  return ret;
3164 
3165  ret = write_reg_mask(dev,
3166  VIP_CNTRL_3,
3167  VIP_CNTRL_3_SP_SYNC_MASK,
3168  (uint8_t) SPSYNC_FIXED);
3169  if (ret < 0)
3170  return ret;
3171  } else {
3172  ret = write_reg_mask(dev,
3173  VIP_CNTRL_5,
3174  VIP_CNTRL_5_SP_CNT_MASK,
3175  0);
3176  if (ret < 0)
3177  return ret;
3178 
3179  ret = write_reg_mask(dev,
3180  VIP_CNTRL_3,
3181  VIP_CNTRL_3_SP_SYNC_MASK,
3182  (uint8_t) sp_sync);
3183  if (ret < 0)
3184  return ret;
3185  }
3186 
3187  ret = write_reg_mask(dev,
3188  VIP_CNTRL_5,
3189  VIP_CNTRL_5_CLKPOL,
3190  (uint8_t) clkpol);
3191  if (ret < 0)
3192  return ret;
3193 
3194  return 0;
3195 }
Definition: tda998x.c:647
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
Definition: tda998x.c:649

◆ tda998x_vidin_set_mapping()

static int tda998x_vidin_set_mapping ( struct tda998x_dev dev,
const enum vip_cntrl_swap *  swap,
const enum vip_cntrl_mirr mirr 
)
static

#include <projects/lib/tda998x.c>

Set Video Input Port Mapping.

Parameters
devTDA998x device structure pointer
swapPort swap mapping table pointer
mirrPort mirroring table pointer
Returns
0 on success, non-zero error code otherwise
3209 {
3210  int i, ret;
3211  uint8_t buf[3];
3212 
3213  /* Check parameters */
3214  if ((dev == NULL) || (swap == NULL) || (mirr == NULL))
3215  return ERR_NULL_PARAM;
3216 
3217  for (i = 0; i < VIP_CNTRL_LEN; i++) {
3218  buf[i] = (uint8_t) swap[2 * i];
3219  buf[i] |= (uint8_t) swap[(2 * i) + 1] << 4;
3220  buf[i] |= (uint8_t) mirr[2 * i] << 3;
3221  buf[i] |= (uint8_t) mirr[(2 * i) + 1] << 7;
3222  }
3223 
3224  ret = tda998x_write(dev, VIP_CNTRL_0, VIP_CNTRL_LEN, buf);
3225  if (ret < 0)
3226  return ret;
3227 
3228  return 0;
3229 }
static int tda998x_write(struct tda998x_dev *dev, enum tda998x_hdmi_reg reg, uint8_t len, uint8_t *data)
Write Data.
Definition: tda998x.c:1247
Definition: tda998x.c:644

◆ tda998x_vidin_set_port_enable()

static int tda998x_vidin_set_port_enable ( struct tda998x_dev dev)
static

#include <projects/lib/tda998x.c>

Set Video Input Port Pin Enable.

Parameters
devTDA998x device structure pointer
Returns
0 on success, non-zero error status otherwise
3239 {
3240  int ret;
3241  uint8_t buf[3] = { 0xFF, 0xFF, 0xFF };
3242 
3243  /* Check parameters */
3244  if (dev == NULL)
3245  return ERR_NULL_PARAM;
3246 
3247  ret = tda998x_write(dev, ENA_VP_0, 3, buf);
3248  if (ret < 0)
3249  return ret;
3250 
3251  return 0;
3252 }
static int tda998x_write(struct tda998x_dev *dev, enum tda998x_hdmi_reg reg, uint8_t len, uint8_t *data)
Write Data.
Definition: tda998x.c:1247

◆ tda998x_vidin_set_sync()

static int tda998x_vidin_set_sync ( struct tda998x_dev dev,
enum vip_cntrl_3_emb  emb,
enum tbg_cntrl_0_sync_mthd  mthd,
bool  tgl_v,
bool  tgl_h,
bool  tgl_x,
uint16_t  ref_pix,
uint16_t  ref_line 
)
static

#include <projects/lib/tda998x.c>

Set Video Input Synchronization.

Parameters
devTDA998x device structure pointer
srcSyncing source
mthdSyncing method
tgl_vToggle VS/VREF
tgl_hToggle HS/HREF
tgl_xToggle DE/FREF
ref_pix
ref_line
Returns
0 on success, non-zero error status otherwise
3276 {
3277  int ret;
3278  uint8_t reg_val;
3279 
3280  ret = write_reg_mask(dev,
3281  VIP_CNTRL_3,
3282  VIP_CNTRL_3_EMB,
3283  (uint8_t) emb);
3284  if (ret < 0)
3285  return ret;
3286 
3287  ret = write_reg_mask(dev,
3288  TBG_CNTRL_0,
3289  TBG_CNTRL_0_SYNC_MTHD,
3290  (uint8_t) mthd);
3291  if (ret < 0)
3292  return ret;
3293 
3294  reg_val = tgl_v ? VIP_CNTRL_3_V_TGL : 0;
3295  reg_val |= tgl_h ? VIP_CNTRL_3_H_TGL : 0;
3296  reg_val |= tgl_x ? VIP_CNTRL_3_X_TGL : 0;
3297 
3298  ret = write_reg_mask(dev,
3299  VIP_CNTRL_3,
3300  VIP_CNTRL_3_V_TGL | VIP_CNTRL_3_H_TGL | VIP_CNTRL_3_X_TGL,
3301  reg_val);
3302  if (ret < 0)
3303  return ret;
3304 
3305 // set_video_config(dev, struct tda998x_vid_frm *vid)
3306 
3307  if ((ref_pix >= REFPIX_MIN) &&
3308  (ref_pix <= REFPIX_MAX)) {
3309  ret = write_reg16(dev, REFPIX_MSB, ref_pix);
3310  if (ret < 0)
3311  return ret;
3312  }
3313 
3314  if ((ref_line >= REFLINE_MIN) &&
3315  (ref_line <= REFLINE_MAX)) {
3316  ret = write_reg16(dev, REFLINE_MSB, ref_line);
3317  if (ret < 0)
3318  return ret;
3319  }
3320 
3321  return 0;
3322 }
Definition: tda998x.c:647
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
static int write_reg16(struct tda998x_dev *dev, enum tda998x_hdmi_reg reg, uint16_t data)
Write 16-bit Register.
Definition: tda998x.c:1299