diff options
| author | David S. Miller <davem@davemloft.net> | 2010-04-07 02:53:30 -0400 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2010-04-07 02:53:30 -0400 |
| commit | 4a35ecf8bf1c4b039503fa554100fe85c761de76 (patch) | |
| tree | 9b75f5d5636004d9a9aa496924377379be09aa1f /drivers/net/can | |
| parent | b4d562e3c3553ac58c7120555c4e4aefbb090a2a (diff) | |
| parent | fb9e2d887243499b8d28efcf80821c4f6a092395 (diff) | |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts:
drivers/net/bonding/bond_main.c
drivers/net/via-velocity.c
drivers/net/wireless/iwlwifi/iwl-agn.c
Diffstat (limited to 'drivers/net/can')
| -rw-r--r-- | drivers/net/can/bfin_can.c | 97 |
1 files changed, 7 insertions, 90 deletions
diff --git a/drivers/net/can/bfin_can.c b/drivers/net/can/bfin_can.c index 866905fa4119..03489864376d 100644 --- a/drivers/net/can/bfin_can.c +++ b/drivers/net/can/bfin_can.c | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | #include <linux/can/dev.h> | 22 | #include <linux/can/dev.h> |
| 23 | #include <linux/can/error.h> | 23 | #include <linux/can/error.h> |
| 24 | 24 | ||
| 25 | #include <asm/bfin_can.h> | ||
| 25 | #include <asm/portmux.h> | 26 | #include <asm/portmux.h> |
| 26 | 27 | ||
| 27 | #define DRV_NAME "bfin_can" | 28 | #define DRV_NAME "bfin_can" |
| @@ -29,90 +30,6 @@ | |||
| 29 | #define TX_ECHO_SKB_MAX 1 | 30 | #define TX_ECHO_SKB_MAX 1 |
| 30 | 31 | ||
| 31 | /* | 32 | /* |
| 32 | * transmit and receive channels | ||
| 33 | */ | ||
| 34 | #define TRANSMIT_CHL 24 | ||
| 35 | #define RECEIVE_STD_CHL 0 | ||
| 36 | #define RECEIVE_EXT_CHL 4 | ||
| 37 | #define RECEIVE_RTR_CHL 8 | ||
| 38 | #define RECEIVE_EXT_RTR_CHL 12 | ||
| 39 | #define MAX_CHL_NUMBER 32 | ||
| 40 | |||
| 41 | /* | ||
| 42 | * bfin can registers layout | ||
| 43 | */ | ||
| 44 | struct bfin_can_mask_regs { | ||
| 45 | u16 aml; | ||
| 46 | u16 dummy1; | ||
| 47 | u16 amh; | ||
| 48 | u16 dummy2; | ||
| 49 | }; | ||
| 50 | |||
| 51 | struct bfin_can_channel_regs { | ||
| 52 | u16 data[8]; | ||
| 53 | u16 dlc; | ||
| 54 | u16 dummy1; | ||
| 55 | u16 tsv; | ||
| 56 | u16 dummy2; | ||
| 57 | u16 id0; | ||
| 58 | u16 dummy3; | ||
| 59 | u16 id1; | ||
| 60 | u16 dummy4; | ||
| 61 | }; | ||
| 62 | |||
| 63 | struct bfin_can_regs { | ||
| 64 | /* | ||
| 65 | * global control and status registers | ||
| 66 | */ | ||
| 67 | u16 mc1; /* offset 0 */ | ||
| 68 | u16 dummy1; | ||
| 69 | u16 md1; /* offset 4 */ | ||
| 70 | u16 rsv1[13]; | ||
| 71 | u16 mbtif1; /* offset 0x20 */ | ||
| 72 | u16 dummy2; | ||
| 73 | u16 mbrif1; /* offset 0x24 */ | ||
| 74 | u16 dummy3; | ||
| 75 | u16 mbim1; /* offset 0x28 */ | ||
| 76 | u16 rsv2[11]; | ||
| 77 | u16 mc2; /* offset 0x40 */ | ||
| 78 | u16 dummy4; | ||
| 79 | u16 md2; /* offset 0x44 */ | ||
| 80 | u16 dummy5; | ||
| 81 | u16 trs2; /* offset 0x48 */ | ||
| 82 | u16 rsv3[11]; | ||
| 83 | u16 mbtif2; /* offset 0x60 */ | ||
| 84 | u16 dummy6; | ||
| 85 | u16 mbrif2; /* offset 0x64 */ | ||
| 86 | u16 dummy7; | ||
| 87 | u16 mbim2; /* offset 0x68 */ | ||
| 88 | u16 rsv4[11]; | ||
| 89 | u16 clk; /* offset 0x80 */ | ||
| 90 | u16 dummy8; | ||
| 91 | u16 timing; /* offset 0x84 */ | ||
| 92 | u16 rsv5[3]; | ||
| 93 | u16 status; /* offset 0x8c */ | ||
| 94 | u16 dummy9; | ||
| 95 | u16 cec; /* offset 0x90 */ | ||
| 96 | u16 dummy10; | ||
| 97 | u16 gis; /* offset 0x94 */ | ||
| 98 | u16 dummy11; | ||
| 99 | u16 gim; /* offset 0x98 */ | ||
| 100 | u16 rsv6[3]; | ||
| 101 | u16 ctrl; /* offset 0xa0 */ | ||
| 102 | u16 dummy12; | ||
| 103 | u16 intr; /* offset 0xa4 */ | ||
| 104 | u16 rsv7[7]; | ||
| 105 | u16 esr; /* offset 0xb4 */ | ||
| 106 | u16 rsv8[37]; | ||
| 107 | |||
| 108 | /* | ||
| 109 | * channel(mailbox) mask and message registers | ||
| 110 | */ | ||
| 111 | struct bfin_can_mask_regs msk[MAX_CHL_NUMBER]; /* offset 0x100 */ | ||
| 112 | struct bfin_can_channel_regs chl[MAX_CHL_NUMBER]; /* offset 0x200 */ | ||
| 113 | }; | ||
| 114 | |||
| 115 | /* | ||
| 116 | * bfin can private data | 33 | * bfin can private data |
| 117 | */ | 34 | */ |
| 118 | struct bfin_can_priv { | 35 | struct bfin_can_priv { |
| @@ -163,7 +80,7 @@ static int bfin_can_set_bittiming(struct net_device *dev) | |||
| 163 | if (priv->can.ctrlmode & CAN_CTRLMODE_3_SAMPLES) | 80 | if (priv->can.ctrlmode & CAN_CTRLMODE_3_SAMPLES) |
| 164 | timing |= SAM; | 81 | timing |= SAM; |
| 165 | 82 | ||
| 166 | bfin_write16(®->clk, clk); | 83 | bfin_write16(®->clock, clk); |
| 167 | bfin_write16(®->timing, timing); | 84 | bfin_write16(®->timing, timing); |
| 168 | 85 | ||
| 169 | dev_info(dev->dev.parent, "setting CLOCK=0x%04x TIMING=0x%04x\n", | 86 | dev_info(dev->dev.parent, "setting CLOCK=0x%04x TIMING=0x%04x\n", |
| @@ -185,11 +102,11 @@ static void bfin_can_set_reset_mode(struct net_device *dev) | |||
| 185 | bfin_write16(®->gim, 0); | 102 | bfin_write16(®->gim, 0); |
| 186 | 103 | ||
| 187 | /* reset can and enter configuration mode */ | 104 | /* reset can and enter configuration mode */ |
| 188 | bfin_write16(®->ctrl, SRS | CCR); | 105 | bfin_write16(®->control, SRS | CCR); |
| 189 | SSYNC(); | 106 | SSYNC(); |
| 190 | bfin_write16(®->ctrl, CCR); | 107 | bfin_write16(®->control, CCR); |
| 191 | SSYNC(); | 108 | SSYNC(); |
| 192 | while (!(bfin_read16(®->ctrl) & CCA)) { | 109 | while (!(bfin_read16(®->control) & CCA)) { |
| 193 | udelay(10); | 110 | udelay(10); |
| 194 | if (--timeout == 0) { | 111 | if (--timeout == 0) { |
| 195 | dev_err(dev->dev.parent, | 112 | dev_err(dev->dev.parent, |
| @@ -244,7 +161,7 @@ static void bfin_can_set_normal_mode(struct net_device *dev) | |||
| 244 | /* | 161 | /* |
| 245 | * leave configuration mode | 162 | * leave configuration mode |
| 246 | */ | 163 | */ |
| 247 | bfin_write16(®->ctrl, bfin_read16(®->ctrl) & ~CCR); | 164 | bfin_write16(®->control, bfin_read16(®->control) & ~CCR); |
| 248 | 165 | ||
| 249 | while (bfin_read16(®->status) & CCA) { | 166 | while (bfin_read16(®->status) & CCA) { |
| 250 | udelay(10); | 167 | udelay(10); |
| @@ -726,7 +643,7 @@ static int bfin_can_suspend(struct platform_device *pdev, pm_message_t mesg) | |||
| 726 | 643 | ||
| 727 | if (netif_running(dev)) { | 644 | if (netif_running(dev)) { |
| 728 | /* enter sleep mode */ | 645 | /* enter sleep mode */ |
| 729 | bfin_write16(®->ctrl, bfin_read16(®->ctrl) | SMR); | 646 | bfin_write16(®->control, bfin_read16(®->control) | SMR); |
| 730 | SSYNC(); | 647 | SSYNC(); |
| 731 | while (!(bfin_read16(®->intr) & SMACK)) { | 648 | while (!(bfin_read16(®->intr) & SMACK)) { |
| 732 | udelay(10); | 649 | udelay(10); |
