提交 30de83a0 编写于 作者: D David S. Miller

Merge branch 'fixes-for-3.9' of git://gitorious.org/linux-can/linux-can

Marc Kleine-Budde says:

====================
here's a patch series for net for the v3.9 release cycle. Fengguang Wu found
two problems with the sja1000 drivers:

A macro in the SH architecture collides with one in the sja1000 driver. I
created a minimal patch suited for stable, only changing this particular
define. (Once net is merged back to net-next, I'll post a patch to uniformly
use a SJA1000_ prefix for the sja100 private defines.) If you prefer, I can
squash both patches together.

Fengguang further noticed that the peak pcmcia driver will not compile on archs
without ioport support. I created a patch to limit the driver to archs which
select HAS_IOPORT in Kconfig.
====================
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
...@@ -46,6 +46,7 @@ config CAN_EMS_PCI ...@@ -46,6 +46,7 @@ config CAN_EMS_PCI
config CAN_PEAK_PCMCIA config CAN_PEAK_PCMCIA
tristate "PEAK PCAN-PC Card" tristate "PEAK PCAN-PC Card"
depends on PCMCIA depends on PCMCIA
depends on HAS_IOPORT
---help--- ---help---
This driver is for the PCAN-PC Card PCMCIA adapter (1 or 2 channels) This driver is for the PCAN-PC Card PCMCIA adapter (1 or 2 channels)
from PEAK-System (http://www.peak-system.com). To compile this from PEAK-System (http://www.peak-system.com). To compile this
......
...@@ -348,7 +348,7 @@ static inline int plx_pci_check_sja1000(const struct sja1000_priv *priv) ...@@ -348,7 +348,7 @@ static inline int plx_pci_check_sja1000(const struct sja1000_priv *priv)
*/ */
if ((priv->read_reg(priv, REG_CR) & REG_CR_BASICCAN_INITIAL_MASK) == if ((priv->read_reg(priv, REG_CR) & REG_CR_BASICCAN_INITIAL_MASK) ==
REG_CR_BASICCAN_INITIAL && REG_CR_BASICCAN_INITIAL &&
(priv->read_reg(priv, REG_SR) == REG_SR_BASICCAN_INITIAL) && (priv->read_reg(priv, SJA1000_REG_SR) == REG_SR_BASICCAN_INITIAL) &&
(priv->read_reg(priv, REG_IR) == REG_IR_BASICCAN_INITIAL)) (priv->read_reg(priv, REG_IR) == REG_IR_BASICCAN_INITIAL))
flag = 1; flag = 1;
...@@ -360,7 +360,7 @@ static inline int plx_pci_check_sja1000(const struct sja1000_priv *priv) ...@@ -360,7 +360,7 @@ static inline int plx_pci_check_sja1000(const struct sja1000_priv *priv)
* See states on p. 23 of the Datasheet. * See states on p. 23 of the Datasheet.
*/ */
if (priv->read_reg(priv, REG_MOD) == REG_MOD_PELICAN_INITIAL && if (priv->read_reg(priv, REG_MOD) == REG_MOD_PELICAN_INITIAL &&
priv->read_reg(priv, REG_SR) == REG_SR_PELICAN_INITIAL && priv->read_reg(priv, SJA1000_REG_SR) == REG_SR_PELICAN_INITIAL &&
priv->read_reg(priv, REG_IR) == REG_IR_PELICAN_INITIAL) priv->read_reg(priv, REG_IR) == REG_IR_PELICAN_INITIAL)
return flag; return flag;
......
...@@ -92,7 +92,7 @@ static void sja1000_write_cmdreg(struct sja1000_priv *priv, u8 val) ...@@ -92,7 +92,7 @@ static void sja1000_write_cmdreg(struct sja1000_priv *priv, u8 val)
*/ */
spin_lock_irqsave(&priv->cmdreg_lock, flags); spin_lock_irqsave(&priv->cmdreg_lock, flags);
priv->write_reg(priv, REG_CMR, val); priv->write_reg(priv, REG_CMR, val);
priv->read_reg(priv, REG_SR); priv->read_reg(priv, SJA1000_REG_SR);
spin_unlock_irqrestore(&priv->cmdreg_lock, flags); spin_unlock_irqrestore(&priv->cmdreg_lock, flags);
} }
...@@ -502,7 +502,7 @@ irqreturn_t sja1000_interrupt(int irq, void *dev_id) ...@@ -502,7 +502,7 @@ irqreturn_t sja1000_interrupt(int irq, void *dev_id)
while ((isrc = priv->read_reg(priv, REG_IR)) && (n < SJA1000_MAX_IRQ)) { while ((isrc = priv->read_reg(priv, REG_IR)) && (n < SJA1000_MAX_IRQ)) {
n++; n++;
status = priv->read_reg(priv, REG_SR); status = priv->read_reg(priv, SJA1000_REG_SR);
/* check for absent controller due to hw unplug */ /* check for absent controller due to hw unplug */
if (status == 0xFF && sja1000_is_absent(priv)) if (status == 0xFF && sja1000_is_absent(priv))
return IRQ_NONE; return IRQ_NONE;
...@@ -530,7 +530,7 @@ irqreturn_t sja1000_interrupt(int irq, void *dev_id) ...@@ -530,7 +530,7 @@ irqreturn_t sja1000_interrupt(int irq, void *dev_id)
/* receive interrupt */ /* receive interrupt */
while (status & SR_RBS) { while (status & SR_RBS) {
sja1000_rx(dev); sja1000_rx(dev);
status = priv->read_reg(priv, REG_SR); status = priv->read_reg(priv, SJA1000_REG_SR);
/* check for absent controller */ /* check for absent controller */
if (status == 0xFF && sja1000_is_absent(priv)) if (status == 0xFF && sja1000_is_absent(priv))
return IRQ_NONE; return IRQ_NONE;
......
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
/* SJA1000 registers - manual section 6.4 (Pelican Mode) */ /* SJA1000 registers - manual section 6.4 (Pelican Mode) */
#define REG_MOD 0x00 #define REG_MOD 0x00
#define REG_CMR 0x01 #define REG_CMR 0x01
#define REG_SR 0x02 #define SJA1000_REG_SR 0x02
#define REG_IR 0x03 #define REG_IR 0x03
#define REG_IER 0x04 #define REG_IER 0x04
#define REG_ALC 0x0B #define REG_ALC 0x0B
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册