Lines Matching full:bpmp
10 #include <soc/tegra/bpmp.h>
11 #include <soc/tegra/bpmp-abi.h>
73 /* map filename in Linux debugfs to corresponding entry in BPMP */
74 static const char *get_filename(struct tegra_bpmp *bpmp, in get_filename() argument
82 root_path = dentry_path(bpmp->debugfs_mirror, root_path_buf, in get_filename()
102 static int mrq_debug_open(struct tegra_bpmp *bpmp, const char *name, in mrq_debug_open() argument
129 err = tegra_bpmp_transfer(bpmp, &msg); in mrq_debug_open()
141 static int mrq_debug_close(struct tegra_bpmp *bpmp, uint32_t fd) in mrq_debug_close() argument
163 err = tegra_bpmp_transfer(bpmp, &msg); in mrq_debug_close()
172 static int mrq_debug_read(struct tegra_bpmp *bpmp, const char *name, in mrq_debug_read() argument
194 err = mrq_debug_open(bpmp, name, &fd, &len, 0); in mrq_debug_read()
207 err = tegra_bpmp_transfer(bpmp, &msg); in mrq_debug_read()
229 err = mrq_debug_close(bpmp, fd); in mrq_debug_read()
235 static int mrq_debug_write(struct tegra_bpmp *bpmp, const char *name, in mrq_debug_write() argument
258 err = mrq_debug_open(bpmp, name, &fd, &len, 1); in mrq_debug_write()
275 err = tegra_bpmp_transfer(bpmp, &msg); in mrq_debug_write()
288 err = mrq_debug_close(bpmp, fd); in mrq_debug_write()
298 struct tegra_bpmp *bpmp = inode->i_private; in bpmp_debug_show() local
319 filename = get_filename(bpmp, file, fnamebuf, sizeof(fnamebuf)); in bpmp_debug_show()
324 err = mrq_debug_open(bpmp, filename, &fd, &len, 0); in bpmp_debug_show()
332 err = tegra_bpmp_transfer(bpmp, &msg); in bpmp_debug_show()
351 err = mrq_debug_close(bpmp, fd); in bpmp_debug_show()
361 struct tegra_bpmp *bpmp = inode->i_private; in bpmp_debug_store() local
367 filename = get_filename(bpmp, file, fnamebuf, sizeof(fnamebuf)); in bpmp_debug_store()
380 err = mrq_debug_write(bpmp, filename, databuf, count); in bpmp_debug_store()
401 static int bpmp_populate_debugfs_inband(struct tegra_bpmp *bpmp, in bpmp_populate_debugfs_inband() argument
414 if (!bpmp || !parent || !ppath) in bpmp_populate_debugfs_inband()
427 err = mrq_debug_read(bpmp, ppath, buf, bufsize, &dsize); in bpmp_populate_debugfs_inband()
457 err = bpmp_populate_debugfs_inband(bpmp, dentry, in bpmp_populate_debugfs_inband()
466 dentry = debugfs_create_file(name, mode, parent, bpmp, in bpmp_populate_debugfs_inband()
482 static int mrq_debugfs_read(struct tegra_bpmp *bpmp, in mrq_debugfs_read() argument
510 err = tegra_bpmp_transfer(bpmp, &msg); in mrq_debugfs_read()
521 static int mrq_debugfs_write(struct tegra_bpmp *bpmp, in mrq_debugfs_write() argument
542 return tegra_bpmp_transfer(bpmp, &msg); in mrq_debugfs_write()
545 static int mrq_debugfs_dumpdir(struct tegra_bpmp *bpmp, dma_addr_t addr, in mrq_debugfs_dumpdir() argument
569 err = tegra_bpmp_transfer(bpmp, &msg); in mrq_debugfs_dumpdir()
584 struct tegra_bpmp *bpmp = inode->i_private; in debugfs_show() local
594 filename = get_filename(bpmp, file, buf, sizeof(buf)); in debugfs_show()
598 namevirt = dma_alloc_coherent(bpmp->dev, namesize, &namephys, in debugfs_show()
603 datavirt = dma_alloc_coherent(bpmp->dev, datasize, &dataphys, in debugfs_show()
613 err = mrq_debugfs_read(bpmp, namephys, len, dataphys, datasize, in debugfs_show()
619 dma_free_coherent(bpmp->dev, datasize, datavirt, dataphys); in debugfs_show()
621 dma_free_coherent(bpmp->dev, namesize, namevirt, namephys); in debugfs_show()
635 struct tegra_bpmp *bpmp = inode->i_private; in debugfs_store() local
645 filename = get_filename(bpmp, file, fnamebuf, sizeof(fnamebuf)); in debugfs_store()
649 namevirt = dma_alloc_coherent(bpmp->dev, namesize, &namephys, in debugfs_store()
654 datavirt = dma_alloc_coherent(bpmp->dev, datasize, &dataphys, in debugfs_store()
669 err = mrq_debugfs_write(bpmp, namephys, len, dataphys, in debugfs_store()
673 dma_free_coherent(bpmp->dev, datasize, datavirt, dataphys); in debugfs_store()
675 dma_free_coherent(bpmp->dev, namesize, namevirt, namephys); in debugfs_store()
688 static int bpmp_populate_dir(struct tegra_bpmp *bpmp, struct seqbuf *seqbuf, in bpmp_populate_dir() argument
706 /* malformed data received from BPMP */ in bpmp_populate_dir()
721 err = bpmp_populate_dir(bpmp, seqbuf, dentry, depth+1); in bpmp_populate_dir()
730 parent, bpmp, in bpmp_populate_dir()
740 static int bpmp_populate_debugfs_shmem(struct tegra_bpmp *bpmp) in bpmp_populate_debugfs_shmem() argument
749 virt = dma_alloc_coherent(bpmp->dev, sz, &phys, in bpmp_populate_debugfs_shmem()
754 err = mrq_debugfs_dumpdir(bpmp, phys, sz, &nbytes); in bpmp_populate_debugfs_shmem()
763 err = bpmp_populate_dir(bpmp, &seqbuf, bpmp->debugfs_mirror, 0); in bpmp_populate_debugfs_shmem()
765 dma_free_coherent(bpmp->dev, sz, virt, phys); in bpmp_populate_debugfs_shmem()
770 int tegra_bpmp_init_debugfs(struct tegra_bpmp *bpmp) in tegra_bpmp_init_debugfs() argument
776 inband = tegra_bpmp_mrq_is_supported(bpmp, MRQ_DEBUG); in tegra_bpmp_init_debugfs()
778 if (!inband && !tegra_bpmp_mrq_is_supported(bpmp, MRQ_DEBUGFS)) in tegra_bpmp_init_debugfs()
781 root = debugfs_create_dir("bpmp", NULL); in tegra_bpmp_init_debugfs()
785 bpmp->debugfs_mirror = debugfs_create_dir("debug", root); in tegra_bpmp_init_debugfs()
786 if (!bpmp->debugfs_mirror) { in tegra_bpmp_init_debugfs()
792 err = bpmp_populate_debugfs_inband(bpmp, bpmp->debugfs_mirror, in tegra_bpmp_init_debugfs()
795 err = bpmp_populate_debugfs_shmem(bpmp); in tegra_bpmp_init_debugfs()