/* * tascam-proc.h - a part of driver for TASCAM FireWire series * * Copyright (c) 2015 Takashi Sakamoto * * Licensed under the terms of the GNU General Public License, version 2. */ #include "./tascam.h" static void proc_read_firmware(struct snd_info_entry *entry, struct snd_info_buffer *buffer) { struct snd_tscm *tscm = entry->private_data; __be32 data; unsigned int reg, fpga, arm, hw; int err; err = snd_fw_transaction(tscm->unit, TCODE_READ_QUADLET_REQUEST, TSCM_ADDR_BASE + TSCM_OFFSET_FIRMWARE_REGISTER, &data, sizeof(data), 0); if (err < 0) return; reg = be32_to_cpu(data); err = snd_fw_transaction(tscm->unit, TCODE_READ_QUADLET_REQUEST, TSCM_ADDR_BASE + TSCM_OFFSET_FIRMWARE_FPGA, &data, sizeof(data), 0); if (err < 0) return; fpga = be32_to_cpu(data); err = snd_fw_transaction(tscm->unit, TCODE_READ_QUADLET_REQUEST, TSCM_ADDR_BASE + TSCM_OFFSET_FIRMWARE_ARM, &data, sizeof(data), 0); if (err < 0) return; arm = be32_to_cpu(data); err = snd_fw_transaction(tscm->unit, TCODE_READ_QUADLET_REQUEST, TSCM_ADDR_BASE + TSCM_OFFSET_FIRMWARE_HW, &data, sizeof(data), 0); if (err < 0) return; hw = be32_to_cpu(data); snd_iprintf(buffer, "Register: %d (0x%08x)\n", reg & 0xffff, reg); snd_iprintf(buffer, "FPGA: %d (0x%08x)\n", fpga & 0xffff, fpga); snd_iprintf(buffer, "ARM: %d (0x%08x)\n", arm & 0xffff, arm); snd_iprintf(buffer, "Hardware: %d (0x%08x)\n", hw >> 16, hw); } static void add_node(struct snd_tscm *tscm, struct snd_info_entry *root, const char *name, void (*op)(struct snd_info_entry *e, struct snd_info_buffer *b)) { struct snd_info_entry *entry; entry = snd_info_create_card_entry(tscm->card, name, root); if (entry == NULL) return; snd_info_set_text_ops(entry, tscm, op); if (snd_info_register(entry) < 0) snd_info_free_entry(entry); } void snd_tscm_proc_init(struct snd_tscm *tscm) { struct snd_info_entry *root; /* * All nodes are automatically removed at snd_card_disconnect(), * by following to link list. */ root = snd_info_create_card_entry(tscm->card, "firewire", tscm->card->proc_root); if (root == NULL) return; root->mode = S_IFDIR | S_IRUGO | S_IXUGO; if (snd_info_register(root) < 0) { snd_info_free_entry(root); return; } add_node(tscm, root, "firmware", proc_read_firmware); } idden' name='id' value='6bb19474391d17954fee9a9997ecca25b35dfd46'/>
path: root/drivers/net/ethernet/broadcom/bnxt/bnxt.h
diff options
context:
space:
mode:
authorMichael Chan <michael.chan@broadcom.com>2017-02-06 16:55:32 -0500
committerDavid S. Miller <davem@davemloft.net>2017-02-07 13:30:57 -0500
commit6bb19474391d17954fee9a9997ecca25b35dfd46 (patch)
tree459bc747ded6a240899dd3edf0f4e7b26afc4ab5 /drivers/net/ethernet/broadcom/bnxt/bnxt.h
parentb44700e975848a9a569a509244672ff886ec99b3 (diff)
bnxt_en: Refactor rx SKB function.
Minor refactoring of bnxt_rx_skb() so that it can easily be replaced by a new function that handles packets in a single page. Also, use a function pointer bp->rx_skb_func() to switch to a new function when we add the new mode in the next patch. Add a new field data_ptr that points to the packet data in the bnxt_sw_rx_bd structure. The original data field is changed to void pointer so that it can either hold the kmalloc'ed data or a page pointer. The last parameter of bnxt_rx_skb() which was the length parameter is changed to include the payload offset of the packet in the upper 16 bit. The offset is needed to support the rx page mode and is not used in this existing function. v3: Added a new data_ptr parameter to bp->rx_skb_func(). The caller has the option to modify the starting address of the packet. This will be needed when XDP with headroom support is added. v2: Changed the name of the last parameter to offset_and_len to make the code more clear. Signed-off-by: Michael Chan <michael.chan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/broadcom/bnxt/bnxt.h')
-rw-r--r--drivers/net/ethernet/broadcom/bnxt/bnxt.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h