Skip to content
Merged
11 changes: 8 additions & 3 deletions acpi/ipu7/_cam_common_d457.asl
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,6 @@ Name (_DSD, Package () // _DSD: Device-Specific Data
Package () { "mipi-img-clock-frequency", 96000000 }, // 96 MHz

/*
* Sensor specific GPIOs, reset-gpios will be used by d4xx.c
* when devm_gpiod_get_optional is being called with "reset" consumer.
* For details, please refer to ACPI GPIO binding documentation
* https://www.kernel.org/doc/html/latest/firmware-guide/acpi/gpio-properties.html
*
Expand All @@ -76,7 +74,14 @@ Name (_DSD, Package () // _DSD: Device-Specific Data
* 1 is active low for reset
*
*/
Package () { "reset-gpios", Package () { DESCH_SER_GPIOREF, 0, 0, 1 } },
#ifdef DESCH_SER_FSIN_GPIO
Package () { "fsin-gpios", Package () { DESCH_SER_GPIOREF, 0, 0, 1 } },
#endif
#ifdef EXTERNAL_FRAME_SYNC
Package () { "gmsl-frame-sync-enable", EXTERNAL_FRAME_SYNC },
#else
Package () { "gmsl-frame-sync-enable", 0 }, // Disabled by default
#endif
},
ToUUID("dbb8e3e6-5886-4ba6-8795-1319f52a966b"), // Hierarchical Data Extension
Package ()
Expand Down
4 changes: 3 additions & 1 deletion acpi/ipu7/_cam_common_isx031.asl
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,9 @@ Name (_DSD, Package () // _DSD: Device-Specific Data
* 1 is active low for reset
*
*/
#ifdef DESCH_SER_RESET_GPIO
Package () { "reset-gpios", Package () { DESCH_SER_GPIOREF, 0, 0, 1 } },
#endif
/*
* FSIN GPIOs, fsin-gpios will be used by isx031.c
* when devm_gpiod_get_optional is being called with "fsin" consumer.
Expand All @@ -87,7 +89,7 @@ Name (_DSD, Package () // _DSD: Device-Specific Data
* 1 is active low for FSIN
*
*/
#ifdef EXTERNAL_FRAME_SYNC
#ifdef DESCH_SER_FSIN_GPIO
Package () { "fsin-gpios", Package () { DESCH_SER_GPIOREF, 0, 1, 1 } },
#endif
/*
Expand Down
18 changes: 10 additions & 8 deletions acpi/ipu7/_des_common_max96724.asl
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,8 @@
*/

#ifndef LINK_FREQ
#define LINK_FREQ_VAL 1000000000
#else
#define LINK_FREQ_VAL LINK_FREQ
#define LINK_FREQ 1000000000
#define LINK_FREQ_DEFAULTED
#endif

Name (_UID, Zero) // _UID: Unique ID
Expand Down Expand Up @@ -200,7 +199,7 @@ Name (PRT4, Package()
#else
Package () { "mipi-img-data-lanes", Package() { 1, 2 } }, // 2 lanes for CPHY/DPHY on Intel MIPI CRD
#endif
Package () { "mipi-img-link-frequencies", Package() { LINK_FREQ_VAL } }, // 1 GHz to be used by Intel IPU driver as link frequency
Package () { "mipi-img-link-frequencies", Package() { LINK_FREQ } }, // 1 GHz to be used by Intel IPU driver as link frequency
},
})

Expand All @@ -215,7 +214,7 @@ Name (PRT5, Package()
#else
Package () { "mipi-img-data-lanes", Package() { 1, 2 } }, // 2 lanes for CPHY/DPHY on Intel MIPI CRD
#endif
Package () { "mipi-img-link-frequencies", Package() { LINK_FREQ_VAL } }, // 1 GHz to be used by Intel IPU driver as link frequency
Package () { "mipi-img-link-frequencies", Package() { LINK_FREQ } }, // 1 GHz to be used by Intel IPU driver as link frequency
},
})

Expand All @@ -230,7 +229,7 @@ Name (PRT6, Package()
#else
Package () { "mipi-img-data-lanes", Package() { 1, 2 } }, // 2 lanes for CPHY/DPHY on Intel MIPI CRD
#endif
Package () { "mipi-img-link-frequencies", Package() { LINK_FREQ_VAL } }, // 1 GHz to be used by Intel IPU driver as link frequency
Package () { "mipi-img-link-frequencies", Package() { LINK_FREQ } }, // 1 GHz to be used by Intel IPU driver as link frequency
},
})

Expand All @@ -245,8 +244,11 @@ Name (PRT7, Package()
#else
Package () { "mipi-img-data-lanes", Package() { 1, 2 } }, // 2 lanes for CPHY/DPHY on Intel MIPI CRD
#endif
Package () { "mipi-img-link-frequencies", Package() { LINK_FREQ_VAL } }, // 1 GHz to be used by Intel IPU driver as link frequency
Package () { "mipi-img-link-frequencies", Package() { LINK_FREQ } }, // 1 GHz to be used by Intel IPU driver as link frequency
},
})

#undef LINK_FREQ_VAL
#ifdef LINK_FREQ_DEFAULTED
#undef LINK_FREQ
#undef LINK_FREQ_DEFAULTED
#endif
45 changes: 39 additions & 6 deletions acpi/ipu7/_ser_common_max9295.asl
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,30 @@
* DESCH_LINK_NUM - DES channel number (e.g. 0 for CH00, 1 for CH01), used in CSI2Bus
* DESCH_SER_I2C - SER I2C slave address (e.g. 0x40, 0x62), used in I2cSerialBusV2
* CAM_ALIAS - Camera alias I2C address used in i2c-alias-pool in _DSD
* DESCH_SER_EXTRA_GPIO_PIN - (Optional) SER Extra GPIO pin number, used in GpioIo
* DESCH_SER_RESET_GPIO - (Optional) SER Reset GPIO pin number, used in GpioIo
* DESCH_SER_FSIN_GPIO - (Optional) SER Extra GPIO pin number, used in GpioIo
* DESCH_SER_FSYNC_RX_ID - (Optional) GMSL GPIO ID the DES sends frame sync as, used in MFP node
* DESCH_SER_X/Y/Z/U_VC - (Optional) SER VC filter for Pipe X/Y/Z/U, specifically for MAX96717 driver
*/

#ifndef DESCH_SER_RESET_GPIO
#ifndef DESCH_SER_FSIN_GPIO

#define DESCH_SER_RESET_GPIO 0

#endif
#endif

#ifdef DESCH_SER_RESET_GPIO
#ifdef DESCH_SER_FSIN_GPIO

#if DESCH_SER_RESET_GPIO == DESCH_SER_FSIN_GPIO
#error "DESCH_SER_RESET_GPIO and DESCH_SER_FSIN_GPIO cannot be the same GPIO pin number"
#endif

#endif
#endif

Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (0x0F) // bit 0: device is present, bit 1: device is enabled, bit 2: device is shown in UI, bit 3: device is functional
Expand Down Expand Up @@ -72,9 +91,11 @@ Name(_CRS, ResourceTemplate () // _CRS: Current Resource Settings
DESCH_SER_PATH, // ResourceSourceIndex (Path to SER GPIO controller, e.g. "\\_SB.PC00.DESx.CHxx.SERx" based on which Link)
0) // ResourceUsage (Must be 0)
{
0, // Pin 0 (e.g. MFP0 on MAX9295)
#ifdef DESCH_SER_EXTRA_GPIO_PIN
DESCH_SER_EXTRA_GPIO_PIN, // Extra pin (e.g. MFP7 on MAX9295)
#ifdef DESCH_SER_RESET_GPIO
DESCH_SER_RESET_GPIO, // Pin 0 (e.g. MFP0 on MAX9295)
#endif
#ifdef DESCH_SER_FSIN_GPIO
DESCH_SER_FSIN_GPIO, // Extra pin (e.g. MFP7 on MAX9295)
#endif
}
})
Expand Down Expand Up @@ -112,10 +133,19 @@ Name (_DSD, Package () // _DSD: Device-Specific Data
Package () { "Pipe-Y", "PIPY" }, // Pipe Y
Package () { "Pipe-Z", "PIPZ" }, // Pipe Z
Package () { "Pipe-U", "PIPU" }, // Pipe U
#ifdef EXTERNAL_FRAME_SYNC
#ifdef DESCH_SER_FSYNC_RX_ID
#ifdef DESCH_SER_FSIN_GPIO
Package () { "fsync", "MFP" }, // fsync pin configuration
#endif
#endif
#endif
}
})

#ifdef EXTERNAL_FRAME_SYNC
#ifdef DESCH_SER_FSYNC_RX_ID
#ifdef DESCH_SER_FSIN_GPIO
Name (MFP, Package()
{
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), // Device Properties
Expand All @@ -124,11 +154,14 @@ Name (MFP, Package()
#ifdef DESCH_SER_FSYNC_RX_ID
Package () { "maxim,rx-id", DESCH_SER_FSYNC_RX_ID }, // GMSL GPIO ID sent by the DES
#endif
#ifdef DESCH_SER_EXTRA_GPIO_PIN
Package () { "gmsl-frame-sync-gpio-pin", DESCH_SER_EXTRA_GPIO_PIN },
#ifdef DESCH_SER_FSIN_GPIO
Package () { "gmsl-frame-sync-gpio-pin", DESCH_SER_FSIN_GPIO },
#endif
},
})
#endif
#endif
#endif

Name (PRT0, Package()
{
Expand Down
40 changes: 33 additions & 7 deletions acpi/ipu7/max96724_sensing_isx031_fs.asl
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@
* DESCH_SER_PATH - SERx ACPI path string (e.g. "\\_SB.PC00.DES0.CH00.SER0")
* DESCH_SER_REF - SERx ACPI namespace reference (e.g. \_SB.PC00.DES0.CH00.SER0)
* DESCH_SER_GPIOREF - SERx GPIO controller reference (e.g. ^^SER0)
* DESCH_SER_EXTRA_GPIO_PIN - Extra SER GPIO pin number (Sensing-specific, e.g. 7)
* DESCH_SER_RESET_GPIO - (Optional) SER RESET GPIO pin number (e.g. 0 for MFP0 of Serializer)
* DESCH_SER_FSIN_GPIO - (Optional) SER FSIN GPIO pin number (e.g. 7 for MFP7 of Serializer)
* DESCH_SER_FSYNC_RX_ID - (Optional) SER FSYNC RX pin ID (e.g. 7 to receive signal from MFP7 of Deserializer)
* EXTERNAL_FRAME_SYNC - Camera external frame sync FSIN GPIO enablement
* CAM_ALIAS - Camera alias I2C address used in i2c-alias-pool of the SER
* CAM_LANES - Number of MIPI data lanes for the camera (e.g. 2, 4)
Expand Down Expand Up @@ -71,7 +73,8 @@ DefinitionBlock ("", "SSDT", 2, "", "IMG_IPU", 0x20260821)
#define DESCH_SER_GPIOREF ^^SER0
#define CAM_ALIAS 0x54
#define CAM_LANES 4
#define DESCH_SER_EXTRA_GPIO_PIN 7
#define DESCH_SER_RESET_GPIO 0
#define DESCH_SER_FSIN_GPIO 7
#define DESCH_SER_FSYNC_RX_ID 7
#include "_des_ch_common_isx031.asl"

Expand All @@ -84,8 +87,15 @@ DefinitionBlock ("", "SSDT", 2, "", "IMG_IPU", 0x20260821)
#undef DESCH_LINK_NUM
#undef DESCH_SER_I2C
#undef DESCH_SER_GPIOREF
#undef DESCH_SER_EXTRA_GPIO_PIN
#ifdef DESCH_SER_RESET_GPIO
#undef DESCH_SER_RESET_GPIO
#endif
#ifdef DESCH_SER_FSIN_GPIO
#undef DESCH_SER_FSIN_GPIO
#endif
#ifdef DESCH_SER_FSYNC_RX_ID
#undef DESCH_SER_FSYNC_RX_ID
#endif
#undef EXTERNAL_FRAME_SYNC
#undef CAM_ALIAS
#undef CAM_LANES
Expand All @@ -100,7 +110,8 @@ DefinitionBlock ("", "SSDT", 2, "", "IMG_IPU", 0x20260821)
#define DESCH_LINK_NUM 1
#define DESCH_SER_I2C 0x40
#define DESCH_SER_GPIOREF ^^SER1
#define DESCH_SER_EXTRA_GPIO_PIN 7
#define DESCH_SER_RESET_GPIO 0
#define DESCH_SER_FSIN_GPIO 7
#define DESCH_SER_FSYNC_RX_ID 7
#define EXTERNAL_FRAME_SYNC 1
#define CAM_ALIAS 0x55
Expand All @@ -115,8 +126,15 @@ DefinitionBlock ("", "SSDT", 2, "", "IMG_IPU", 0x20260821)
#undef DESCH_LINK_NUM
#undef DESCH_SER_I2C
#undef DESCH_SER_GPIOREF
#undef DESCH_SER_EXTRA_GPIO_PIN
#ifdef DESCH_SER_RESET_GPIO
#undef DESCH_SER_RESET_GPIO
#endif
#ifdef DESCH_SER_FSIN_GPIO
#undef DESCH_SER_FSIN_GPIO
#endif
#ifdef DESCH_SER_FSYNC_RX_ID
#undef DESCH_SER_FSYNC_RX_ID
#endif
#undef EXTERNAL_FRAME_SYNC
#undef CAM_ALIAS
#undef CAM_LANES
Expand All @@ -128,7 +146,8 @@ DefinitionBlock ("", "SSDT", 2, "", "IMG_IPU", 0x20260821)
#define DESCH_CH_PATH "\\_SB.PC00.DES0.CH03"
#define DESCH_SER_PATH "\\_SB.PC00.DES0.CH03.SER3"
#define DESCH_SER_REF \_SB.PC00.DES0.CH03.SER3
#define DESCH_SER_EXTRA_GPIO_PIN 8
#define DESCH_SER_FSIN_GPIO 8
#define DESCH_SER_RESET_GPIO 0
#define DESCH_SER_FSYNC_RX_ID 7
#define EXTERNAL_FRAME_SYNC 1
#define DESCH_LINK_NUM 3
Expand All @@ -146,8 +165,15 @@ DefinitionBlock ("", "SSDT", 2, "", "IMG_IPU", 0x20260821)
#undef DESCH_LINK_NUM
#undef DESCH_SER_I2C
#undef DESCH_SER_GPIOREF
#undef DESCH_SER_EXTRA_GPIO_PIN
#ifdef DESCH_SER_RESET_GPIO
#undef DESCH_SER_RESET_GPIO
#endif
#ifdef DESCH_SER_FSIN_GPIO
#undef DESCH_SER_FSIN_GPIO
#endif
#ifdef DESCH_SER_FSYNC_RX_ID
#undef DESCH_SER_FSYNC_RX_ID
#endif
#undef EXTERNAL_FRAME_SYNC
#undef CAM_ALIAS
#undef CAM_LANES
Expand Down
Loading