diff options
author | Mandy Lavi <mandy.lavi@freescale.com> | 2013-08-20 13:47:27 (GMT) |
---|---|---|
committer | J. German Rivera <German.Rivera@freescale.com> | 2013-10-28 15:55:17 (GMT) |
commit | 47ddf1684195cbdeb3ccd16c0dd29ab185dad594 (patch) | |
tree | afeb1e4b75f3ff0062710e54fc22b9ae17a77d34 /drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm_port.c | |
parent | 500837de503650e001e4a1cb3177f4a4c69529cc (diff) | |
download | linux-fsl-qoriq-47ddf1684195cbdeb3ccd16c0dd29ab185dad594.tar.xz |
fmd: add fman registers representation inside the sysfs
Added the following new sysfs files:
*.fman/*.port/fm_port_regs
*.fman/*.port/fm_port_bmi_regs
*.fman/*.port/fm_port_qmi_regs
*.fman/fm_regs
*.fman/fm_ctrl_code_ver
*.fman/fm_muram_free_size
*.fman/fm_plcr_regs
*.fman/fm_kg_pe_regs
*.fman/fm_kg_regs
*.fman/cls_plans/cls_plan_*
*.fman/schemes/scheme_*
*.fman/profiles/profile_*
*.fman/fm_prs_regs
*.fman/fm_fpm_regs
*.fman/tnums_dbg/tnum_dbg_*
Signed-off-by: Mandy Lavi <mandy.lavi@freescale.com>
Change-Id: If625ef3550bf66da5fb6fb282975a70df78438b1
Reviewed-on: http://git.am.freescale.net:8181/5843
Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com>
Reviewed-by: Madalin-Cristian Bucur <madalin.bucur@freescale.com>
Reviewed-by: Thomas Trefny <Tom.Trefny@freescale.com>
Diffstat (limited to 'drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm_port.c')
-rw-r--r-- | drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm_port.c | 503 |
1 files changed, 454 insertions, 49 deletions
diff --git a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm_port.c b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm_port.c index cab44ef..8a8589d 100644 --- a/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm_port.c +++ b/drivers/net/ethernet/freescale/fman/src/wrapper/lnxwrp_sysfs_fm_port.c @@ -30,71 +30,75 @@ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/* - @File lnxwrp_sysfs_fm_port.c +#include "lnxwrp_sysfs.h" +#include "lnxwrp_fm.h" +#include "debug_ext.h" +#include "lnxwrp_sysfs_fm_port.h" +#include "lnxwrp_sysfs_fm.h" - @Description FM port sysfs related functions. +#include "../../fman/Peripherals/FM/Port/fm_port.h" -*/ +#if defined(__ERR_MODULE__) +#undef __ERR_MODULE__ +#endif -#include "lnxwrp_sysfs.h" -#include "lnxwrp_fm.h" +#include "../../fman/Peripherals/FM/fm.h" -static const struct SysfsStats_t portSysfsStats[] = { +static const struct sysfs_stats_t portSysfsStats[] = { /* RX/TX/OH common statistics */ { - .statisticName = "port_frame", - .statisticCounter = e_FM_PORT_COUNTERS_FRAME, + .stat_name = "port_frame", + .stat_counter = e_FM_PORT_COUNTERS_FRAME, }, { - .statisticName = "port_discard_frame", - .statisticCounter = e_FM_PORT_COUNTERS_DISCARD_FRAME, + .stat_name = "port_discard_frame", + .stat_counter = e_FM_PORT_COUNTERS_DISCARD_FRAME, }, { - .statisticName = "port_dealloc_buf", - .statisticCounter = e_FM_PORT_COUNTERS_DEALLOC_BUF, + .stat_name = "port_dealloc_buf", + .stat_counter = e_FM_PORT_COUNTERS_DEALLOC_BUF, }, { - .statisticName = "port_enq_total", - .statisticCounter = e_FM_PORT_COUNTERS_ENQ_TOTAL, + .stat_name = "port_enq_total", + .stat_counter = e_FM_PORT_COUNTERS_ENQ_TOTAL, }, /* TX/OH */ { - .statisticName = "port_length_err", - .statisticCounter = e_FM_PORT_COUNTERS_LENGTH_ERR, + .stat_name = "port_length_err", + .stat_counter = e_FM_PORT_COUNTERS_LENGTH_ERR, }, { - .statisticName = "port_unsupprted_format", - .statisticCounter = e_FM_PORT_COUNTERS_UNSUPPRTED_FORMAT, + .stat_name = "port_unsupprted_format", + .stat_counter = e_FM_PORT_COUNTERS_UNSUPPRTED_FORMAT, }, { - .statisticName = "port_deq_total", - .statisticCounter = e_FM_PORT_COUNTERS_DEQ_TOTAL, + .stat_name = "port_deq_total", + .stat_counter = e_FM_PORT_COUNTERS_DEQ_TOTAL, }, { - .statisticName = "port_deq_from_default", - .statisticCounter = e_FM_PORT_COUNTERS_DEQ_FROM_DEFAULT, + .stat_name = "port_deq_from_default", + .stat_counter = e_FM_PORT_COUNTERS_DEQ_FROM_DEFAULT, }, { - .statisticName = "port_deq_confirm", - .statisticCounter = e_FM_PORT_COUNTERS_DEQ_CONFIRM, + .stat_name = "port_deq_confirm", + .stat_counter = e_FM_PORT_COUNTERS_DEQ_CONFIRM, }, /* RX/OH */ { - .statisticName = "port_rx_bad_frame", - .statisticCounter = e_FM_PORT_COUNTERS_RX_BAD_FRAME, + .stat_name = "port_rx_bad_frame", + .stat_counter = e_FM_PORT_COUNTERS_RX_BAD_FRAME, }, { - .statisticName = "port_rx_large_frame", - .statisticCounter = e_FM_PORT_COUNTERS_RX_LARGE_FRAME, + .stat_name = "port_rx_large_frame", + .stat_counter = e_FM_PORT_COUNTERS_RX_LARGE_FRAME, }, { - .statisticName = "port_rx_out_of_buffers_discard", - .statisticCounter = e_FM_PORT_COUNTERS_RX_OUT_OF_BUFFERS_DISCARD, + .stat_name = "port_rx_out_of_buffers_discard", + .stat_counter = e_FM_PORT_COUNTERS_RX_OUT_OF_BUFFERS_DISCARD, }, { - .statisticName = "port_rx_filter_frame", - .statisticCounter = e_FM_PORT_COUNTERS_RX_FILTER_FRAME, + .stat_name = "port_rx_filter_frame", + .stat_counter = e_FM_PORT_COUNTERS_RX_FILTER_FRAME, }, /* TODO: Particular statistics for OH ports */ {} @@ -134,13 +138,14 @@ static ssize_t show_fm_port_stats(struct device *dev, if (counter == e_FM_PORT_COUNTERS_RX_LIST_DMA_ERR) { uint32_t fmRev = 0; - fmRev = 0xffff & ioread32(UINT_TO_PTR(p_LnxWrpFmDev->fmBaseAddr - + 0x000c30c4)); + fmRev = 0xffff & + ioread32(UINT_TO_PTR(p_LnxWrpFmDev->fmBaseAddr + + 0x000c30c4)); if (fmRev == 0x0100) { local_irq_save(flags); n = snprintf(buf, PAGE_SIZE, - "counter not available for revision 1\n"); + "counter not available for revision 1\n"); local_irq_restore(flags); } return n; @@ -171,7 +176,7 @@ static DEVICE_ATTR(port_deq_confirm, S_IRUGO, show_fm_port_stats, NULL); static DEVICE_ATTR(port_rx_bad_frame, S_IRUGO, show_fm_port_stats, NULL); static DEVICE_ATTR(port_rx_large_frame, S_IRUGO, show_fm_port_stats, NULL); static DEVICE_ATTR(port_rx_out_of_buffers_discard, S_IRUGO, - show_fm_port_stats, NULL); + show_fm_port_stats, NULL); static DEVICE_ATTR(port_rx_filter_frame, S_IRUGO, show_fm_port_stats, NULL); /* FM PORT TX statistics */ @@ -217,7 +222,7 @@ static struct attribute *fm_oh_port_dev_stats_attributes[] = { &dev_attr_port_discard_frame.attr, &dev_attr_port_dealloc_buf.attr, &dev_attr_port_enq_total.attr, - /*TX*/ &dev_attr_port_length_err.attr, + /*TX*/ &dev_attr_port_length_err.attr, &dev_attr_port_unsupprted_format.attr, &dev_attr_port_deq_total.attr, &dev_attr_port_deq_from_default.attr, @@ -241,6 +246,86 @@ static ssize_t show_fm_port_regs(struct device *dev, unsigned n = 0; #if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = + (t_LnxWrpFmPortDev *) dev_get_drvdata(dev); +#endif + if (attr == NULL || buf == NULL || dev == NULL) + return -EINVAL; + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + local_irq_save(flags); + + if (!p_LnxWrpFmPortDev->h_Dev) { + n = snprintf(buf, PAGE_SIZE, "\tFM Port not configured...\n"); + return n; + } else { + n = snprintf(buf, PAGE_SIZE, + "FM port driver registers dump.\n"); + n = fm_port_dump_regs(p_LnxWrpFmPortDev->h_Dev, buf, n); + } + + local_irq_restore(flags); + + return n; +#else + + local_irq_save(flags); + n = snprintf(buf, PAGE_SIZE, + "Debug level is too low to dump registers!!!\n"); + local_irq_restore(flags); + + return n; +#endif +} + + + + +static ssize_t show_fm_port_bmi_regs(struct device *dev, + struct device_attribute *attr, char *buf) +{ + unsigned long flags; + unsigned n = 0; +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = + (t_LnxWrpFmPortDev *) dev_get_drvdata(dev); +#endif + + if (attr == NULL || buf == NULL || dev == NULL) + return -EINVAL; + +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + local_irq_save(flags); + + if (!p_LnxWrpFmPortDev->h_Dev) { + n = snprintf(buf, PAGE_SIZE, "\tFM Port not configured...\n"); + return n; + } else { + n = snprintf(buf, PAGE_SIZE, + "FM port driver registers dump.\n"); + n = fm_port_dump_regs_bmi(p_LnxWrpFmPortDev->h_Dev, buf, n); + } + + local_irq_restore(flags); + + return n; +#else + + local_irq_save(flags); + n = snprintf(buf, PAGE_SIZE, + "Debug level is too low to dump registers!!!\n"); + local_irq_restore(flags); + + return n; +#endif +} + +static ssize_t show_fm_port_qmi_regs(struct device *dev, + struct device_attribute *attr, char *buf) +{ + unsigned long flags; + unsigned n = 0; +#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) + t_LnxWrpFmPortDev *p_LnxWrpFmPortDev = (t_LnxWrpFmPortDev *) dev_get_drvdata(dev); #endif @@ -255,8 +340,8 @@ static ssize_t show_fm_port_regs(struct device *dev, return n; } else { n = snprintf(buf, PAGE_SIZE, - "FM port driver registers dump.\n"); - FM_PORT_DumpRegs(p_LnxWrpFmPortDev->h_Dev); + "FM port driver registers dump.\n"); + n = fm_port_dump_regs_qmi(p_LnxWrpFmPortDev->h_Dev, buf, n); } local_irq_restore(flags); @@ -266,7 +351,7 @@ static ssize_t show_fm_port_regs(struct device *dev, local_irq_save(flags); n = snprintf(buf, PAGE_SIZE, - "Debug level is too low to dump registers!!!\n"); + "Debug level is too low to dump registers!!!\n"); local_irq_restore(flags); return n; @@ -274,6 +359,8 @@ static ssize_t show_fm_port_regs(struct device *dev, } static DEVICE_ATTR(fm_port_regs, 0x644, show_fm_port_regs, NULL); +static DEVICE_ATTR(fm_port_qmi_regs, 0x644, show_fm_port_qmi_regs, NULL); +static DEVICE_ATTR(fm_port_bmi_regs, 0x644, show_fm_port_bmi_regs, NULL); int fm_port_sysfs_create(struct device *dev) { @@ -288,36 +375,40 @@ int fm_port_sysfs_create(struct device *dev) /* store to remove them when module is disabled */ p_LnxWrpFmPortDev->dev_attr_regs = &dev_attr_fm_port_regs; + p_LnxWrpFmPortDev->dev_attr_qmi_regs = &dev_attr_fm_port_qmi_regs; + p_LnxWrpFmPortDev->dev_attr_bmi_regs = &dev_attr_fm_port_bmi_regs; /* Registers dump entry - in future will be moved to debugfs */ if (device_create_file(dev, &dev_attr_fm_port_regs) != 0) return -EIO; + if (device_create_file(dev, &dev_attr_fm_port_qmi_regs) != 0) + return -EIO; + if (device_create_file(dev, &dev_attr_fm_port_bmi_regs) != 0) + return -EIO; /* FM Ports statistics */ switch (p_LnxWrpFmPortDev->settings.param.portType) { case e_FM_PORT_TYPE_TX: case e_FM_PORT_TYPE_TX_10G: if (sysfs_create_group - (&dev->kobj, &fm_tx_port_dev_stats_attr_grp) != 0) + (&dev->kobj, &fm_tx_port_dev_stats_attr_grp) != 0) return -EIO; break; case e_FM_PORT_TYPE_RX: case e_FM_PORT_TYPE_RX_10G: if (sysfs_create_group - (&dev->kobj, &fm_rx_port_dev_stats_attr_grp) != 0) + (&dev->kobj, &fm_rx_port_dev_stats_attr_grp) != 0) return -EIO; break; - /* TODO:FMD16 e_FM_PORT_TYPE_DUMMY is accutally a HC port. - * NetCommSw defined this way... no idea why!!! */ case e_FM_PORT_TYPE_DUMMY: case e_FM_PORT_TYPE_OH_OFFLINE_PARSING: if (sysfs_create_group - (&dev->kobj, &fm_oh_port_dev_stats_attr_grp) != 0) + (&dev->kobj, &fm_oh_port_dev_stats_attr_grp) != 0) return -EIO; break; default: WARN(1, "FMD: failure at %s:%d/%s()!\n", __FILE__, __LINE__, - __func__); + __func__); return -EINVAL; break; }; @@ -348,8 +439,6 @@ void fm_port_sysfs_destroy(struct device *dev) case e_FM_PORT_TYPE_RX_10G: sysfs_remove_group(&dev->kobj, &fm_rx_port_dev_stats_attr_grp); break; - /* TODO:FMD16 e_FM_PORT_TYPE_DUMMY is accutally a HC port. - * NetCommSw defined this way... no idea why!!! */ case e_FM_PORT_TYPE_DUMMY: case e_FM_PORT_TYPE_OH_OFFLINE_PARSING: sysfs_remove_group(&dev->kobj, &fm_oh_port_dev_stats_attr_grp); @@ -361,4 +450,320 @@ void fm_port_sysfs_destroy(struct device *dev) }; device_remove_file(dev, p_LnxWrpFmPortDev->dev_attr_regs); + device_remove_file(dev, p_LnxWrpFmPortDev->dev_attr_qmi_regs); + device_remove_file(dev, p_LnxWrpFmPortDev->dev_attr_bmi_regs); +} + + +int fm_port_dump_regs(void *h_dev, char *buf, int nn) +{ + t_FmPort *p_FmPort; + t_Fm *p_Fm; + uint8_t hardwarePortId; + int n = nn; + + p_FmPort = (t_FmPort *)h_dev; + hardwarePortId = p_FmPort->hardwarePortId; + p_Fm = (t_Fm *)p_FmPort->h_Fm; + + FM_DMP_TITLE(buf, n, &p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId - 1], + "fmbm_pp for port %u", hardwarePortId); + FM_DMP_MEM_32(buf, n, + &p_Fm->p_FmBmiRegs->fmbm_pp[hardwarePortId - 1]); + + FM_DMP_TITLE(buf, n, &p_Fm->p_FmBmiRegs->fmbm_pfs[hardwarePortId - 1], + "fmbm_pfs for port %u", hardwarePortId); + FM_DMP_MEM_32(buf, n, + &p_Fm->p_FmBmiRegs->fmbm_pfs[hardwarePortId - 1]); + + FM_DMP_TITLE(buf, n, + &p_Fm->p_FmBmiRegs->fmbm_spliodn[hardwarePortId - 1], + "fmbm_spliodn for port %u", hardwarePortId); + FM_DMP_MEM_32(buf, n, + &p_Fm->p_FmBmiRegs->fmbm_spliodn[hardwarePortId - 1]); + + FM_DMP_TITLE(buf, n, &p_Fm->p_FmFpmRegs->fmfp_ps[hardwarePortId], + "fmfp_psfor port %u", hardwarePortId); + FM_DMP_MEM_32(buf, n, &p_Fm->p_FmFpmRegs->fmfp_ps[hardwarePortId]); + + FM_DMP_TITLE(buf, n, &p_Fm->p_FmDmaRegs->fmdmplr[hardwarePortId / 2], + "fmdmplrfor port %u", hardwarePortId); + FM_DMP_MEM_32(buf, n, + &p_Fm->p_FmDmaRegs->fmdmplr[hardwarePortId / 2]); + return n; } + +int fm_port_dump_regs_bmi(void *h_dev, char *buf, int nn) +{ + t_FmPort *p_FmPort; + u_FmPortBmiRegs *p_bmi; + + char arr[20]; + uint8_t flag; + int i = 0; + int n = nn; + + p_FmPort = (t_FmPort *)h_dev; + p_bmi = p_FmPort->p_FmPortBmiRegs; + + memset(arr, 0, sizeof(arr)); + switch (p_FmPort->portType) { + case (e_FM_PORT_TYPE_OH_OFFLINE_PARSING): + strcpy(arr, "OFFLINE-PARSING"); + flag = 0; + break; + case (e_FM_PORT_TYPE_OH_HOST_COMMAND): + strcpy(arr, "HOST-COMMAND"); + flag = 0; + break; + case (e_FM_PORT_TYPE_RX): + strcpy(arr, "RX"); + flag = 1; + break; + case (e_FM_PORT_TYPE_RX_10G): + strcpy(arr, "RX-10G"); + flag = 1; + break; + case (e_FM_PORT_TYPE_TX): + strcpy(arr, "TX"); + flag = 2; + break; + case (e_FM_PORT_TYPE_TX_10G): + strcpy(arr, "TX-10G"); + flag = 2; + break; + default: + return -EINVAL; + } + + FM_DMP_TITLE(buf, n, NULL, + "FMan-Port (%s #%d) registers:", + arr, p_FmPort->portId); + + FM_DMP_TITLE(buf, n, p_bmi, "Bmi Port Regs"); + + switch (flag) { + case (0): + FM_DMP_SUBTITLE(buf, n, "\n"); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ocfg); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ost); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_oda); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_oicp); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ofdne); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ofne); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ofca); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ofpne); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_opso); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_opp); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_occb); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_oim); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ofp); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ofed); + + FM_DMP_TITLE(buf, n, + &(p_bmi->ohPortBmiRegs.fmbm_oprai), "fmbm_oprai"); + for (i = 0; i < FM_PORT_PRS_RESULT_NUM_OF_WORDS; ++i) { + FM_DMP_MEM_32(buf, n, + &(p_bmi->ohPortBmiRegs.fmbm_oprai[i])); + } + FM_DMP_SUBTITLE(buf, n, "\n"); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ofqid); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_oefqid); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ofsdm); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ofsem); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ofene); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_orlmts); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_orlmt); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ocmne); + { +#ifndef FM_NO_OP_OBSERVED_POOLS + if (p_FmPort->fmRevInfo.majorRev == 4) { + FM_DMP_TITLE(buf, n, + &p_bmi->ohPortBmiRegs.fmbm_oebmpi, + "fmbm_oebmpi"); + + for (i = 0; i < FM_PORT_MAX_NUM_OF_OBSERVED_EXT_POOLS; ++i) { + FM_DMP_MEM_32(buf, n, + &(p_bmi->ohPortBmiRegs.fmbm_oebmpi[i])); + } + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ocgm); + } +#endif /* !FM_NO_OP_OBSERVED_POOLS */ + } + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ostc); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ofrc); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ofdc); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ofledc); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ofufdc); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_offc); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ofwdc); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ofldec); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_opc); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_opcp); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_occn); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_otuc); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_oduc); + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ofuc); + FM_DMP_TITLE(buf, n, &(p_bmi->ohPortBmiRegs.fmbm_odcfg), + "fmbm_odcfg"); + for (i = 0; i < 3; ++i) { + FM_DMP_MEM_32(buf, n, + &(p_bmi->ohPortBmiRegs.fmbm_odcfg[i])); + } + FM_DMP_SUBTITLE(buf, n, "\n"); + + FM_DMP_V32(buf, n, &p_bmi->ohPortBmiRegs, fmbm_ogpr); + break; + case (1): + FM_DMP_SUBTITLE(buf, n, "\n"); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rcfg); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rst); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rda); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rfp); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_reth); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rfed); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_ricp); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rebm); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rfne); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rfca); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rfpne); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rpso); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rpp); + FM_DMP_TITLE(buf, n, &(p_bmi->rxPortBmiRegs.fmbm_rprai), + "fmbm_rprai"); + for (i = 0; i < FM_PORT_PRS_RESULT_NUM_OF_WORDS; ++i) { + FM_DMP_MEM_32(buf, n, + &(p_bmi->rxPortBmiRegs.fmbm_rprai[i])); + } + FM_DMP_SUBTITLE(buf, n, "\n"); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rfqid); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_refqid); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rfsdm); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rfsem); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rfene); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rcmne); + FM_DMP_TITLE(buf, n, &p_bmi->rxPortBmiRegs.fmbm_ebmpi, + "fmbm_ebmpi"); + for (i = 0; i < FM_PORT_MAX_NUM_OF_EXT_POOLS; ++i) { + FM_DMP_MEM_32(buf, n, + &(p_bmi->rxPortBmiRegs.fmbm_ebmpi[i])); + } + FM_DMP_TITLE(buf, n, &p_bmi->rxPortBmiRegs.fmbm_acnt, + "fmbm_acnt"); + for (i = 0; i < FM_PORT_MAX_NUM_OF_EXT_POOLS; ++i) { + FM_DMP_MEM_32(buf, n, + &(p_bmi->rxPortBmiRegs.fmbm_acnt[i])); + } + FM_DMP_TITLE(buf, n, &p_bmi->rxPortBmiRegs.fmbm_rcgm, + "fmbm_rcgm"); + for (i = 0; i < FM_PORT_NUM_OF_CONGESTION_GRPS / 32; ++i) { + FM_DMP_MEM_32(buf, n, + &(p_bmi->rxPortBmiRegs.fmbm_rcgm[i])); + } + + FM_DMP_SUBTITLE(buf, n, "\n"); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rmpd); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rstc); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rfrc); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rfbc); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rlfc); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rffc); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rfcd); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rfldec); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rodc); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rpc); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rpcp); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rccn); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rtuc); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rrquc); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rduc); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rfuc); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rpac); + FM_DMP_TITLE(buf, n, &(p_bmi->rxPortBmiRegs.fmbm_rdcfg), + "fmbm_rdcfg"); + for (i = 0; i < 3; ++i) { + FM_DMP_MEM_32(buf, n, + &(p_bmi->rxPortBmiRegs.fmbm_rdcfg[i])); + } + FM_DMP_SUBTITLE(buf, n, "\n"); + FM_DMP_V32(buf, n, &p_bmi->rxPortBmiRegs, fmbm_rgpr); + break; + case (2): + FM_DMP_SUBTITLE(buf, n, "\n"); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tcfg); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tst); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tda); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tfp); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tfed); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_ticp); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tfdne); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tfca); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tcfqid); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tfeqid); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tfene); +#if (DPAA_VERSION >= 11) + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tfne); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tcmne); +#endif /* (DPAA_VERSION >= 11) */ + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_trlmts); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_trlmt); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tstc); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tfrc); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tfdc); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tfledc); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tfufdc); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tpc); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tpcp); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tccn); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_ttuc); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_ttcquc); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tduc); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tfuc); + FM_DMP_TITLE(buf, n, &(p_bmi->txPortBmiRegs.fmbm_tdcfg), + "fmbm_tdcfg"); + for (i = 0; i < 3 ; ++i) { + FM_DMP_MEM_32(buf, n, + &(p_bmi->txPortBmiRegs.fmbm_tdcfg[i])); + } + FM_DMP_SUBTITLE(buf, n, "\n"); + FM_DMP_V32(buf, n, &p_bmi->txPortBmiRegs, fmbm_tgpr); + break; + default: + return -EINVAL; + } + + FM_DMP_SUBTITLE(buf, n, "\n"); + + return n; +} + +int fm_port_dump_regs_qmi(void *h_dev, char *buf, int nn) +{ + t_FmPort *p_FmPort; + int n = nn; + + p_FmPort = (t_FmPort *)h_dev; + + FM_DMP_TITLE(buf, n, p_FmPort->p_FmPortQmiRegs, "Qmi Port Regs"); + + FM_DMP_V32(buf, n, p_FmPort->p_FmPortQmiRegs, fmqm_pnc); + FM_DMP_V32(buf, n, p_FmPort->p_FmPortQmiRegs, fmqm_pns); + FM_DMP_V32(buf, n, p_FmPort->p_FmPortQmiRegs, fmqm_pnts); + FM_DMP_V32(buf, n, p_FmPort->p_FmPortQmiRegs, fmqm_pnen); + FM_DMP_V32(buf, n, p_FmPort->p_FmPortQmiRegs, fmqm_pnetfc); + FM_DMP_V32(buf, n, + &p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs, fmqm_pndn); + FM_DMP_V32(buf, n, + &p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs, fmqm_pndc); + FM_DMP_V32(buf, n, + &p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs, fmqm_pndtfc); + FM_DMP_V32(buf, n, + &p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs, fmqm_pndfdc); + FM_DMP_V32(buf, n, + &p_FmPort->p_FmPortQmiRegs->nonRxQmiRegs, fmqm_pndcc); + + FM_DMP_SUBTITLE(buf, n, "\n"); + + return n; +} + |