mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-24 02:01:36 +03:00
nvethernet: Enable slot function support
Issue: Data packets sent via EQOS hardware are not following any packet gaping. The AVB use-cases have different timing requirements for class A data packets. For example, the time difference between two class A data packets are supposed to be 125 microseconds for audio data of frequency 48 kHz. Fix: Enable slot function support to schedule the data fetching from the system memory by the DMA. This feature is useful when the source AV data needs to be transmitted at specific intervals. Bug 200545374 Change-Id: I549014998380cd6c0d161c778bccdaa5ed017129 Signed-off-by: Mohan Thadikamalla <mohant@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/2223850 Reviewed-by: Bhadram Varka <vbhadram@nvidia.com> Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Srinivas Ramachandran <srinivasra@nvidia.com> Reviewed-by: Bitan Biswas <bbiswas@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
Revanth Kumar Uppala
parent
12328b2c5a
commit
ae038d9360
@@ -3052,7 +3052,7 @@ static int ether_parse_dt(struct ether_priv_data *pdata)
|
||||
unsigned int tmp_value[OSI_EQOS_MAX_NUM_QUEUES];
|
||||
struct device_node *np = dev->of_node;
|
||||
int ret = -EINVAL;
|
||||
unsigned int i, mtlq;
|
||||
unsigned int i, mtlq, chan;
|
||||
|
||||
/* read ptp clock */
|
||||
ret = of_property_read_u32(np, "nvidia,ptp_ref_clock_speed",
|
||||
@@ -3148,6 +3148,41 @@ static int ether_parse_dt(struct ether_priv_data *pdata)
|
||||
ETHER_QUEUE_PRIO_DEFAULT, ETHER_QUEUE_PRIO_MAX,
|
||||
osi_core->num_mtl_queues);
|
||||
|
||||
/* Read TX slot enable check array DT node */
|
||||
ret = of_property_read_u32_array(np, "nvidia,slot_num_check",
|
||||
tmp_value,
|
||||
osi_dma->num_dma_chans);
|
||||
if (ret < 0) {
|
||||
dev_info(dev,
|
||||
"Failed to read slot_num_check, disabling slot\n");
|
||||
for (i = 0; i < osi_dma->num_dma_chans; i++)
|
||||
osi_dma->slot_enabled[i] = OSI_DISABLE;
|
||||
} else {
|
||||
/* Set slot enable flags */
|
||||
for (i = 0; i < osi_dma->num_dma_chans; i++) {
|
||||
chan = osi_dma->dma_chans[i];
|
||||
osi_dma->slot_enabled[chan] = tmp_value[i];
|
||||
}
|
||||
|
||||
/* Read TX slot intervals DT node */
|
||||
ret = of_property_read_u32_array(np, "nvidia,slot_intvl_vals",
|
||||
tmp_value,
|
||||
osi_dma->num_dma_chans);
|
||||
if (ret < 0) {
|
||||
for (i = 0; i < osi_dma->num_dma_chans; i++) {
|
||||
chan = osi_dma->dma_chans[i];
|
||||
osi_dma->slot_interval[chan] =
|
||||
OSI_SLOT_INTVL_DEFAULT;
|
||||
}
|
||||
} else {
|
||||
/* Copy slot intervals */
|
||||
for (i = 0; i < osi_dma->num_dma_chans; i++) {
|
||||
chan = osi_dma->dma_chans[i];
|
||||
osi_dma->slot_interval[chan] = tmp_value[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Read Rx Queue - User priority mapping for tagged packets */
|
||||
ret = of_property_read_u32_array(np, "nvidia,rx-queue-prio",
|
||||
tmp_value,
|
||||
|
||||
Reference in New Issue
Block a user