blob: 272b2cc3a6a59cb16f36f312051d407a6dbb5706 [file] [log] [blame]
// Copyright 2023 Google LLC
// Copyright lowRISC contributors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// Camera control module for HiMax HM01B0 Image Sensor.
`include "prim_assert.sv"
module cam_ctrl
import cam_ctrl_reg_pkg::*;
(
input clk_i,
input rst_ni,
// Bus interface
input tlul_pkg::tl_h2d_t tl_i,
output tlul_pkg::tl_d2h_t tl_o,
output intr_cam_motion_detect_o,
input cio_cam_int_i,
output cio_cam_trig_o,
output cio_cam_trig_en_o
);
cam_ctrl_reg2hw_t reg2hw;
cam_ctrl_hw2reg_t hw2reg;
// Register module
cam_ctrl_reg_top u_reg (
.clk_i,
.rst_ni,
.tl_i,
.tl_o,
.reg2hw,
.hw2reg,
.intg_err_o (),
.devmode_i (1'b1)
);
prim_intr_hw #(.Width(1)) intr_hw_motion_detect (
.clk_i,
.rst_ni,
.event_intr_i (cio_cam_int_i),
.reg2hw_intr_enable_q_i (reg2hw.intr_enable.q),
.reg2hw_intr_test_q_i (reg2hw.intr_test.q),
.reg2hw_intr_test_qe_i (reg2hw.intr_test.qe),
.reg2hw_intr_state_q_i (reg2hw.intr_state.q),
.hw2reg_intr_state_de_o (hw2reg.intr_state.de),
.hw2reg_intr_state_d_o (hw2reg.intr_state.d),
.intr_o (intr_cam_motion_detect_o)
);
////////////////////////////////////////////////////
// Software controls cam_trig //
////////////////////////////////////////////////////
assign cio_cam_trig_o = reg2hw.ctrl[0];
assign cio_cam_trig_en_o = 1'b1;
endmodule