/* * Freescale SSI ALSA SoC Digital Audio Interface (DAI) debugging functions * * Copyright 2014 Markus Pargmann , Pengutronix * * Splitted from fsl_ssi.c * * This file is licensed under the terms of the GNU General Public License * version 2. This program is licensed "as is" without any warranty of any * kind, whether express or implied. */ #include #include #include #include "fsl_ssi.h" void fsl_ssi_dbg_isr(struct fsl_ssi_dbg *dbg, u32 sisr) { if (sisr & CCSR_SSI_SISR_RFRC) dbg->stats.rfrc++; if (sisr & CCSR_SSI_SISR_TFRC) dbg->stats.tfrc++; if (sisr & CCSR_SSI_SISR_CMDAU) dbg->stats.cmdau++; if (sisr & CCSR_SSI_SISR_CMDDU) dbg->stats.cmddu++; if (sisr & CCSR_SSI_SISR_RXT) dbg->stats.rxt++; if (sisr & CCSR_SSI_SISR_RDR1) dbg->stats.rdr1++; if (sisr & CCSR_SSI_SISR_RDR0) dbg->stats.rdr0++; if (sisr & CCSR_SSI_SISR_TDE1) dbg->stats.tde1++; if (sisr & CCSR_SSI_SISR_TDE0) dbg->stats.tde0++; if (sisr & CCSR_SSI_SISR_ROE1) dbg->stats.roe1++; if (sisr & CCSR_SSI_SISR_ROE0) dbg->stats.roe0++; if (sisr & CCSR_SSI_SISR_TUE1) dbg->stats.tue1++; if (sisr & CCSR_SSI_SISR_TUE0) dbg->stats.tue0++; if (sisr & CCSR_SSI_SISR_TFS) dbg->stats.tfs++; if (sisr & CCSR_SSI_SISR_RFS) dbg->stats.rfs++; if (sisr & CCSR_SSI_SISR_TLS) dbg->stats.tls++; if (sisr & CCSR_SSI_SISR_RLS) dbg->stats.rls++; if (sisr & CCSR_SSI_SISR_RFF1) dbg->stats.rff1++; if (sisr & CCSR_SSI_SISR_RFF0) dbg->stats.rff0++; if (sisr & CCSR_SSI_SISR_TFE1) dbg->stats.tfe1++; if (sisr & CCSR_SSI_SISR_TFE0) dbg->stats.tfe0++; } /* Show the statistics of a flag only if its interrupt is enabled. The * compiler will optimze this code to a no-op if the interrupt is not * enabled. */ #define SIER_SHOW(flag, name) \ do { \ if (CCSR_SSI_SIER_##flag) \ seq_printf(s, #name "=%u\n", ssi_dbg->stats.name); \ } while (0) /** * fsl_sysfs_ssi_show: display SSI statistics * * Display the statistics for the current SSI device. To avoid confusion, * we only show those counts that are enabled. */ static int fsl_ssi_stats_show(struct seq_file *s, void *unused) { struct fsl_ssi_dbg *ssi_dbg = s->private; SIER_SHOW(RFRC_EN, rfrc); SIER_SHOW(TFRC_EN, tfrc); SIER_SHOW(CMDAU_EN, cmdau); SIER_SHOW(CMDDU_EN, cmddu); SIER_SHOW(RXT_EN, rxt); SIER_SHOW(RDR1_EN, rdr1); SIER_SHOW(RDR0_EN, rdr0); SIER_SHOW(TDE1_EN, tde1); SIER_SHOW(TDE0_EN, tde0); SIER_SHOW(ROE1_EN, roe1); SIER_SHOW(ROE0_EN, roe0); SIER_SHOW(TUE1_EN, tue1); SIER_SHOW(TUE0_EN, tue0); SIER_SHOW(TFS_EN, tfs); SIER_SHOW(RFS_EN, rfs); SIER_SHOW(TLS_EN, tls); SIER_SHOW(RLS_EN, rls); SIER_SHOW(RFF1_EN, rff1); SIER_SHOW(RFF0_EN, rff0); SIER_SHOW(TFE1_EN, tfe1); SIER_SHOW(TFE0_EN, tfe0); return 0; } static int fsl_ssi_stats_open(struct inode *inode, struct file *file) { return single_open(file, fsl_ssi_stats_show, inode->i_private); } static const struct file_operations fsl_ssi_stats_ops = { .open = fsl_ssi_stats_open, .read = seq_read, .llseek = seq_lseek, .release = single_release, }; int fsl_ssi_debugfs_create(struct fsl_ssi_dbg *ssi_dbg, struct device *dev) { ssi_dbg->dbg_dir = debugfs_create_dir(dev_name(dev), NULL); if (!ssi_dbg->dbg_dir) return -ENOMEM; ssi_dbg->dbg_stats = debugfs_create_file("stats", S_IRUGO, ssi_dbg->dbg_dir, ssi_dbg, &fsl_ssi_stats_ops); if (!ssi_dbg->dbg_stats) { debugfs_remove(ssi_dbg->dbg_dir); return -ENOMEM; } return 0; } void fsl_ssi_debugfs_remove(struct fsl_ssi_dbg *ssi_dbg) { debugfs_remove(ssi_dbg->dbg_stats); debugfs_remove(ssi_dbg->dbg_dir); } >3space:mode:
authorJerome Brunet <jbrunet@baylibre.com>2017-01-20 08:20:24 -0800
committerArnd Bergmann <arnd@arndb.de>2017-01-27 16:46:42 +0100
commitfeb3cbea0946c67060e2d5bcb7499b0a6f6700fe (patch)
tree4789978854a7fd97de08f4b77f220bcd9278417b /sound/usb/6fire/Makefile
parent7a308bb3016f57e5be11a677d15b821536419d36 (diff)
ARM64: dts: meson-gxbb-odroidc2: fix GbE tx link breakage
OdroidC2 GbE link breaks under heavy tx transfer. This happens even if the MAC does not enable Energy Efficient Ethernet (No Low Power state Idle on the Tx path). The problem seems to come from the phy Rx path, entering the LPI state. Disabling EEE advertisement on the phy prevent this feature to be negociated with the link partner and solve the issue. Signed-off-by: Jerome Brunet <jbrunet@baylibre.com> Signed-off-by: Kevin Hilman <khilman@baylibre.com> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'sound/usb/6fire/Makefile')