- 12 11月, 2019 2 次提交
-
-
由 Pankaj Sharma 提交于
The Bosch MCAN hardware (3.1.0 and above) supports interrupt flag to detect Protocol error in arbitration phase. Transmit error statistics is currently not updated from the MCAN driver. Protocol error in arbitration phase is a TX error and the network statistics should be updated accordingly. The member "tx_error" of "struct net_device_stats" should be incremented as arbitration is a transmit protocol error. Also "arbitration_lost" of "struct can_device_stats" should be incremented to report arbitration lost. Signed-off-by: NPankaj Sharma <pankj.sharma@samsung.com> Signed-off-by: NSriram Dash <sriram.dash@samsung.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Pankaj Sharma 提交于
According to the CAN Specification (see ISO 11898-1:2015, 8.3.4 Recovery Management), the M_CAN provides means for automatic retransmission of frames that have lost arbitration or that have been disturbed by errors during transmission. By default automatic retransmission is enabled. The Bosch MCAN controller has support for disabling automatic retransmission. To support time-triggered communication as described in ISO 11898-1:2015, chapter 9.2, the automatic retransmission may be disabled via CCCR.DAR. CAN_CTRLMODE_ONE_SHOT is used for disabling automatic retransmission. Signed-off-by: NPankaj Sharma <pankj.sharma@samsung.com> Signed-off-by: NSriram Dash <sriram.dash@samsung.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
- 24 7月, 2019 3 次提交
-
-
由 Dan Murphy 提交于
Rename the common m_can_priv class structure to m_can_classdev as this is more descriptive. Acked-by: NWolfgang Grandegger <wg@grandegger.com> Signed-off-by: NDan Murphy <dmurphy@ti.com> Acked-by: NFaiz Abbas <faiz_abbas@ti.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Dan Murphy 提交于
Create a m_can platform framework that peripheral devices can register to and use common code and register sets. The peripheral devices may provide read/write and configuration support of the IP. Acked-by: NWolfgang Grandegger <wg@grandegger.com> Signed-off-by: NDan Murphy <dmurphy@ti.com> Acked-by: NFaiz Abbas <faiz_abbas@ti.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Dan Murphy 提交于
Fix checkpatch issues found during the m_can framework creation, before framework creation in the following patches. Fix these 4 check issues: CHECK: Unnecessary parentheses around 'cdev->can.state != CAN_STATE_ERROR_WARNING' if (psr & PSR_EW && (cdev->can.state != CAN_STATE_ERROR_WARNING)) { CHECK: Unnecessary parentheses around 'cdev->can.state != CAN_STATE_ERROR_PASSIVE' if ((psr & PSR_EP) && (cdev->can.state != CAN_STATE_ERROR_PASSIVE)) { CHECK: Unnecessary parentheses around 'cdev->can.state != CAN_STATE_BUS_OFF' if ((psr & PSR_BO) && (cdev->can.state != CAN_STATE_BUS_OFF)) { CHECK: Unnecessary parentheses around 'priv->version <= 31' if ((priv->version <= 31) && (irqstatus & IR_MRAF) && (m_can_read(priv, M_CAN_ECR) & ECR_RP)) { Signed-off-by: NDan Murphy <dmurphy@ti.com> Acked-by: NFaiz Abbas <faiz_abbas@ti.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
- 08 6月, 2019 1 次提交
-
-
由 Eugen Hristev 提交于
During frame reception while the MCAN is in Error Passive state and the Receive Error Counter has thevalue MCAN_ECR.REC = 127, it may happen that MCAN_IR.MRAF is set although there was no Message RAM access failure. If MCAN_IR.MRAF is enabled, an interrupt to the Host CPU is generated. Work around: The Message RAM Access Failure interrupt routine needs to check whether MCAN_ECR.RP = '1' and MCAN_ECR.REC = '127'. In this case, reset MCAN_IR.MRAF. No further action is required. This affects versions older than 3.2.0 Errata explained on Sama5d2 SoC which includes this hardware block: http://ww1.microchip.com/downloads/en/DeviceDoc/SAMA5D2-Family-Silicon-Errata-and-Data-Sheet-Clarification-DS80000803B.pdf chapter 6.2 Reproducibility: If 2 devices with m_can are connected back to back, configuring different bitrate on them will lead to interrupt storm on the receiving side, with error "Message RAM access failure occurred". Another way is to have a bad hardware connection. Bad wire connection can lead to this issue as well. This patch fixes the issue according to provided workaround. Signed-off-by: NEugen Hristev <eugen.hristev@microchip.com> Reviewed-by: NLudovic Desroches <ludovic.desroches@microchip.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
- 23 7月, 2018 3 次提交
-
-
由 Faiz Abbas 提交于
MCAN message ram should only be accessed once clocks are enabled. Therefore, move the call to parse/init the message ram to after clocks are enabled. Signed-off-by: NFaiz Abbas <faiz_abbas@ti.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Faiz Abbas 提交于
pm_runtime_get_sync() returns a 1 if the state of the device is already 'active'. This is not a failure case and should return a success. Therefore fix error handling for pm_runtime_get_sync() call such that it returns success when the value is 1. Also cleanup the TODO for using runtime PM for sleep mode as that is implemented. Signed-off-by: NFaiz Abbas <faiz_abbas@ti.com> Cc: <stable@vger.kernel.org Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Roman Fietze 提交于
Inside m_can_chip_config(), when setting up the new value of the CCCR, the CCCR_NISO bit is not cleared like the others, CCCR_TEST, CCCR_MON, CCCR_BRSE and CCCR_FDOE, before checking the can.ctrlmode bits for CAN_CTRLMODE_FD_NON_ISO. This way once the controller was configured for CAN_CTRLMODE_FD_NON_ISO, this mode could never be cleared again. This fix is only relevant for controllers with version 3.1.x or 3.2.x. Older versions do not support NISO. Signed-off-by: NRoman Fietze <roman.fietze@telemotive.de> Cc: linux-stable <stable@vger.kernel.org> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
- 12 3月, 2018 2 次提交
-
-
由 Bich HEMON 提交于
Make sure to apply the correct pin state in suspend/resume callbacks. Putting pins in sleep state saves power. Signed-off-by: NBich Hemon <bich.hemon@st.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Wolfram Sang 提交于
Due to a typo, the mask was destroyed by a comparison instead of a bit shift. Reported-by: NGeert Uytterhoeven <geert+renesas@glider.be> Signed-off-by: NWolfram Sang <wsa+renesas@sang-engineering.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
- 19 1月, 2018 1 次提交
-
-
由 Arnd Bergmann 提交于
Building without CONFIG_PM results in a harmless warning: drivers/net/can/m_can/m_can.c:1763:12: error: 'm_can_runtime_resume' defined but not used [-Werror=unused-function] drivers/net/can/m_can/m_can.c:1752:12: error: 'm_can_runtime_suspend' defined but not used [-Werror=unused-function] Marking the functions as __maybe_unused lets the compiler silently drop them instead. Fixes: cdf8259d ("can: m_can: Add PM Support") Signed-off-by: NArnd Bergmann <arnd@arndb.de> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
- 16 1月, 2018 6 次提交
-
-
由 Franklin S Cooper Jr 提交于
Add call to new generic functions that provides support via a binding to limit the arbitration rate and/or data rate imposed by the physical transceiver connected to the MCAN peripheral. Signed-off-by: NFranklin S Cooper Jr <fcooper@ti.com> Signed-off-by: NSekhar Nori <nsekhar@ti.com> Signed-off-by: NFaiz Abbas <faiz_abbas@ti.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Faiz Abbas 提交于
Add support for CONFIG_PM which is the new way to handle managing clocks. Move the clock management to pm_runtime_resume() and pm_runtime_suspend() callbacks for the driver. CONFIG_PM is required by OMAP based devices to handle clock management. Therefore, this allows future Texas Instruments SoCs that have the MCAN IP to work with this driver. Signed-off-by: NFaiz Abbas <faiz_abbas@ti.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Marc Kleine-Budde 提交于
As the previous patch removed alloc_m_can_dev(), let's get rid of the corresponding free_m_can_dev() and call free_candev() directly. Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Faiz Abbas 提交于
With the version no longer required to allocate the net device, it can be moved to probe and the alloc_m_can_dev() function can be simplified. Therefore, move the allocation of net device to probe and change alloc_m_can_dev() to setup_m_can_dev(). Signed-off-by: NFaiz Abbas <faiz_abbas@ti.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Faiz Abbas 提交于
Currently the m_can version is used to set the tx_fifo_count to 1 when allocating the net device. However, this is redundant as a value of 1 for the tx_fifo_count needs to be provided in the bosch,mram-cfg property of the device tree node anyway. Therefore, remove check for version when allocating the net device. Signed-off-by: NFaiz Abbas <faiz_abbas@ti.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Franklin S Cooper Jr 提交于
During test transmitting using CAN-FD at high bitrates (> 2 Mbps) would fail. Scoping the signals I noticed that only a single bit was being transmitted and with a bit more investigation realized the actual MCAN IP would go back to initialization mode automatically. It appears this issue is due to the MCAN needing to use the Transmitter Delay Compensation Mode with the correct value for the transmitter delay compensation offset (tdco). What impacts the tdco value isn't 100% clear but to calculate it you use an equation defined in the MCAN User's Guide. The user guide mentions that this register needs to be set based on clock values, secondary sample point and the data bitrate. One of the key variables that can't automatically be determined is the secondary sample point (ssp). This ssp is similar to the sp but is specific to this transmitter delay compensation mode. The guidelines for configuring ssp is rather vague but via some CAN test it appears for DRA76x that putting the value same as data sampling point works. The CAN-CIA's "Bit Time Requirements for CAN FD" paper presented at the International CAN Conference 2013 indicates that this TDC mode is only needed for data bit rates above 2.5 Mbps. Therefore, only enable this mode when the data bit rate is above 2.5 Mbps. Signed-off-by: NFranklin S Cooper Jr <fcooper@ti.com> Signed-off-by: NSekhar Nori <nsekhar@ti.com> Signed-off-by: NFaiz Abbas <faiz_abbas@ti.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
- 18 5月, 2017 4 次提交
-
-
由 Quentin Schulz 提交于
This adds Power Management deep Suspend/Resume support for Bosch M_CAN chip. When entering deep sleep, the clocks are gated, the interrupts are disabled. When resuming from deep sleep, the chip needs to be reinitialized, the clocks ungated and the interrupts enabled. Signed-off-by: NQuentin Schulz <quentin.schulz@free-electrons.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Quentin Schulz 提交于
This creates a function to ungate M_CAN clocks and another to gate the same clocks, then swaps all gating/ungating code with their respective function. Signed-off-by: NQuentin Schulz <quentin.schulz@free-electrons.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Quentin Schulz 提交于
This moves clocks gating outside of the m_can_stop function as the m_can_start function does not (and cannot, at least in current implementation) ungate clocks. This way, both functions can now be used symmetrically. Signed-off-by: NQuentin Schulz <quentin.schulz@free-electrons.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Quentin Schulz 提交于
To avoid possible ECC/parity checksum errors when reading an uninitialized buffer, the entire Message RAM is initialized when probing the driver. This initialization is done in the same function reading the Device Tree properties. This patch moves the RAM initialization to a separate function so it can be called separately from device initialization from Device Tree. Signed-off-by: NQuentin Schulz <quentin.schulz@free-electrons.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
- 25 4月, 2017 7 次提交
-
-
由 Mario Huettel 提交于
* Added defines for TX Event FIFO Element * Adapted ndo_start_xmit function. For versions >= v3.1.x it uses the TX FIFO to optimize the data throughput. It stores the echo skb at the same index as in the M_CAN's TX FIFO. The frame's message marker is set to this index. This message marker is received in the TX Event FIFO after the message was successfully transmitted. It is used to echo the correct echo skb back to the network stack. * Added m_can_echo_tx_event function. It reads all received message markers in the TX Event FIFO and loops back the corresponding echo skbs. * ISR checks for new TX Event Entry interrupt for version >= 3.1.x. Signed-off-by: NMario Huettel <mario.huettel@gmx.net> Reviewed-by: NOliver Hartkopp <socketcan@hartkopp.net> Tested-by: NQuentin Schulz <quentin.schulz@free-electrons.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Mario Huettel 提交于
* TX/TX Event FIFO sizes are configured for version >= v3.1.x Signed-off-by: NMario Huettel <mario.huettel@gmx.net> Tested-by: NQuentin Schulz <quentin.schulz@free-electrons.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Mario Huettel 提交于
This patch adapts the initialization of the M_CAN. So it can be used with all versions >= 3.0.x. Changes: * Added version element to m_can_priv structure to hold M_CAN version. * Renamed bittiming structs for version 3.0.x * Added new bittiming structs for version >= 3.1.x * Function alloc_m_can_dev takes 2 new arguments. The TX FIFO size and the base address of the module. * Chip configuration for CAN_CTRLMODE_LOOPBACK is changed: Enabled CCCR_MON bit. In combination with TEST_LBCK it activates the internal loopback mode. Leaving CCCR_MON '0' results in external loopback mode. * Clocks are temporarily enabled by platform_propbe function in order to allow read access to the Core Release register and the Control Register. Registers are used to detect M_CAN version and optional Non-ISO Feature. Initialization of M_CAN for version >= 3.1.x: * TX FIFO of M_CAN is used to transmit frames. The driver does not need to stop the tx queue after each frame sent. * Initialization of TX Event FIFO is added. * NON-ISO is fixed for all M_CAN versions < 3.2.x. Version 3.2.x _can_ have the NISO (Non-ISO) bit which can switch the mode of the M_CAN to Non-ISO mode. This bit does not have to be writeable. Therefore it is checked. If it is writable Non-ISO support is added to the controllers supported CAN modes. New Functions: * Function to check the Core Release version. The read value determines the behaviour of the driver. * Function to check if the NISO bit for version >= 3.2.x is implemented. Signed-off-by: NMario Huettel <mario.huettel@gmx.net> Reviewed-by: NOliver Hartkopp <socketcan@hartkopp.net> Tested-by: NQuentin Schulz <quentin.schulz@free-electrons.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Mario Huettel 提交于
* Updated register defines to newest M_CAN version (v3.2.1). * Changed defines in the whole code. Signed-off-by: NMario Huettel <mario.huettel@gmx.net> Reviewed-by: NOliver Hartkopp <socketcan@hartkopp.net> Tested-by: NQuentin Schulz <quentin.schulz@free-electrons.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Mario Huettel 提交于
The virtual address of the device was printed. I removed it because it leaks internal information. Signed-off-by: NMario Huettel <mario.huettel@gmx.net> Tested-by: NQuentin Schulz <quentin.schulz@free-electrons.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Mario Huettel 提交于
FIFO water marks disabled because the driver doesn't handle water mark events. Signed-off-by: NMario Huettel <mario.huettel@gmx.net> Reviewed-by: NOliver Hartkopp <socketcan@hartkopp.net> Tested-by: NQuentin Schulz <quentin.schulz@free-electrons.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Mario Huettel 提交于
* Disabled interrupt line 1. The driver didn't use it. Signed-off-by: NMario Huettel <mario.huettel@gmx.net> Tested-by: NQuentin Schulz <quentin.schulz@free-electrons.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
- 31 1月, 2017 1 次提交
-
-
由 Eric Dumazet 提交于
napi_complete_done() allows to opt-in for gro_flush_timeout, added back in linux-3.19, commit 3b47d303 ("net: gro: add a per device gro flush timer") This allows for more efficient GRO aggregation without sacrifying latencies. Signed-off-by: NEric Dumazet <edumazet@google.com> Signed-off-by: NDavid S. Miller <davem@davemloft.net>
-
- 09 5月, 2016 1 次提交
-
-
由 Oliver Hartkopp 提交于
As described in 'can: m_can: tag current CAN FD controllers as non-ISO' (6cfda7fb) it is possible to define fixed configuration options by setting the according bit in 'ctrlmode' and clear it in 'ctrlmode_supported'. This leads to the incovenience that the fixed configuration bits can not be passed by netlink even when they have the correct values (e.g. non-ISO, FD). This patch fixes that issue and not only allows fixed set bit values to be set again but now requires(!) to provide these fixed values at configuration time. A valid CAN FD configuration consists of a nominal/arbitration bittiming, a data bittiming and a control mode with CAN_CTRLMODE_FD set - which is now enforced by a new can_validate() function. This fix additionally removed the inconsistency that was prohibiting the support of 'CANFD-only' controller drivers, like the RCar CAN FD. For this reason a new helper can_set_static_ctrlmode() has been introduced to provide a proper interface to handle static enabled CAN controller options. Reported-by: NRamesh Shanmugasundaram <ramesh.shanmugasundaram@bp.renesas.com> Signed-off-by: NOliver Hartkopp <socketcan@hartkopp.net> Reviewed-by: NRamesh Shanmugasundaram <ramesh.shanmugasundaram@bp.renesas.com> Cc: <stable@vger.kernel.org> # >= 3.18 Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
- 23 11月, 2015 2 次提交
-
-
由 Oliver Hartkopp 提交于
The assignment 'cf->data[2] |= CAN_ERR_PROT_UNSPEC' used at CAN error message creation time is obsolete as CAN_ERR_PROT_UNSPEC is zero and cf->data[2] is initialized with zero in alloc_can_err_skb() anyway. So we could either assign 'cf->data[2] = CAN_ERR_PROT_UNSPEC' correctly or we can remove the obsolete OR operation entirely. Signed-off-by: NOliver Hartkopp <socketcan@hartkopp.net> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Oliver Hartkopp 提交于
As Dan Carpenter reported in http://marc.info/?l=linux-can&m=144793696016187 the assignment of the error location in CAN error messages had some bit wise overlaps. Indeed the value to be assigned in data[3] is no bitfield but defines a single value which points to a location inside the CAN frame on the wire. This patch fixes the assignments for the error locations in error messages. Reported-by: NDan Carpenter <dan.carpenter@oracle.com> Signed-off-by: NOliver Hartkopp <socketcan@hartkopp.net> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
- 23 3月, 2015 1 次提交
-
-
由 Marc Kleine-Budde 提交于
This patch removes the return from the void function m_can_fifo_write(). Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
- 20 1月, 2015 1 次提交
-
-
由 Andri Yngvason 提交于
In order to be able to move the stats increment from can_bus_off() into can_change_state(), the increment had to be moved back into code that was using can_bus_off() but not can_change_state(). As a side-effect, this patch fixes the following bugs: * Redundant call to can_bus_off() in c_can. * Bus-off counted twice in xilinx_can. Signed-off-by: NAndri Yngvason <andri.yngvason@marel.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
- 15 1月, 2015 1 次提交
-
-
由 Oliver Hartkopp 提交于
During the CAN FD standardization process within the ISO it turned out that the failure detection capability has to be improved. The CAN in Automation organization (CiA) defined the already implemented CAN FD controllers as 'non-ISO' and the upcoming improved CAN FD controllers as 'ISO' compliant. See at http://www.can-cia.com/index.php?id=1937 Finally there will be three types of CAN FD controllers in the future: 1. ISO compliant (fixed) 2. non-ISO compliant (fixed, like the M_CAN IP v3.0.1 in m_can.c) 3. ISO/non-ISO CAN FD controllers (switchable, like the PEAK USB FD) So the current M_CAN driver for the M_CAN IP v3.0.1 has to expose its non-ISO implementation by setting the CAN_CTRLMODE_FD_NON_ISO ctrlmode at startup. As this bit cannot be switched at configuration time CAN_CTRLMODE_FD_NON_ISO must not be set in ctrlmode_supported of the current M_CAN driver. Signed-off-by: NOliver Hartkopp <socketcan@hartkopp.net> Cc: linux-stable <stable@vger.kernel.org> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
- 19 11月, 2014 4 次提交
-
-
由 Dong Aisheng 提交于
Bosch M_CAN is CAN FD capable device. This patch implements the CAN FD features include up to 64 bytes payload and bitrate switch function. 1) Change the Rx FIFO and Tx Buffer to 64 bytes for support CAN FD up to 64 bytes payload. It's backward compatible with old 8 bytes normal CAN frame. 2) Allocate can frame or canfd frame based on EDL bit 3) Bitrate Switch function is disabled by default and will be enabled according to CANFD_BRS bit in cf->flags. Acked-by: NOliver Hartkopp <socketcan@hartkopp.net> Signed-off-by: NDong Aisheng <b29396@freescale.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Dong Aisheng 提交于
Fix a few error messages. Signed-off-by: NDong Aisheng <b29396@freescale.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Dong Aisheng 提交于
The spec mentions there may be a delay until the value written to INIT can be read back due to the synchronization mechanism between the two clock domains. But it does not indicate the exact clock cycles needed. The 5us delay is a test value and seems ok. Without the delay, CCCR.CCE bit may fail to be set and then the initialization fail sometimes when do repeatly up and down. Signed-off-by: NDong Aisheng <b29396@freescale.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-
由 Dong Aisheng 提交于
The original code missed to set the cf->can_dlc in the RTR case, so add it. Signed-off-by: NDong Aisheng <b29396@freescale.com> Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
-