Looks like I'm lucky indeed - the US+ datasheet mentions there's a TSGEN block in the memory map. Could you please elaborate on how the CS framework can enable it? I would suspect there are some coresight-timestamp-like bindings, but I can't see anything related. How can I tell the driver where the timestamp generator is mapped?
I'm not sure you can, at any rate I can't see the code for it in the upstream source. But it's something the framework is meant to do. You'd have to modify the framework to read the timestamp generator address from the DTS and then enable/disable it under control of a reference count.
If you have the base physical address of the timestamp control registers (you may have two regions, one for control registers and one for read registers - you want the control registers), the enable bit is bit 0 of word 0. You can read it like this:
busybox devmem xxxxxx 32
where xxxxx is the base address. You might see either 0x00000000 or 0x00000002. If the bottom bit is set then the timestamp is already enabled. Otherwise enable it by writing back e.g.
busybox devmem xxxxxx 32 1
I'm only guessing that that's the issue here - it could be something different, but it's worth a try.
Al