HW Camera
ISP¶
This information is based on Macbook Pro M1 2020 ISP. It may differ for other devices.
Sensor Type -> ISP Version¶
Sensor Type | ISP Version |
---|---|
0xee | 0xf |
0x54 | 0xb |
0x55 | 0xb |
0x56 | 0xb |
0x57 | 0xb |
0xe4 | 0xb |
0xe5 | 0xb |
0xe0 | 0xb |
0xe1 | 0xb |
0xe2 | 0xb |
0xe3 | 0xb |
0x1 | 0xb |
0x2 | 0xb |
0x3 | 0xb |
0xe8 | 0xc |
0xe7 | 0xc |
0xe9 | 0xc |
0xea | 0xc |
0x1a | 0xc |
0x1b | 0xc |
0xb | 0xb |
0xc | 0xb |
0xf5 | 0xb |
0xd | 0xc |
0xe | 0xc |
0x13 | 0xc |
0x14 | 0xc |
0x15 | 0xc |
0x16 | 0xc |
0x9a | 0xc |
0x5 | 0xc |
0x6 | 0xc |
0x7 | 0xc |
0x18 | 0xb |
0x19 | 0xb |
0x1c | 0xf |
0x1d | 0xf |
## Registers |
- ISP registers (regs[0]): Depending on chip revision different registers are used.
Register Name | ISP Version | ISP Revision? | Offset | Notes |
---|---|---|---|---|
ISP_REVISION | 0xF | N/A | 0x1800000 | 31:0 bits are used. ([31:0] == 0x1) => 0x15a ([31:0] != 0x1001) => 0x15b |
0xC | N/A | 0x1800000 | 31:0 bits are used. ([31:0] == 0x90) => 0x14a ([31:0] != 0x1090) => 0x14b ([31:0] == 0x3091) => 0x14c |
|
0xB | N/A | 0x1800000 | 31:0 bits are used. ([31:0] == 0x90) => 0x13a ([31:0] != 0x3091) => 0x13c |
|
--- | --- | --- | --- | --- |
SENSOR_REF_CLOCK0 | 0xF | != 0x15b | 0x24c41f0 | Sensor Ref Clock 0 |
0xF | == 0x15b | 0x24c41f4 | Sensor Ref Clock 0 | |
0xC | != 0x14c | 0x24c41d0 | Sensor Ref Clock 0 | |
0xC | == 0x14c | 0x2104190 | Sensor Ref Clock 0 | |
Other | * | 0x2104190 | Sensor Ref Clock 0 | |
SENSOR_REF_CLOCK1 | 0xF | != 0x15b | 0x24c41f4 | Sensor Ref Clock 1 |
0xF | == 0x15b | 0x24c41f8 | Sensor Ref Clock 1 | |
0xC | != 0x14c | 0x24c41d4 | Sensor Ref Clock 1 | |
0xC | == 0x14c | 0x2104194 | Sensor Ref Clock 1 | |
Other | * | 0x2104194 | Sensor Ref Clock 1 | |
SENSOR_REF_CLOCK2 | 0xF | != 0x15b | 0x24c41f8 | Sensor Ref Clock 2 |
0xF | == 0x15b | 0x24c41fc | Sensor Ref Clock 2 | |
0xC | != 0x14c | 0x24c41d8 | Sensor Ref Clock 2 | |
0xC | == 0x14c | 0x2104198 | Sensor Ref Clock 2 | |
Other | * | 0x2104198 | Sensor Ref Clock 2 | |
SENSOR_REF_CLOCK3 | 0xF | != 0x15b | 0x24c41fc | Sensor Ref Clock 3 |
0xF | == 0x15b | 0x24c4200 | Sensor Ref Clock 3 | |
0xC | != 0x14c | 0x24c41dc | Sensor Ref Clock 3 | |
0xC | == 0x14c | 0x210419c | Sensor Ref Clock 3 | |
--- | --- | --- | --- | --- |
POWER_ON? | 0xF | * | 0x24a0080 | Set to 0x1 during power on |
POWER_ON? | 0xC | != 0x14c | 0x24a0080 | Set to 0x1 during power on |
POWER_ON? | Other | * | 0x20e0080 | Set to 0x1 during power on |
--- | --- | --- | --- | --- |
UNKNOWN0 | 0xF | * | 0x24c41d0 | |
0xC | != 0x14c | 0x24c41b0 | ||
Other | Other | 0x2104170 | ||
UNKNOWN1 | 0xF | * | 0x24c41d4 | |
0xC | != 0x14c | 0x24c41b4 | ||
Other | Other | 0x2104174 | ||
UNKNOWN2 | 0xF | * | 0x24c41d8 | |
0xC | != 0x14c | 0x24c41b8 | ||
Other | Other | 0x2104178 | ||
UNKNOWN3 | 0xF | * | 0x24c41dc | |
0xC | != 0x14c | 0x24c41bc | ||
Other | Other | 0x210417c | ||
UNKNOWN4 | 0xF | * | 0x24c41e0 | |
0xC | != 0x14c | 0x24c41c0 | ||
Other | Other | 0x2104180 | ||
UNKNOWN5 | 0xF | * | 0x24c41e4 | |
0xC | != 0x14c | 0x24c41c4 | ||
Other | Other | 0x2104184 | ||
UNKNOWN6 | 0xF | * | 0x24c41e8 | |
0xC | != 0x14c | 0x24c41c8 | ||
Other | Other | 0x2104188 | ||
UNKNOWN7 | 0xF | * | 0x24c41ec | |
0xC | != 0x14c | 0x24c41cc | ||
0xC | * | 0x210418c | ||
0xB | * | 0x188 | ||
SMBUS_REG_MTXFIFO0 | * | * | 0x2110000 | I2C Channel 0 |
SMBUS_REG_MRXFIFO0 | * | * | 0x2110004 | |
SMBUS_REG_UNKNOWN0_1 | * | * | 0x2110008 | |
SMBUS_REG_UNKNOWN0_2* | * | * | 0x211000c | |
SMBUS_REG_UNKNOWN0_3* | * | * | 0x2110010 | |
SMBUS_REG_SMSTA0 | * | * | 0x2110014 | |
SMBUS_REG_UNKNOWN0_4 | * | * | 0x2110018 | |
SMBUS_REG_CTL0 | * | * | 0x211001c | |
SMBUS_REG_UNKNOWN0_5 | * | * | 0x2110030 | |
SMBUS_REG_UNKNOWN0_6 | * | * | 0x2110034 | |
SMBUS_REG_UNKNOWN0_7 | * | * | 0x211003c | |
--- | --- | --- | --- | --- |
SMBUS_REG_MTXFIFO1 | * | * | 0x2111000 | I2C Channel 1 |
SMBUS_REG_MRXFIFO1 | * | * | 0x2111004 | |
SMBUS_REG_UNKNOWN1_1 | * | * | 0x2111008 | |
SMBUS_REG_UNKNOWN1_2* | * | * | 0x211100c | |
SMBUS_REG_UNKNOWN1_3* | * | * | 0x2111010 | |
SMBUS_REG_SMSTA1 | * | * | 0x2111014 | |
SMBUS_REG_UNKNOWN1_4 | * | * | 0x2111018 | |
SMBUS_REG_CTL1 | * | * | 0x211101c | |
SMBUS_REG_UNKNOWN1_5 | * | * | 0x2111030 | |
SMBUS_REG_UNKNOWN1_6 | * | * | 0x2111034 | |
SMBUS_REG_UNKNOWN1_7 | * | * | 0x211103c | |
--- | --- | --- | --- | --- |
SMBUS_REG_MTXFIFO2 | * | * | 0x2112000 | I2C Channel 2 |
SMBUS_REG_MRXFIFO2 | * | * | 0x2112004 | |
SMBUS_REG_UNKNOWN2_1 | * | * | 0x2112008 | |
SMBUS_REG_UNKNOWN2_2* | * | * | 0x211200c | |
SMBUS_REG_UNKNOWN2_3* | * | * | 0x2112010 | |
SMBUS_REG_SMSTA2 | * | * | 0x2112014 | |
SMBUS_REG_UNKNOWN2_4 | * | * | 0x2112018 | |
SMBUS_REG_CTL2 | * | * | 0x211201c | |
SMBUS_REG_UNKNOWN2_5 | * | * | 0x2112030 | |
SMBUS_REG_UNKNOWN2_6 | * | * | 0x2112034 | |
SMBUS_REG_UNKNOWN2_7 | * | * | 0x211203c | |
--- | --- | --- | --- | --- |
SMBUS_REG_MTXFIFO3 | * | * | 0x2113000 | I2C Channel 3 |
SMBUS_REG_MRXFIFO3 | * | * | 0x2113004 | |
SMBUS_REG_UNKNOWN3_1 | * | * | 0x2113008 | |
SMBUS_REG_UNKNOWN3_2* | * | * | 0x211300c | |
SMBUS_REG_UNKNOWN3_3* | * | * | 0x2113010 | |
SMBUS_REG_SMSTA3 | * | * | 0x2113014 | |
SMBUS_REG_UNKNOWN3_4 | * | * | 0x2113018 | |
SMBUS_REG_CTL3 | * | * | 0x211301c | |
SMBUS_REG_UNKNOWN3_5 | * | * | 0x2113030 | |
SMBUS_REG_UNKNOWN3_6 | * | * | 0x2113034 | |
SMBUS_REG_UNKNOWN3_7 | * | * | 0x211303c | |
--- | --- | --- | --- | --- |
REG_DPE_UNKNOWN0 | * | * | 0x2504000 | |
REG_DPE_UNKNOWN1 | * | * | 0x2508000 | |
--- | --- | --- | --- | --- |
REG_UNKNOWN | * | * | 0x1050000 |
- Unknown (offset: 0x1400044)
- Unknown (offset: 0x1aa801c)
- PS registers (regs[1]): Depending on chip revision different register range is used. Most chip revisions seems to use 0x4000-0x4060
- Unknown (offset: 0x00)
- Unknown (offset: 0x08)
- Unknown (offset: 0x10)
- Unknown (offset: 0x18)
- Unknown (offset: 0x20)
- Unknown (offset: 0x28)
- Unknown (offset: 0x30)
- Unknown (offset: 0x38)
- Unknown (offset: 0x40)
- Unknown (offset: 0x328)
- Unknown (offset: 0x3d8)
- Unknown (offset: 0x4000)
- Unknown (offset: 0x4008)
- Unknown (offset: 0x4010)
- Unknown (offset: 0x4018)
- Unknown (offset: 0x4020)
- Unknown (offset: 0x4028)
- Unknown (offset: 0x4030)
- Unknown (offset: 0x4038)
- Unknown (offset: 0x4040)
- Unknown (offset: 0x4048)
- Unknown (offset: 0x4050)
- Unknown (offset: 0x4058)
- Unknown (offset: 0x4060)
- Unknown (offset: 0x1c3e8)
- Unknown (offset: 0x1c400)
- Unknown (offset: 0x1c418)
-
SOC SPMI CSR registers (regs[2])
- Unknown (offset: 0x80a0) (Initialized as 1 << 2^(1..5))
- Unknown (offset: 0x80a4) (Value here seems to be ORed with one of following values: 0x4000000, 0x8000000, 0x1, 0x2)
- Unknown (offset: 0x28) (Initialized as 0)
- Unknown (offset: 0x90) (Initialized as 1)
- Unknown (offset: 0x40) (Initialized as 0x4000000)
-
SOC SPMI0 registers (regs[3])
- Unknown (offset: 0x80a0) (Initialized as 1 << 2^(1..5))
- Unknown (offset: 0x80a4) (Value here seems to be ORed with one of following values: 0x4000000, 0x8000000, 0x1, 0x2)
- Unknown (offset: 0x28) (Initialized as 0)
- Unknown (offset: 0x90) (Initialized as 1)
- Unknown (offset: 0x40) (Initialized as 0x4000000)
-
SOC SPMI1 registers (regs[4])
- Unknown (offset: 0x80a0) (Initialized as 1 << 2^(1..5))
- Unknown (offset: 0x80a4) (Value here seems to be ORed with one of following values: 0x4000000, 0x8000000, 0x1, 0x2)
- Unknown (offset: 0x28) (Initialized as 0)
- Unknown (offset: 0x90) (Initialized as 1)
- Unknown (offset: 0x40) (Initialized as 0x4000000)