Path: blob/main/sys/contrib/dev/broadcom/brcm80211/brcmfmac/debug.c
178665 views
// SPDX-License-Identifier: ISC1/*2* Copyright (c) 2012 Broadcom Corporation3*/4#include <linux/debugfs.h>5#include <linux/netdevice.h>6#include <linux/module.h>7#include <linux/devcoredump.h>89#include <brcmu_wifi.h>10#include <brcmu_utils.h>11#include "core.h"12#include "bus.h"13#include "fweh.h"14#include "debug.h"1516int brcmf_debug_create_memdump(struct brcmf_bus *bus, const void *data,17size_t len)18{19#if defined(__linux__)20void *dump;21#elif defined(__FreeBSD__)22u8 *dump;23#endif24size_t ramsize;25int err;2627ramsize = brcmf_bus_get_ramsize(bus);28if (!ramsize)29return -ENOTSUPP;3031dump = vzalloc(len + ramsize);32if (!dump)33return -ENOMEM;3435if (data && len > 0)36memcpy(dump, data, len);37err = brcmf_bus_get_memdump(bus, dump + len, ramsize);38if (err) {39vfree(dump);40return err;41}4243dev_coredumpv(bus->dev, dump, len + ramsize, GFP_KERNEL);4445return 0;46}4748struct dentry *brcmf_debugfs_get_devdir(struct brcmf_pub *drvr)49{50return drvr->wiphy->debugfsdir;51}5253void brcmf_debugfs_add_entry(struct brcmf_pub *drvr, const char *fn,54int (*read_fn)(struct seq_file *seq, void *data))55{56WARN(!drvr->wiphy->debugfsdir, "wiphy not (yet) registered\n");57#if defined(__linux__)58debugfs_create_devm_seqfile(drvr->bus_if->dev, fn,59drvr->wiphy->debugfsdir, read_fn);60#elif defined(__FreeBSD__)61pr_debug("%s: TODO\n", __func__);62#endif63}646566