blob: b02647ec0cb7d3faf80ffdb4dcc18a9de189a472 [file] [log] [blame]
/* SPDX-License-Identifier: GPL-2.0-only */
#include "qm35-sscd.h"
#define NAME "uwb"
void release_coredump(struct device *dev)
{
}
int report_coredump(struct qm35_ctx *qm35_ctx)
{
struct coredump_layer *layer = &qm35_ctx->coredump_layer;
struct sscd_platform_data *sscd_pdata = &qm35_ctx->sscd->sscd_pdata;
struct sscd_info *sscd_info = &qm35_ctx->sscd->sscd_info;
if (!layer || !sscd_pdata || !sscd_info || !sscd_pdata->sscd_report)
return 1;
sscd_info->seg_count = 0;
sscd_info->name = NAME;
sscd_info->segs[0].addr = layer->coredump_data;
sscd_info->segs[0].size = layer->coredump_size;
sscd_info->seg_count = 1;
return sscd_pdata->sscd_report(&qm35_ctx->sscd->sscd_dev,
sscd_info->segs, sscd_info->seg_count, 0,
"qm35 coredump");
}
int register_coredump(struct spi_device *spi, struct qm35_ctx *qm35_ctx)
{
struct sscd_desc *sscd;
sscd = devm_kzalloc(&spi->dev, sizeof(*sscd), GFP_KERNEL);
if (!sscd)
return -ENOMEM;
sscd->sscd_dev.name = NAME;
sscd->sscd_dev.driver_override = SSCD_NAME;
sscd->sscd_dev.id = -1;
sscd->sscd_dev.dev.platform_data = &sscd->sscd_pdata;
sscd->sscd_dev.dev.release = release_coredump;
qm35_ctx->sscd = sscd;
return platform_device_register(&qm35_ctx->sscd->sscd_dev);
}
void unregister_coredump(struct sscd_desc *sscd)
{
platform_device_unregister(&sscd->sscd_dev);
}