diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-04-30 16:04:14 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-04-30 16:04:14 -0400 |
commit | 54413b825ca502b9384edabf972c512c29d64010 (patch) | |
tree | 7c8eed91a9e720f042aca51f05e4da0d7b062804 /drivers | |
parent | be1066bbcd443a65df312fdecea7e4959adedb45 (diff) | |
parent | 64fc74f5f6055e8470208a7d9cfc8d3994fff34d (diff) |
Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus
* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: (27 commits)
MIPS: Loongson 2F: Fix of problems introduced by -mfix-loongson2f-jump
MIPS: Loongson-2F: Use CONFIG_CPU_JUMP_WORKAROUNDS to control workarounds.
MIPS: Loongson 2F: Enable fixups of the latest binutils
MIPS: Loongson: Add CPU_LOONGSON2F_WORKAROUNDS
MIPS: Kconfig: Make Broadcom SoC support naming consistent
MIPS: BCM63xx: Update defconfig
MIPS: oprofile: Fix breakage when CONFIG_OPROFILE=m
STAGING: octeon-ethernet: Use proper phy addresses for Movidis hardware.
NET: mdio-octeon: Enable the hardware before using it.
I2C: Fix section mismatch errors in i2c-octeon.c
MIPS: Loongson: Fix LOONGSON_ADDRWIN_CFG macro.
MIPS: Loongson: Fix phys_mem_access_prot() check
MIPS: Loongson: Fix find_vga_mem_init()
MIPS: Loongson: Fix typo in gdium mach type string.
MIPS: Use CKSEG1ADDR for uncached handler
MIPS: Check for accesses beyond the end of the PGD.
MIPS: Use uasm_i_ds{r,l}l_safe() instead of uasm_i_ds{r,l}l() in tlbex.c
MIPS: Add uasm_i_dsrl_safe() and uasm_i_dsll_safe() to uasm.
MIPS: die() does not call die notifier chain
MIPS: Swarm, Littlesur: Enable PATA platform driver.
...
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/dma/txx9dmac.c | 2 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-octeon.c | 4 | ||||
-rw-r--r-- | drivers/net/phy/mdio-octeon.c | 10 | ||||
-rw-r--r-- | drivers/pcmcia/db1xxx_ss.c | 16 | ||||
-rw-r--r-- | drivers/staging/octeon/cvmx-helper-board.c | 8 |
5 files changed, 26 insertions, 14 deletions
diff --git a/drivers/dma/txx9dmac.c b/drivers/dma/txx9dmac.c index 3ebc61067e54..75fcf1ac8bb7 100644 --- a/drivers/dma/txx9dmac.c +++ b/drivers/dma/txx9dmac.c | |||
@@ -1359,3 +1359,5 @@ module_exit(txx9dmac_exit); | |||
1359 | MODULE_LICENSE("GPL"); | 1359 | MODULE_LICENSE("GPL"); |
1360 | MODULE_DESCRIPTION("TXx9 DMA Controller driver"); | 1360 | MODULE_DESCRIPTION("TXx9 DMA Controller driver"); |
1361 | MODULE_AUTHOR("Atsushi Nemoto <anemo@mba.ocn.ne.jp>"); | 1361 | MODULE_AUTHOR("Atsushi Nemoto <anemo@mba.ocn.ne.jp>"); |
1362 | MODULE_ALIAS("platform:txx9dmac"); | ||
1363 | MODULE_ALIAS("platform:txx9dmac-chan"); | ||
diff --git a/drivers/i2c/busses/i2c-octeon.c b/drivers/i2c/busses/i2c-octeon.c index a2481f40ea1c..0e9f85d0a835 100644 --- a/drivers/i2c/busses/i2c-octeon.c +++ b/drivers/i2c/busses/i2c-octeon.c | |||
@@ -447,7 +447,7 @@ static struct i2c_adapter octeon_i2c_ops = { | |||
447 | /** | 447 | /** |
448 | * octeon_i2c_setclock - Calculate and set clock divisors. | 448 | * octeon_i2c_setclock - Calculate and set clock divisors. |
449 | */ | 449 | */ |
450 | static int __init octeon_i2c_setclock(struct octeon_i2c *i2c) | 450 | static int __devinit octeon_i2c_setclock(struct octeon_i2c *i2c) |
451 | { | 451 | { |
452 | int tclk, thp_base, inc, thp_idx, mdiv_idx, ndiv_idx, foscl, diff; | 452 | int tclk, thp_base, inc, thp_idx, mdiv_idx, ndiv_idx, foscl, diff; |
453 | int thp = 0x18, mdiv = 2, ndiv = 0, delta_hz = 1000000; | 453 | int thp = 0x18, mdiv = 2, ndiv = 0, delta_hz = 1000000; |
@@ -490,7 +490,7 @@ static int __init octeon_i2c_setclock(struct octeon_i2c *i2c) | |||
490 | return 0; | 490 | return 0; |
491 | } | 491 | } |
492 | 492 | ||
493 | static int __init octeon_i2c_initlowlevel(struct octeon_i2c *i2c) | 493 | static int __devinit octeon_i2c_initlowlevel(struct octeon_i2c *i2c) |
494 | { | 494 | { |
495 | u8 status; | 495 | u8 status; |
496 | int tries; | 496 | int tries; |
diff --git a/drivers/net/phy/mdio-octeon.c b/drivers/net/phy/mdio-octeon.c index a872aea4ed74..f443d43edd80 100644 --- a/drivers/net/phy/mdio-octeon.c +++ b/drivers/net/phy/mdio-octeon.c | |||
@@ -88,6 +88,7 @@ static int octeon_mdiobus_write(struct mii_bus *bus, int phy_id, | |||
88 | static int __init octeon_mdiobus_probe(struct platform_device *pdev) | 88 | static int __init octeon_mdiobus_probe(struct platform_device *pdev) |
89 | { | 89 | { |
90 | struct octeon_mdiobus *bus; | 90 | struct octeon_mdiobus *bus; |
91 | union cvmx_smix_en smi_en; | ||
91 | int i; | 92 | int i; |
92 | int err = -ENOENT; | 93 | int err = -ENOENT; |
93 | 94 | ||
@@ -103,6 +104,10 @@ static int __init octeon_mdiobus_probe(struct platform_device *pdev) | |||
103 | if (!bus->mii_bus) | 104 | if (!bus->mii_bus) |
104 | goto err; | 105 | goto err; |
105 | 106 | ||
107 | smi_en.u64 = 0; | ||
108 | smi_en.s.en = 1; | ||
109 | cvmx_write_csr(CVMX_SMIX_EN(bus->unit), smi_en.u64); | ||
110 | |||
106 | /* | 111 | /* |
107 | * Standard Octeon evaluation boards don't support phy | 112 | * Standard Octeon evaluation boards don't support phy |
108 | * interrupts, we need to poll. | 113 | * interrupts, we need to poll. |
@@ -133,17 +138,22 @@ err_register: | |||
133 | 138 | ||
134 | err: | 139 | err: |
135 | devm_kfree(&pdev->dev, bus); | 140 | devm_kfree(&pdev->dev, bus); |
141 | smi_en.u64 = 0; | ||
142 | cvmx_write_csr(CVMX_SMIX_EN(bus->unit), smi_en.u64); | ||
136 | return err; | 143 | return err; |
137 | } | 144 | } |
138 | 145 | ||
139 | static int __exit octeon_mdiobus_remove(struct platform_device *pdev) | 146 | static int __exit octeon_mdiobus_remove(struct platform_device *pdev) |
140 | { | 147 | { |
141 | struct octeon_mdiobus *bus; | 148 | struct octeon_mdiobus *bus; |
149 | union cvmx_smix_en smi_en; | ||
142 | 150 | ||
143 | bus = dev_get_drvdata(&pdev->dev); | 151 | bus = dev_get_drvdata(&pdev->dev); |
144 | 152 | ||
145 | mdiobus_unregister(bus->mii_bus); | 153 | mdiobus_unregister(bus->mii_bus); |
146 | mdiobus_free(bus->mii_bus); | 154 | mdiobus_free(bus->mii_bus); |
155 | smi_en.u64 = 0; | ||
156 | cvmx_write_csr(CVMX_SMIX_EN(bus->unit), smi_en.u64); | ||
147 | return 0; | 157 | return 0; |
148 | } | 158 | } |
149 | 159 | ||
diff --git a/drivers/pcmcia/db1xxx_ss.c b/drivers/pcmcia/db1xxx_ss.c index 2d48196a48cd..0f4cc3f00028 100644 --- a/drivers/pcmcia/db1xxx_ss.c +++ b/drivers/pcmcia/db1xxx_ss.c | |||
@@ -146,7 +146,6 @@ static irqreturn_t db1200_pcmcia_cdirq(int irq, void *data) | |||
146 | static int db1x_pcmcia_setup_irqs(struct db1x_pcmcia_sock *sock) | 146 | static int db1x_pcmcia_setup_irqs(struct db1x_pcmcia_sock *sock) |
147 | { | 147 | { |
148 | int ret; | 148 | int ret; |
149 | unsigned long flags; | ||
150 | 149 | ||
151 | if (sock->stschg_irq != -1) { | 150 | if (sock->stschg_irq != -1) { |
152 | ret = request_irq(sock->stschg_irq, db1000_pcmcia_stschgirq, | 151 | ret = request_irq(sock->stschg_irq, db1000_pcmcia_stschgirq, |
@@ -162,30 +161,23 @@ static int db1x_pcmcia_setup_irqs(struct db1x_pcmcia_sock *sock) | |||
162 | * active one disabled. | 161 | * active one disabled. |
163 | */ | 162 | */ |
164 | if (sock->board_type == BOARD_TYPE_DB1200) { | 163 | if (sock->board_type == BOARD_TYPE_DB1200) { |
165 | local_irq_save(flags); | ||
166 | |||
167 | ret = request_irq(sock->insert_irq, db1200_pcmcia_cdirq, | 164 | ret = request_irq(sock->insert_irq, db1200_pcmcia_cdirq, |
168 | IRQF_DISABLED, "pcmcia_insert", sock); | 165 | IRQF_DISABLED, "pcmcia_insert", sock); |
169 | if (ret) { | 166 | if (ret) |
170 | local_irq_restore(flags); | ||
171 | goto out1; | 167 | goto out1; |
172 | } | ||
173 | 168 | ||
174 | ret = request_irq(sock->eject_irq, db1200_pcmcia_cdirq, | 169 | ret = request_irq(sock->eject_irq, db1200_pcmcia_cdirq, |
175 | IRQF_DISABLED, "pcmcia_eject", sock); | 170 | IRQF_DISABLED, "pcmcia_eject", sock); |
176 | if (ret) { | 171 | if (ret) { |
177 | free_irq(sock->insert_irq, sock); | 172 | free_irq(sock->insert_irq, sock); |
178 | local_irq_restore(flags); | ||
179 | goto out1; | 173 | goto out1; |
180 | } | 174 | } |
181 | 175 | ||
182 | /* disable the currently active one */ | 176 | /* enable the currently silent one */ |
183 | if (db1200_card_inserted(sock)) | 177 | if (db1200_card_inserted(sock)) |
184 | disable_irq_nosync(sock->insert_irq); | 178 | enable_irq(sock->eject_irq); |
185 | else | 179 | else |
186 | disable_irq_nosync(sock->eject_irq); | 180 | enable_irq(sock->insert_irq); |
187 | |||
188 | local_irq_restore(flags); | ||
189 | } else { | 181 | } else { |
190 | /* all other (older) Db1x00 boards use a GPIO to show | 182 | /* all other (older) Db1x00 boards use a GPIO to show |
191 | * card detection status: use both-edge triggers. | 183 | * card detection status: use both-edge triggers. |
diff --git a/drivers/staging/octeon/cvmx-helper-board.c b/drivers/staging/octeon/cvmx-helper-board.c index 3085e38a6f99..00a555b83354 100644 --- a/drivers/staging/octeon/cvmx-helper-board.c +++ b/drivers/staging/octeon/cvmx-helper-board.c | |||
@@ -153,6 +153,14 @@ int cvmx_helper_board_get_mii_address(int ipd_port) | |||
153 | * through switch. | 153 | * through switch. |
154 | */ | 154 | */ |
155 | return -1; | 155 | return -1; |
156 | |||
157 | case CVMX_BOARD_TYPE_CUST_WSX16: | ||
158 | if (ipd_port >= 0 && ipd_port <= 3) | ||
159 | return ipd_port; | ||
160 | else if (ipd_port >= 16 && ipd_port <= 19) | ||
161 | return ipd_port - 16 + 4; | ||
162 | else | ||
163 | return -1; | ||
156 | } | 164 | } |
157 | 165 | ||
158 | /* Some unknown board. Somebody forgot to update this function... */ | 166 | /* Some unknown board. Somebody forgot to update this function... */ |