|
4 | 4 | * Copyright (c) 2025 Linaro Ltd |
5 | 5 | */ |
6 | 6 |
|
| 7 | +#include <dt-bindings/media/qcom,sm8550-iris.h> |
| 8 | + |
7 | 9 | #include "iris_core.h" |
8 | 10 | #include "iris_ctrls.h" |
9 | 11 | #include "iris_hfi_gen2.h" |
@@ -762,6 +764,28 @@ static void iris_set_sm8550_preset_registers(struct iris_core *core) |
762 | 764 | writel(0x0, core->reg_base + 0xB0088); |
763 | 765 | } |
764 | 766 |
|
| 767 | +static int sm8550_init_cb_devs(struct iris_core *core) |
| 768 | +{ |
| 769 | + const u32 f_ids_np[] = {1, IRIS_NON_PIXEL_VCODEC}; |
| 770 | + const u32 f_ids_p[] = {1, IRIS_PIXEL}; |
| 771 | + |
| 772 | + core->dev_np = iris_create_cb_dev(core, "iris_non_pixel", f_ids_np); |
| 773 | + if (!core->dev_np) |
| 774 | + return -ENODEV; |
| 775 | + |
| 776 | + core->dev_p = iris_create_cb_dev(core, "iris_pixel", f_ids_p); |
| 777 | + if (!core->dev_p) |
| 778 | + goto unreg_dev_np; |
| 779 | + |
| 780 | + return 0; |
| 781 | + |
| 782 | +unreg_dev_np: |
| 783 | + device_unregister(core->dev_np); |
| 784 | + core->dev_np = NULL; |
| 785 | + |
| 786 | + return -ENODEV; |
| 787 | +} |
| 788 | + |
765 | 789 | static const struct icc_info sm8550_icc_table[] = { |
766 | 790 | { "cpu-cfg", 1000, 1000 }, |
767 | 791 | { "video-mem", 1000, 15000000 }, |
@@ -1016,6 +1040,7 @@ const struct iris_platform_data sm8550_data = { |
1016 | 1040 | .get_vpu_buffer_size = iris_vpu_buf_size, |
1017 | 1041 | .vpu_ops = &iris_vpu3_ops, |
1018 | 1042 | .set_preset_registers = iris_set_sm8550_preset_registers, |
| 1043 | + .init_cb_devs = sm8550_init_cb_devs, |
1019 | 1044 | .icc_tbl = sm8550_icc_table, |
1020 | 1045 | .icc_tbl_size = ARRAY_SIZE(sm8550_icc_table), |
1021 | 1046 | .clk_rst_tbl = sm8550_clk_reset_table, |
|
0 commit comments