162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci 362306a36Sopenharmony_ci#ifndef VC4_MOCK_H_ 462306a36Sopenharmony_ci#define VC4_MOCK_H_ 562306a36Sopenharmony_ci 662306a36Sopenharmony_ci#include "../vc4_drv.h" 762306a36Sopenharmony_ci 862306a36Sopenharmony_cistatic inline 962306a36Sopenharmony_cistruct drm_crtc *vc4_find_crtc_for_encoder(struct kunit *test, 1062306a36Sopenharmony_ci struct drm_device *drm, 1162306a36Sopenharmony_ci struct drm_encoder *encoder) 1262306a36Sopenharmony_ci{ 1362306a36Sopenharmony_ci struct drm_crtc *crtc; 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci KUNIT_ASSERT_EQ(test, hweight32(encoder->possible_crtcs), 1); 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci drm_for_each_crtc(crtc, drm) 1862306a36Sopenharmony_ci if (encoder->possible_crtcs & drm_crtc_mask(crtc)) 1962306a36Sopenharmony_ci return crtc; 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci return NULL; 2262306a36Sopenharmony_ci} 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_cistruct vc4_dummy_plane { 2562306a36Sopenharmony_ci struct vc4_plane plane; 2662306a36Sopenharmony_ci}; 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_cistruct vc4_dummy_plane *vc4_dummy_plane(struct kunit *test, 2962306a36Sopenharmony_ci struct drm_device *drm, 3062306a36Sopenharmony_ci enum drm_plane_type type); 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_cistruct vc4_dummy_crtc { 3362306a36Sopenharmony_ci struct vc4_crtc crtc; 3462306a36Sopenharmony_ci}; 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_cistruct vc4_dummy_crtc *vc4_mock_pv(struct kunit *test, 3762306a36Sopenharmony_ci struct drm_device *drm, 3862306a36Sopenharmony_ci struct drm_plane *plane, 3962306a36Sopenharmony_ci const struct vc4_crtc_data *data); 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_cistruct vc4_dummy_output { 4262306a36Sopenharmony_ci struct vc4_encoder encoder; 4362306a36Sopenharmony_ci struct drm_connector connector; 4462306a36Sopenharmony_ci}; 4562306a36Sopenharmony_ci 4662306a36Sopenharmony_ci#define encoder_to_vc4_dummy_output(_enc) \ 4762306a36Sopenharmony_ci container_of_const(_enc, struct vc4_dummy_output, encoder.base) 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_cistruct vc4_dummy_output *vc4_dummy_output(struct kunit *test, 5062306a36Sopenharmony_ci struct drm_device *drm, 5162306a36Sopenharmony_ci struct drm_crtc *crtc, 5262306a36Sopenharmony_ci enum vc4_encoder_type vc4_encoder_type, 5362306a36Sopenharmony_ci unsigned int kms_encoder_type, 5462306a36Sopenharmony_ci unsigned int connector_type); 5562306a36Sopenharmony_ci 5662306a36Sopenharmony_cistruct vc4_dev *vc4_mock_device(struct kunit *test); 5762306a36Sopenharmony_cistruct vc4_dev *vc5_mock_device(struct kunit *test); 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ciint vc4_mock_atomic_add_output(struct kunit *test, 6062306a36Sopenharmony_ci struct drm_atomic_state *state, 6162306a36Sopenharmony_ci enum vc4_encoder_type type); 6262306a36Sopenharmony_ciint vc4_mock_atomic_del_output(struct kunit *test, 6362306a36Sopenharmony_ci struct drm_atomic_state *state, 6462306a36Sopenharmony_ci enum vc4_encoder_type type); 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci#endif // VC4_MOCK_H_ 67