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:
@@ -6,12 +6,14 @@
|
|||||||
// - pmOS has IMX258 debugging info: <https://wiki.pine64.org/wiki/PinePhone_Pro/IMX258_Camera_Debugging>
|
// - pmOS has IMX258 debugging info: <https://wiki.pine64.org/wiki/PinePhone_Pro/IMX258_Camera_Debugging>
|
||||||
// - <https://elinux.org/images/9/94/ISP-presentation.pdf>
|
// - <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!
|
// - megapixels-next can preview and capture the imx258 rear camera!
|
||||||
// - this *requires* that ov8858 be fully disabled
|
// - 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!
|
// 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`
|
// - 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.
|
// this is taken mostly verbatim from pine64-org / megi.
|
||||||
@@ -147,8 +149,6 @@
|
|||||||
// // assigned-clock-rates = <200000000>, <24000000>;
|
// // assigned-clock-rates = <200000000>, <24000000>;
|
||||||
// // assigned-clock-parents = <&cru SCLK_CIF_OUT_SRC>, <&cru PLL_GPLL>;
|
// // 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-clocks = <&cru SCLK_CIF_OUT &cru SCLK_CIF_OUT_SRC>;
|
||||||
// // // assigned-clock-parents = <&cru SCLK_CIF_OUT_SRC &cru PLL_GPLL>;
|
// // // assigned-clock-parents = <&cru SCLK_CIF_OUT_SRC &cru PLL_GPLL>;
|
||||||
// // // assigned-clock-rates = <19200000 0>;
|
// // // assigned-clock-rates = <19200000 0>;
|
||||||
@@ -163,6 +163,12 @@
|
|||||||
clocks = <&cru SCLK_CIF_OUT>;
|
clocks = <&cru SCLK_CIF_OUT>;
|
||||||
clock-names = "xvclk";
|
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>;
|
vif-supply = <&vcc1v8_dvp>;
|
||||||
i2c-supply = <&vcca1v8_codec>;
|
i2c-supply = <&vcca1v8_codec>;
|
||||||
/*XXX: also depends on vcca1v8_codec for I2C bus power (currently always on) */
|
/*XXX: also depends on vcca1v8_codec for I2C bus power (currently always on) */
|
||||||
@@ -180,7 +186,22 @@
|
|||||||
wcam_out: endpoint {
|
wcam_out: endpoint {
|
||||||
remote-endpoint = <&mipi_in_wcam>;
|
remote-endpoint = <&mipi_in_wcam>;
|
||||||
data-lanes = <1 2 3 4>;
|
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>;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user