mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
Merge branch 'qca_spi-improvements'
Stefan Wahren says: ==================== qca_spi: collection of improvements This series contains a wild collection of improvements for the qca_spi driver. This is a follow-up series to the recent bugfixes [1]. Patch 1, 2 & 3 in this series is the initially intended rework of netdev_open/close. Patch 4 & 10 are minor functional improvements and the rest is clean-up. Changes in V4: - keep thread handling in netdev_open, but improve this by two separate patches ( 1 & 2 ) - add missing link to bugfix series Changes in V3: - rebase on net-next-20240124 - improve commit message in Patch 8 - add Reviewed-by's from Jacob Keller - add Patch 13 for mailmap as suggested by Jacob - add Patch 14 for MAINTAINERS entry Changes in V2: - rebase on net-next-20231218 - improve cover letter [1] - https://lore.kernel.org/netdev/20231206141222.52029-1-wahrenst@gmx.net/ ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
a9c3d39b6b
1
.mailmap
1
.mailmap
@ -568,6 +568,7 @@ Simon Kelley <simon@thekelleys.org.uk>
|
||||
Sricharan Ramabadhran <quic_srichara@quicinc.com> <sricharan@codeaurora.org>
|
||||
Srinivas Ramana <quic_sramana@quicinc.com> <sramana@codeaurora.org>
|
||||
Sriram R <quic_srirrama@quicinc.com> <srirrama@codeaurora.org>
|
||||
Stefan Wahren <wahrenst@gmx.net> <stefan.wahren@i2se.com>
|
||||
Stéphane Witzmann <stephane.witzmann@ubpmes.univ-bpclermont.fr>
|
||||
Stephen Hemminger <stephen@networkplumber.org> <shemminger@linux-foundation.org>
|
||||
Stephen Hemminger <stephen@networkplumber.org> <shemminger@osdl.org>
|
||||
|
@ -18014,6 +18014,13 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
|
||||
F: Documentation/devicetree/bindings/net/wireless/qca,ath9k.yaml
|
||||
F: drivers/net/wireless/ath/ath9k/
|
||||
|
||||
QUALCOMM ATHEROS QCA7K ETHERNET DRIVER
|
||||
M: Stefan Wahren <wahrenst@gmx.net>
|
||||
L: netdev@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/net/qca,qca7000.txt
|
||||
F: drivers/net/ethernet/qualcomm/qca*
|
||||
|
||||
QUALCOMM BAM-DMUX WWAN NETWORK DRIVER
|
||||
M: Stephan Gerhold <stephan@gerhold.net>
|
||||
L: netdev@vger.kernel.org
|
||||
|
@ -1,22 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
|
||||
/*
|
||||
*
|
||||
* Copyright (c) 2011, 2012, Qualcomm Atheros Communications Inc.
|
||||
* Copyright (c) 2014, I2SE GmbH
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software
|
||||
* for any purpose with or without fee is hereby granted, provided
|
||||
* that the above copyright notice and this permission notice appear
|
||||
* in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
|
||||
* THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
*/
|
||||
|
||||
/* This module implements the Qualcomm Atheros SPI protocol for
|
||||
|
@ -1,21 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */
|
||||
/*
|
||||
* Copyright (c) 2011, 2012, Qualcomm Atheros Communications Inc.
|
||||
* Copyright (c) 2014, I2SE GmbH
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software
|
||||
* for any purpose with or without fee is hereby granted, provided
|
||||
* that the above copyright notice and this permission notice appear
|
||||
* in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
|
||||
* THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
*/
|
||||
|
||||
/* Qualcomm Atheros SPI register definition.
|
||||
|
@ -1,20 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
|
||||
/*
|
||||
* Copyright (c) 2011, 2012, Atheros Communications Inc.
|
||||
* Copyright (c) 2014, I2SE GmbH
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software
|
||||
* for any purpose with or without fee is hereby granted, provided
|
||||
* that the above copyright notice and this permission notice appear
|
||||
* in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
|
||||
* THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* Atheros ethernet framing. Every Ethernet frame is surrounded
|
||||
@ -162,5 +149,5 @@ EXPORT_SYMBOL_GPL(qcafrm_fsm_decode);
|
||||
|
||||
MODULE_DESCRIPTION("Qualcomm Atheros QCA7000 common");
|
||||
MODULE_AUTHOR("Qualcomm Atheros Communications");
|
||||
MODULE_AUTHOR("Stefan Wahren <stefan.wahren@i2se.com>");
|
||||
MODULE_AUTHOR("Stefan Wahren <wahrenst@gmx.net>");
|
||||
MODULE_LICENSE("Dual BSD/GPL");
|
||||
|
@ -1,20 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */
|
||||
/*
|
||||
* Copyright (c) 2011, 2012, Atheros Communications Inc.
|
||||
* Copyright (c) 2014, I2SE GmbH
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software
|
||||
* for any purpose with or without fee is hereby granted, provided
|
||||
* that the above copyright notice and this permission notice appear
|
||||
* in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
|
||||
* THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* Atheros Ethernet framing. Every Ethernet frame is surrounded by an atheros
|
||||
@ -107,9 +94,6 @@ struct qcafrm_handle {
|
||||
|
||||
/* Offset in buffer (borrowed for length too) */
|
||||
u16 offset;
|
||||
|
||||
/* Frame length as kept by this module */
|
||||
u16 len;
|
||||
};
|
||||
|
||||
u16 qcafrm_create_header(u8 *buf, u16 len);
|
||||
@ -128,17 +112,6 @@ static inline void qcafrm_fsm_init_uart(struct qcafrm_handle *handle)
|
||||
handle->state = handle->init;
|
||||
}
|
||||
|
||||
/* Gather received bytes and try to extract a full Ethernet frame
|
||||
* by following a simple state machine.
|
||||
*
|
||||
* Return: QCAFRM_GATHER No Ethernet frame fully received yet.
|
||||
* QCAFRM_NOHEAD Header expected but not found.
|
||||
* QCAFRM_INVLEN QCA7K frame length is invalid
|
||||
* QCAFRM_NOTAIL Footer expected but not found.
|
||||
* > 0 Number of byte in the fully received
|
||||
* Ethernet frame
|
||||
*/
|
||||
|
||||
s32 qcafrm_fsm_decode(struct qcafrm_handle *handle, u8 *buf, u16 buf_len, u8 recv_byte);
|
||||
|
||||
#endif /* _QCA_FRAMING_H */
|
||||
|
@ -1,20 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
|
||||
/*
|
||||
* Copyright (c) 2011, 2012, Qualcomm Atheros Communications Inc.
|
||||
* Copyright (c) 2014, I2SE GmbH
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software
|
||||
* for any purpose with or without fee is hereby granted, provided
|
||||
* that the above copyright notice and this permission notice appear
|
||||
* in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
|
||||
* THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* This file contains debugging routines for use in the QCA7K driver.
|
||||
@ -255,7 +242,7 @@ qcaspi_get_ringparam(struct net_device *dev, struct ethtool_ringparam *ring,
|
||||
struct qcaspi *qca = netdev_priv(dev);
|
||||
|
||||
ring->rx_max_pending = QCASPI_RX_MAX_FRAMES;
|
||||
ring->tx_max_pending = TX_RING_MAX_LEN;
|
||||
ring->tx_max_pending = QCASPI_TX_RING_MAX_LEN;
|
||||
ring->rx_pending = QCASPI_RX_MAX_FRAMES;
|
||||
ring->tx_pending = qca->txr.count;
|
||||
}
|
||||
@ -275,8 +262,8 @@ qcaspi_set_ringparam(struct net_device *dev, struct ethtool_ringparam *ring,
|
||||
if (qca->spi_thread)
|
||||
kthread_park(qca->spi_thread);
|
||||
|
||||
qca->txr.count = max_t(u32, ring->tx_pending, TX_RING_MIN_LEN);
|
||||
qca->txr.count = min_t(u16, qca->txr.count, TX_RING_MAX_LEN);
|
||||
qca->txr.count = max_t(u32, ring->tx_pending, QCASPI_TX_RING_MIN_LEN);
|
||||
qca->txr.count = min_t(u16, qca->txr.count, QCASPI_TX_RING_MAX_LEN);
|
||||
|
||||
if (qca->spi_thread)
|
||||
kthread_unpark(qca->spi_thread);
|
||||
|
@ -1,20 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */
|
||||
/*
|
||||
* Copyright (c) 2011, 2012, Qualcomm Atheros Communications Inc.
|
||||
* Copyright (c) 2014, I2SE GmbH
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software
|
||||
* for any purpose with or without fee is hereby granted, provided
|
||||
* that the above copyright notice and this permission notice appear
|
||||
* in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
|
||||
* THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* This file contains debugging routines for use in the QCA7K driver.
|
||||
|
@ -1,20 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
|
||||
/*
|
||||
* Copyright (c) 2011, 2012, Qualcomm Atheros Communications Inc.
|
||||
* Copyright (c) 2014, I2SE GmbH
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software
|
||||
* for any purpose with or without fee is hereby granted, provided
|
||||
* that the above copyright notice and this permission notice appear
|
||||
* in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
|
||||
* THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* This module implements the Qualcomm Atheros SPI protocol for
|
||||
@ -359,7 +346,7 @@ qcaspi_receive(struct qcaspi *qca)
|
||||
/* Read the packet size. */
|
||||
qcaspi_read_register(qca, SPI_REG_RDBUF_BYTE_AVA, &available);
|
||||
|
||||
netdev_dbg(net_dev, "qcaspi_receive: SPI_REG_RDBUF_BYTE_AVA: Value: %08x\n",
|
||||
netdev_dbg(net_dev, "qcaspi_receive: SPI_REG_RDBUF_BYTE_AVA: Value: %04x\n",
|
||||
available);
|
||||
|
||||
if (available > QCASPI_HW_BUF_LEN + QCASPI_HW_PKT_LEN) {
|
||||
@ -476,7 +463,7 @@ qcaspi_flush_tx_ring(struct qcaspi *qca)
|
||||
* has been replaced by netif_tx_lock_bh() and so on.
|
||||
*/
|
||||
netif_tx_lock_bh(qca->net_dev);
|
||||
for (i = 0; i < TX_RING_MAX_LEN; i++) {
|
||||
for (i = 0; i < QCASPI_TX_RING_MAX_LEN; i++) {
|
||||
if (qca->txr.skb[i]) {
|
||||
dev_kfree_skb(qca->txr.skb[i]);
|
||||
qca->txr.skb[i] = NULL;
|
||||
@ -687,7 +674,7 @@ static int
|
||||
qcaspi_netdev_open(struct net_device *dev)
|
||||
{
|
||||
struct qcaspi *qca = netdev_priv(dev);
|
||||
int ret = 0;
|
||||
struct task_struct *thread;
|
||||
|
||||
if (!qca)
|
||||
return -EINVAL;
|
||||
@ -697,23 +684,18 @@ qcaspi_netdev_open(struct net_device *dev)
|
||||
qca->sync = QCASPI_SYNC_UNKNOWN;
|
||||
qcafrm_fsm_init_spi(&qca->frm_handle);
|
||||
|
||||
qca->spi_thread = kthread_run((void *)qcaspi_spi_thread,
|
||||
qca, "%s", dev->name);
|
||||
thread = kthread_run((void *)qcaspi_spi_thread,
|
||||
qca, "%s", dev->name);
|
||||
|
||||
if (IS_ERR(qca->spi_thread)) {
|
||||
if (IS_ERR(thread)) {
|
||||
netdev_err(dev, "%s: unable to start kernel thread.\n",
|
||||
QCASPI_DRV_NAME);
|
||||
return PTR_ERR(qca->spi_thread);
|
||||
return PTR_ERR(thread);
|
||||
}
|
||||
|
||||
ret = request_irq(qca->spi_dev->irq, qcaspi_intr_handler, 0,
|
||||
dev->name, qca);
|
||||
if (ret) {
|
||||
netdev_err(dev, "%s: unable to get IRQ %d (irqval=%d).\n",
|
||||
QCASPI_DRV_NAME, qca->spi_dev->irq, ret);
|
||||
kthread_stop(qca->spi_thread);
|
||||
return ret;
|
||||
}
|
||||
qca->spi_thread = thread;
|
||||
|
||||
enable_irq(qca->spi_dev->irq);
|
||||
|
||||
/* SPI thread takes care of TX queue */
|
||||
|
||||
@ -728,10 +710,12 @@ qcaspi_netdev_close(struct net_device *dev)
|
||||
netif_stop_queue(dev);
|
||||
|
||||
qcaspi_write_register(qca, SPI_REG_INTR_ENABLE, 0, wr_verify);
|
||||
free_irq(qca->spi_dev->irq, qca);
|
||||
disable_irq(qca->spi_dev->irq);
|
||||
|
||||
kthread_stop(qca->spi_thread);
|
||||
qca->spi_thread = NULL;
|
||||
if (qca->spi_thread) {
|
||||
kthread_stop(qca->spi_thread);
|
||||
qca->spi_thread = NULL;
|
||||
}
|
||||
qcaspi_flush_tx_ring(qca);
|
||||
|
||||
return 0;
|
||||
@ -831,8 +815,8 @@ qcaspi_netdev_init(struct net_device *dev)
|
||||
qca->clkspeed = qcaspi_clkspeed;
|
||||
qca->burst_len = qcaspi_burst_len;
|
||||
qca->spi_thread = NULL;
|
||||
qca->buffer_size = (dev->mtu + VLAN_ETH_HLEN + QCAFRM_HEADER_LEN +
|
||||
QCAFRM_FOOTER_LEN + 4) * 4;
|
||||
qca->buffer_size = (QCAFRM_MAX_MTU + VLAN_ETH_HLEN + QCAFRM_HEADER_LEN +
|
||||
QCAFRM_FOOTER_LEN + QCASPI_HW_PKT_LEN) * QCASPI_RX_MAX_FRAMES;
|
||||
|
||||
memset(&qca->stats, 0, sizeof(struct qcaspi_stats));
|
||||
|
||||
@ -881,6 +865,8 @@ qcaspi_netdev_setup(struct net_device *dev)
|
||||
qcaspi_set_ethtool_ops(dev);
|
||||
dev->watchdog_timeo = QCASPI_TX_TIMEOUT;
|
||||
dev->priv_flags &= ~IFF_TX_SKB_SHARING;
|
||||
dev->needed_tailroom = ALIGN(QCAFRM_FOOTER_LEN + QCAFRM_MIN_LEN, 4);
|
||||
dev->needed_headroom = ALIGN(QCAFRM_HEADER_LEN, 4);
|
||||
dev->tx_queue_len = 100;
|
||||
|
||||
/* MTU range: 46 - 1500 */
|
||||
@ -891,7 +877,7 @@ qcaspi_netdev_setup(struct net_device *dev)
|
||||
memset(qca, 0, sizeof(struct qcaspi));
|
||||
|
||||
memset(&qca->txr, 0, sizeof(qca->txr));
|
||||
qca->txr.count = TX_RING_MAX_LEN;
|
||||
qca->txr.count = QCASPI_TX_RING_MAX_LEN;
|
||||
}
|
||||
|
||||
static const struct of_device_id qca_spi_of_match[] = {
|
||||
@ -984,6 +970,15 @@ qca_spi_probe(struct spi_device *spi)
|
||||
|
||||
spi_set_drvdata(spi, qcaspi_devs);
|
||||
|
||||
ret = devm_request_irq(&spi->dev, spi->irq, qcaspi_intr_handler,
|
||||
IRQF_NO_AUTOEN, qca->net_dev->name, qca);
|
||||
if (ret) {
|
||||
dev_err(&spi->dev, "Unable to get IRQ %d (irqval=%d).\n",
|
||||
spi->irq, ret);
|
||||
free_netdev(qcaspi_devs);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = of_get_ethdev_address(spi->dev.of_node, qca->net_dev);
|
||||
if (ret) {
|
||||
eth_hw_addr_random(qca->net_dev);
|
||||
@ -998,8 +993,8 @@ qca_spi_probe(struct spi_device *spi)
|
||||
qcaspi_read_register(qca, SPI_REG_SIGNATURE, &signature);
|
||||
|
||||
if (signature != QCASPI_GOOD_SIGNATURE) {
|
||||
dev_err(&spi->dev, "Invalid signature (0x%04X)\n",
|
||||
signature);
|
||||
dev_err(&spi->dev, "Invalid signature (expected 0x%04x, read 0x%04x)\n",
|
||||
QCASPI_GOOD_SIGNATURE, signature);
|
||||
free_netdev(qcaspi_devs);
|
||||
return -EFAULT;
|
||||
}
|
||||
@ -1048,6 +1043,6 @@ module_spi_driver(qca_spi_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Qualcomm Atheros QCA7000 SPI Driver");
|
||||
MODULE_AUTHOR("Qualcomm Atheros Communications");
|
||||
MODULE_AUTHOR("Stefan Wahren <stefan.wahren@i2se.com>");
|
||||
MODULE_AUTHOR("Stefan Wahren <wahrenst@gmx.net>");
|
||||
MODULE_LICENSE("Dual BSD/GPL");
|
||||
MODULE_VERSION(QCASPI_DRV_VERSION);
|
||||
|
@ -1,20 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */
|
||||
/*
|
||||
* Copyright (c) 2011, 2012, Qualcomm Atheros Communications Inc.
|
||||
* Copyright (c) 2014, I2SE GmbH
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software
|
||||
* for any purpose with or without fee is hereby granted, provided
|
||||
* that the above copyright notice and this permission notice appear
|
||||
* in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
|
||||
* THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* Qualcomm Atheros SPI register definition.
|
||||
@ -39,8 +26,9 @@
|
||||
|
||||
#define QCASPI_GOOD_SIGNATURE 0xAA55
|
||||
|
||||
#define TX_RING_MAX_LEN 10
|
||||
#define TX_RING_MIN_LEN 2
|
||||
#define QCASPI_TX_RING_MAX_LEN 10
|
||||
#define QCASPI_TX_RING_MIN_LEN 2
|
||||
#define QCASPI_RX_MAX_FRAMES 4
|
||||
|
||||
/* sync related constants */
|
||||
#define QCASPI_SYNC_UNKNOWN 0
|
||||
@ -54,7 +42,7 @@
|
||||
#define QCASPI_EVENT_CPUON 1
|
||||
|
||||
struct tx_ring {
|
||||
struct sk_buff *skb[TX_RING_MAX_LEN];
|
||||
struct sk_buff *skb[QCASPI_TX_RING_MAX_LEN];
|
||||
u16 head;
|
||||
u16 tail;
|
||||
u16 size;
|
||||
|
@ -1,20 +1,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
|
||||
/*
|
||||
* Copyright (c) 2011, 2012, Qualcomm Atheros Communications Inc.
|
||||
* Copyright (c) 2017, I2SE GmbH
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software
|
||||
* for any purpose with or without fee is hereby granted, provided
|
||||
* that the above copyright notice and this permission notice appear
|
||||
* in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
|
||||
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
|
||||
* THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
|
||||
* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
||||
* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* This module implements the Qualcomm Atheros UART protocol for
|
||||
@ -410,6 +397,6 @@ module_serdev_device_driver(qca_uart_driver);
|
||||
|
||||
MODULE_DESCRIPTION("Qualcomm Atheros QCA7000 UART Driver");
|
||||
MODULE_AUTHOR("Qualcomm Atheros Communications");
|
||||
MODULE_AUTHOR("Stefan Wahren <stefan.wahren@i2se.com>");
|
||||
MODULE_AUTHOR("Stefan Wahren <wahrenst@gmx.net>");
|
||||
MODULE_LICENSE("Dual BSD/GPL");
|
||||
MODULE_VERSION(QCAUART_DRV_VERSION);
|
||||
|
Loading…
Reference in New Issue
Block a user