hal: pinephone-pro-camera: cleanup

this doesn't change any functionality; just shuffling things around and better documenting the bits
This commit is contained in:
2024-11-29 18:41:37 +00:00
parent de182e117d
commit 983e2043bc

View File

@@ -6,12 +6,14 @@
// - pmOS has IMX258 debugging info: <https://wiki.pine64.org/wiki/PinePhone_Pro/IMX258_Camera_Debugging>
// - <https://elinux.org/images/9/94/ISP-presentation.pdf>
//
// STATUS (2024-11-28):
// STATUS (2024-11-29):
// - megapixels-next can preview and capture the imx258 rear camera!
// - this *requires* that ov8858 be fully disabled
// not only ucam can't be enabled in DT, but even isp0 must be disabled else the pipeline will try to render an (empty) ov8858!
// - disabling isp0 breaks pipewire; dmesg log spam: `rt5640 1-001c: ASoC: error at snd_soc_dai_set_sysclk on rt5640-aif1: -22`
// - snapshot *does not work*, but that could be due to pipewire faultiness
// however, this is due to a bug in nixpkgs' libcamera packaging
// pull the fix and isp0 can be disabled w/o breaking pipewire: <https://github.com/NixOS/nixpkgs/pull/353336>
// - snapshot works, only if the libcamera + pipewire fix is pulled
//
//////////
// this is taken mostly verbatim from pine64-org / megi.
@@ -147,8 +149,6 @@
// // assigned-clock-rates = <200000000>, <24000000>;
// // assigned-clock-parents = <&cru SCLK_CIF_OUT_SRC>, <&cru PLL_GPLL>;
assigned-clocks = <&cru SCLK_CIF_OUT>;
assigned-clock-rates = <24000000>;
// // // assigned-clocks = <&cru SCLK_CIF_OUT &cru SCLK_CIF_OUT_SRC>;
// // // assigned-clock-parents = <&cru SCLK_CIF_OUT_SRC &cru PLL_GPLL>;
// // // assigned-clock-rates = <19200000 0>;
@@ -163,6 +163,12 @@
clocks = <&cru SCLK_CIF_OUT>;
clock-names = "xvclk";
assigned-clocks = <&cru SCLK_CIF_OUT>;
// nominal frequency seems to be 19200000, but driver complains that PPP can't actually generate a frequency that precise:
// `imx258 1-001a: input clock frequency of 19161291 not supported`
// assigned-clock-rates = <19200000>;
assigned-clock-rates = <24000000>;
vif-supply = <&vcc1v8_dvp>;
i2c-supply = <&vcca1v8_codec>;
/*XXX: also depends on vcca1v8_codec for I2C bus power (currently always on) */
@@ -180,7 +186,22 @@
wcam_out: endpoint {
remote-endpoint = <&mipi_in_wcam>;
data-lanes = <1 2 3 4>;
link-frequencies = /bits/ 64 <636000000>; //< seems to be optional
// link frequencies = list of supported lane (?) frequencies.
// i believe this is defined in the camera driver:
// static const s64 link_freq_menu_items_19_2[] = {
// 633600000ULL,
// 320000000ULL,
// };
//
// static const s64 link_freq_menu_items_24[] = {
// 636000000ULL,
// 321000000ULL,
// };
link-frequencies = /bits/ 64 <636000000>;
// link-frequencies = /bits/ 64 <320000000 633600000>;
// link-frequencies = /bits/ 64 <321000000 636000000>;
// link-frequencies = /bits/ 64 <321000000>;
};
};
};