static bool calculate_input_system_channel_cfg(
    input_system_channel_t		*channel,
    input_system_input_port_t	*input_port,
    input_system_cfg_t		*isys_cfg,
    input_system_channel_cfg_t	*channel_cfg)
{
    bool rc;

    rc = calculate_stream2mmio_cfg(
             channel,
             input_port,
             isys_cfg,
             &(channel_cfg->stream2mmio_cfg));
    if (rc == false)
        return false;

    rc = calculate_ibuf_ctrl_cfg(
             channel,
             input_port,
             isys_cfg,
             &(channel_cfg->ibuf_ctrl_cfg));
    if (rc == false)
        return false;

    rc = calculate_isys2401_dma_cfg(
             channel,
             input_port,
             isys_cfg,
             &(channel_cfg->dma_cfg));
    if (rc == false)
        return false;

    rc = calculate_isys2401_dma_port_cfg(
             channel,
             input_port,
             isys_cfg,
             false,
             &(channel_cfg->dma_src_port_cfg));
    if (rc == false)
        return false;

    rc = calculate_isys2401_dma_port_cfg(
             channel,
             input_port,
             isys_cfg,
             false,
             &(channel_cfg->dma_dest_port_cfg));
    if (rc == false)
        return false;

    return true;
}
static bool calculate_input_system_channel_cfg(
	input_system_channel_t		*channel,
	input_system_input_port_t	*input_port,
	input_system_cfg_t		*isys_cfg,
	input_system_channel_cfg_t	*channel_cfg,
	bool metadata)
{
	bool rc;

	rc = calculate_stream2mmio_cfg(isys_cfg, metadata,
			&(channel_cfg->stream2mmio_cfg));
	if (rc == false)
		return false;

	rc = calculate_ibuf_ctrl_cfg(
			channel,
			input_port,
			isys_cfg,
			&(channel_cfg->ibuf_ctrl_cfg));
	if (rc == false)
		return false;
	if (metadata)
		channel_cfg->ibuf_ctrl_cfg.stores_per_frame = isys_cfg->metadata.lines_per_frame;

	rc = calculate_isys2401_dma_cfg(
			channel,
			isys_cfg,
			&(channel_cfg->dma_cfg));
	if (rc == false)
		return false;

	rc = calculate_isys2401_dma_port_cfg(
			isys_cfg,
			false,
			metadata,
			&(channel_cfg->dma_src_port_cfg));
	if (rc == false)
		return false;

	rc = calculate_isys2401_dma_port_cfg(
			isys_cfg,
			isys_cfg->raw_packed,
			metadata,
			&(channel_cfg->dma_dest_port_cfg));
	if (rc == false)
		return false;

	return true;
}