Skip to content

media: platform: raspberrypi: rp1_cfe: Add more debug registers#7338

Merged
njhollinghurst merged 1 commit intoraspberrypi:rpi-6.18.yfrom
njhollinghurst:cfe-more-debug
May 6, 2026
Merged

media: platform: raspberrypi: rp1_cfe: Add more debug registers#7338
njhollinghurst merged 1 commit intoraspberrypi:rpi-6.18.yfrom
njhollinghurst:cfe-more-debug

Conversation

@njhollinghurst
Copy link
Copy Markdown
Contributor

Dump ISP-FE registers FE_DEBUG_FIFO_FULLNESS and FE_DEBUG_STATUS2. The latter gives an atomic snapshot of state and frames completed.

Dump a CSI-2 Host register which shows which lanes are in LP11.

Dump some sticky error registers from the D-PHY and CSI-2 Host; note that they will be cleared on every read. This is harmless, since they are not used for any purpose other than debug.

Dump ISP-FE registers FE_DEBUG_FIFO_FULLNESS and FE_DEBUG_STATUS2.
The latter gives an atomic snapshot of state and frames completed.

Dump a CSI-2 Host register which shows which lanes are in LP11.

Dump some sticky error registers from the D-PHY and CSI-2 Host;
note that they will be cleared on every read. This is harmless,
since they are not used for any purpose other than debug.

Signed-off-by: Nick Hollinghurst <nick.hollinghurst@raspberrypi.com>
@njhollinghurst njhollinghurst requested review from 6by9 and naushir April 27, 2026 17:49
Copy link
Copy Markdown
Contributor

@6by9 6by9 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just the one query, otherwise looks fine.

struct dphy_data *dphy = s->private;
int ret;

ret = pm_runtime_resume_and_get(dphy->dev);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I might question whether it is better to use pm_runtime_get_if_in_use so that if the hardware isn't powered up you get told that rather than just getting the hardware defaults.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Quite possibly. I copied and pasted similar code from pisp_fe.c.

BTW I did also wonder about using debugfs_create_regset32() instead; but it wasn't clear how that might interact with the read-to-clear registers. Not sure what if anything it does for power management.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've just found the same in csi2.c as well. All might benefit from it, assuming that pm_runtime counting is actually correct.

Using regset only really gives a benefit if already using regset, and the CFE driver isn't.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's unclear whether or not those registers retain useful debug information about the previous session, while the CFE driver is not in use. However, I'm fairly sure the ISP-FE and CSI2AXI ones do, and we might still benefit from being able to read them. I will do some tests to check this...

Copy link
Copy Markdown
Contributor Author

@njhollinghurst njhollinghurst May 5, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, those sticky flags do persist between sessions.

We don't strictly seem to need pm_runtime_resume_and_get() here either (as we're not doing any PHY config bus transactions, and no other part of the MIPI block is getting de-clocked or powered down), but it feels safer to leave it in for now.

Copy link
Copy Markdown
Contributor

@naushir naushir left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@njhollinghurst njhollinghurst merged commit 82852ab into raspberrypi:rpi-6.18.y May 6, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants