Is that for the 7285? Same cameras as the Surface Go 2. Here’s one of the definition of the cameras:
Device (CAM1)
{
Name (_ADR, Zero) // _ADR: Address
Name (_HID, "INT3474") // _HID: Hardware ID
Name (_CID, "INT3474") // _CID: Compatible ID
Name (_DDN, "OV2740-CRDG2") // _DDN: DOS Device Name
Name (_UID, "0") // _UID: Unique ID
Name (_DEP, Package (0x01) // _DEP: Dependencies
{
^^I2C2.PMIC
})
Name (_PLD, Package (0x01) // _PLD: Physical Location of Device
{
ToPLD (
PLD_Revision = 0x2,
PLD_IgnoreColor = 0x1,
PLD_Red = 0x0,
PLD_Green = 0x0,
PLD_Blue = 0x0,
PLD_Width = 0x0,
PLD_Height = 0x0,
PLD_UserVisible = 0x1,
PLD_Dock = 0x0,
PLD_Lid = 0x0,
PLD_Panel = "FRONT",
PLD_VerticalPosition = "CENTER",
PLD_HorizontalPosition = "RIGHT",
PLD_Shape = "VERTICALRECTANGLE",
PLD_GroupOrientation = 0x0,
PLD_GroupToken = 0x0,
PLD_GroupPosition = 0x0,
PLD_Bay = 0x0,
PLD_Ejectable = 0x1,
PLD_EjectRequired = 0x1,
PLD_CabinetNumber = 0x0,
PLD_CardCageNumber = 0x0,
PLD_Reference = 0x0,
PLD_Rotation = 0x0,
PLD_Order = 0x0,
PLD_VerticalOffset = 0xFFFF,
PLD_HorizontalOffset = 0xFFFF)
})
Method (_CRS, 0, NotSerialized) // _CRS: Current Resource Settings
{
Name (SBUF, ResourceTemplate ()
{
I2cSerialBusV2 (0x0036, ControllerInitiated, 0x00061A80,
AddressingMode7Bit, "\\_SB.PCI0.I2C4",
0x00, ResourceConsumer, , Exclusive,
)
})
Return (SBUF) /* \_SB_.PCI0.I2C4.CAM1._CRS.SBUF */
}
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((SCSS == One))
{
Return (0x0F)
}
Else
{
Return (Zero)
}
}
Method (SSDB, 0, NotSerialized)
{
Name (PAR, Buffer (0x6C)
{
/* 0000 */ 0x00, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .P......
/* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0010 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0018 */ 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x00, 0x00, // ........
/* 0020 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0028 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0030 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0038 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0040 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0048 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0050 */ 0x09, 0x00, 0x02, 0x01, 0x00, 0x01, 0x00, 0xF8, // ........
/* 0058 */ 0x24, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // $.......
/* 0060 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ........
/* 0068 */ 0x00, 0x00, 0x00, 0x00 // ....
})
Return (PAR) /* \_SB_.PCI0.I2C4.CAM1.SSDB.PAR_ */
}
Method (_DSM, 4, NotSerialized) // _DSM: Device-Specific Method
{
If ((Arg0 == ToUUID ("822ace8f-2814-4174-a56b-5f029fe079ee")))
{
Return ("4SF259T2")
}
If ((Arg0 == ToUUID ("26257549-9271-4ca4-bb43-c4899d5a4881")))
{
If ((Arg2 == One))
{
Return (One)
}
If ((Arg2 == 0x02))
{
Return (0x04003600)
}
}
Return (Buffer (One)
{
0x00 // .
})
}
}
}
Most of that looks like it should work with the stuff on the surface-linux thread, and there’s even a driver for ov2740 that might work. The additional problem we’re hitting with these is the _STA method in that ACPI definition doesn’t evaluate true, so the cameras never show up as i2c devices for whatever reason.
tl;dr still more work to do to get those operational unfortunately.