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... */ |
