Commit graph

1552 commits

Author SHA1 Message Date
Hector Martin
22adc922f7 chickens: Add T8112 chickens
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-06-28 01:41:23 +09:00
Hector Martin
b16a19715a chickens: Split off core sequences into separate files
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-06-28 01:41:23 +09:00
Hector Martin
e00e9574d0 tools/reg_filter.py: Decode trivial values into BIT()
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-06-28 01:41:23 +09:00
Hector Martin
d9c1ef7d49 cpu_regs: Add new defines for T8112 chickens
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-06-28 01:41:23 +09:00
Hector Martin
8a607f049f soc: Add T8112 defines
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-06-28 01:41:23 +09:00
Hector Martin
c947b600c7 main: Add a BRINGUP define to disable ~everything but UART
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-06-28 01:41:23 +09:00
James Calligeros
e2d671d597 hv/trace_mesa.py: add mesa tracer
Mesa is Apple's codename for the TouchID sensor. On M1-based
systems, it is connected to the SPI bus and communicates via
SIO on DMA channels 0x18 and 0x19. The application processors
seem to have very little to do with its operation.

After power on, the command buffer is encrypted by the SEP and
very little useful data can be gleaned from snooping the SIO
messages. While the commands are garbled by the SEP, we can see
that it has a few recurring themes:

* A power on routine involving some sort of calibration, perhaps
  to get a noise image to subtract from each fingerprint

* A polling mode where it is kicked by the kernel and acks if
  there's no finger on the sensor (runs while macOS waits for a
  print)

* A data transfer mode, where a SIO message is sent to an unmapped
  EP and the fingerprint scanned into memory. Likely triggered by
  an interrupt coming off the finger detection ring, but I haven't
  been able to verify this.

Signed-off-by: James Calligeros <jcalligeros99@gmail.com>
2022-06-21 17:22:16 +09:00
Vincent Duvert
66a85593db AFK: limit number of tries in start_interface
Signed-off-by: Vincent Duvert <vincent@duvert.net>
2022-06-21 17:20:54 +09:00
Martin Povišer
e2065decbe m1n1.trace.i2c: Clean up handling of page/immediate split
Also fix detection of read being a read of the page control register.

Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-06-21 17:20:30 +09:00
Martin Povišer
56d8de66db m1n1.hw.codecs.cs42l84: File the ohmmeter codec regmap
Move the regmap from experiments/ to a handier place. Also add the
codec to trace_codecs.py and codecshell.py.

Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-06-21 17:20:30 +09:00
Martin Povišer
0da13afda8 tools/codecshell.py: Add codec-poking shell
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-06-21 17:20:30 +09:00
Martin Povišer
a8bc1bc3f2 m1n1.hw.i2c: Add I2CRegMapDev base class
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-06-21 17:20:30 +09:00
Martin Povišer
46a5e0450c experiments/ohmmeter.py: Fill missing definitions
Fill in missing headset-interface-related registers into the regmap,
mostly by analogy with CS42L42.

Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-06-21 17:20:30 +09:00
Martin Povišer
d358563d6c hv/trace_codecs.py: Trace volume/gain on speaker amps
Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-06-21 17:20:30 +09:00
Martin Povišer
97d0130bcc m1n1.trace.i2c: Extend device tracing
Start new class I2CRegMapTracer to trace register accesses on devices
with the usual paged register maps.

Signed-off-by: Martin Povišer <povik@protonmail.com>
2022-06-21 17:20:30 +09:00
Janne Grunau
dc69227c96 hv/trace_nvme: Trace rtkit interface and remove hardcoded sart address
Signed-off-by: Janne Grunau <j@jannau.net>
2022-06-21 17:19:32 +09:00
Hector Martin
f3ce8a68d0 smp: Fix pathological thrashing with the hypervisor
Writing to the IPI register causes a trap, which sets the event...
causing every CPU to go into a tight loop of traps contended on the BHL.

We don't need to clear IPIs in WFE mode, so don't do that.

Signed-off-by: Hector Martin <marcan@marcan.st>
2022-06-19 21:53:42 +09:00
Hector Martin
849729f0c0 memory: Add GRE and nGRE mappings for experiments
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-06-19 21:53:06 +09:00
Hector Martin
c95189ba2e memory: Normalize naming of Normal-NC memory attributes
Signed-off-by: Hector Martin <marcan@marcan.st>
2022-06-19 16:12:16 +09:00
Hector Martin
ee2949e744 smp: Use stronger barriers around wfe/sev
Not sure if this fixes anything, but it looks more correct.

Signed-off-by: Hector Martin <marcan@marcan.st>
2022-06-19 15:21:59 +09:00
Asahi Lina
512982f4aa m1n1.agx.shim: New module
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:54:31 +09:00
Asahi Lina
51abb9082e m1n1.agx.render: New module
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:54:31 +09:00
Asahi Lina
2ffc9fb166 m1n1.agx.event: Add a new event manager class
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:54:31 +09:00
Asahi Lina
31dfb0c071 m1n1.agx.context: Add a pipeline object allocator
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:54:31 +09:00
Asahi Lina
9688aeb52c m1n1.agx: Handle faults
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:54:31 +09:00
Asahi Lina
b10a56f1ff m1n1.agx: Poll syslog channels first
This gets us the syslogs caused by a fault before the actual fault
raises an exception

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:54:31 +09:00
Asahi Lina
f829afcf80 m1n1.agx: Logging updates
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:54:31 +09:00
Asahi Lina
610f3e6a11 m1n1.agx.object: Support deallocation
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:54:31 +09:00
Asahi Lina
3fa3b5abd3 m1n1.agx.object: Support making mon tracking, align to end optional
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:54:31 +09:00
Asahi Lina
17142da838 m1n1.agx.object: Support setting guard page count
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:54:31 +09:00
Asahi Lina
6ce60e875c m1n1.agx.object: Be more efficient for pushes, verbose control
- Support compression
- Avoid pushing objects which haven't changed (optionally)

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:54:31 +09:00
Asahi Lina
f19625f8da m1n1.fw.agx: Disable some prints
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:54:31 +09:00
Asahi Lina
cd1803f6dc experiments/agx_1tri.py: Update for bunny frame, new structs
This will be obsolete soon anyway, but for now it runs...

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:54:28 +09:00
Asahi Lina
39f9844431 m1n1.fw.agx: Lots more structure updates / renames
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:54:22 +09:00
Asahi Lina
5a8c54c762 hv/trace_agx.py: Encoder ID filter example
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:37:22 +09:00
Asahi Lina
c34e9f95af m1n1.hw.uat: Do not always flush PTs, except for the internal allocator
This optimizes GPU submissions since the PTs can be flushed just once,
instead of for every UAT manipulation. But we need to flush for the
internal allocator since it is used by RTKit stuff that does not know
how to flush.

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:37:22 +09:00
Asahi Lina
0c9d64b80c m1n1.proxyutils: Improve compressed_writemem
Make progress arg optional, reduce compression. Spending more time on
gzip does not help speed things up (at least with USB).

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:37:22 +09:00
Asahi Lina
3de894576c m1n1.trace.agx: Do not pause after init by default
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:37:22 +09:00
Asahi Lina
2ecbe6f39b m1n1.trace.agx: Monitor some more initdata-referenced areas
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:37:22 +09:00
Asahi Lina
6335e20fae m1n1.trace.agx: Disable dumping some structures we know about
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 03:37:22 +09:00
Asahi Lina
129726ddbc m1n1.trace.agx: Add support for filtering by encoder ID
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 01:41:51 +09:00
Asahi Lina
5d245d6ba5 m1n1.utils: Support setting stride in chexdump()
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 01:36:56 +09:00
Asahi Lina
ffe2f4104e fb: Support XBGR pixel format for fb_blit()
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-19 01:36:41 +09:00
Asahi Lina
2d317ee515 m1n1/fw/agx/controllist.py: Improve tiler params struct
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-07 01:50:44 +09:00
Asahi Lina
72892e0b95 experiments/agx_1tri.py: Update magic addresses for flag demo
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-06 23:37:42 +09:00
Asahi Lina
a2affd834b m1n1.agx.context: Support passing block count to GPUBufferManager
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-06 23:37:42 +09:00
Asahi Lina
ff7a145d6f m1n1.agx.context: Support tracking userspace objects
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-06 23:37:42 +09:00
Asahi Lina
f7fe615251 m1n1.agx.context: Fix allocator protocol
.ctx needed for agx.reg_object() to work.

Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-06 23:37:42 +09:00
Asahi Lina
f6db8502d1 m1n1.agx.object: Allow aligning VAs properly
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-06 23:37:42 +09:00
Asahi Lina
77d6e75a1f experiments/agx_1tri.py: Clean up more fields/structs
Signed-off-by: Asahi Lina <lina@asahilina.net>
2022-06-06 23:37:42 +09:00