Index: dev/flash/at45d.c =================================================================== --- dev/flash/at45d.c (revision 240418) +++ dev/flash/at45d.c (working copy) @@ -132,7 +132,9 @@ cmd.tx_cmd = txBuf; cmd.rx_cmd = rxBuf; cmd.rx_cmd_sz = cmd.tx_cmd_sz = 2; + SPIBUS_ACQUIRE_BUS(device_get_parent(dev), dev); err = SPIBUS_TRANSFER(device_get_parent(dev), dev, &cmd); + SPIBUS_RELEASE_BUS(device_get_parent(dev), dev); *status = rxBuf[1]; return (err); } @@ -152,7 +154,9 @@ cmd.tx_cmd = &txBuf; cmd.rx_cmd = &rxBuf; cmd.tx_cmd_sz = cmd.rx_cmd_sz = 5; + SPIBUS_ACQUIRE_BUS(device_get_parent(dev), dev); err = SPIBUS_TRANSFER(device_get_parent(dev), dev, &cmd); + SPIBUS_RELEASE_BUS(device_get_parent(dev), dev); if (err) return (err); memcpy(resp, rxBuf + 1, 4); @@ -365,8 +369,10 @@ txBuf[2] = ((addr >> 8) & 0xff); txBuf[3] = 0; cmd.tx_data_sz = cmd.rx_data_sz = 0; + SPIBUS_ACQUIRE_BUS(pdev, dev); err = SPIBUS_TRANSFER(pdev, dev, &cmd); + SPIBUS_RELEASE_BUS(pdev, dev); if (err == 0) err = at45d_wait_ready(dev, &status); @@ -383,7 +389,9 @@ txBuf[2] = ((addr >> 8) & 0xff); txBuf[3] = (addr & 0xff); cmd.tx_data_sz = cmd.rx_data_sz = len; + SPIBUS_ACQUIRE_BUS(pdev, dev); err = SPIBUS_TRANSFER(pdev, dev, &cmd); + SPIBUS_RELEASE_BUS(pdev, dev); if (err == 0 && bp->bio_cmd != BIO_READ) err = at45d_wait_ready(dev, &status); if (err != 0) { @@ -397,7 +405,9 @@ txBuf[2] = ((addr >> 8) & 0xff); txBuf[3] = 0; cmd.tx_data_sz = cmd.rx_data_sz = 0; + SPIBUS_ACQUIRE_BUS(pdev, dev); err = SPIBUS_TRANSFER(pdev, dev, &cmd); + SPIBUS_RELEASE_BUS(pdev, dev); if (err == 0) err = at45d_wait_ready(dev, &status); if (err != 0 || (status & 0x40) != 0) { Index: dev/flash/mx25l.c =================================================================== --- dev/flash/mx25l.c (revision 240418) +++ dev/flash/mx25l.c (working copy) @@ -123,7 +123,9 @@ cmd.rx_cmd = rxBuf; cmd.rx_cmd_sz = 2; cmd.tx_cmd_sz = 2; + SPIBUS_ACQUIRE_BUS(device_get_parent(dev), dev); err = SPIBUS_TRANSFER(device_get_parent(dev), dev, &cmd); + SPIBUS_RELEASE_BUS(device_get_parent(dev), dev); return (rxBuf[1]); } @@ -157,7 +159,9 @@ */ cmd.tx_cmd_sz = 4; cmd.rx_cmd_sz = 4; + SPIBUS_ACQUIRE_BUS(device_get_parent(dev), dev); err = SPIBUS_TRANSFER(device_get_parent(dev), dev, &cmd); + SPIBUS_RELEASE_BUS(device_get_parent(dev), dev); if (err) return (NULL); @@ -192,7 +196,9 @@ cmd.rx_cmd = rxBuf; cmd.rx_cmd_sz = 1; cmd.tx_cmd_sz = 1; + SPIBUS_ACQUIRE_BUS(device_get_parent(dev), dev); err = SPIBUS_TRANSFER(device_get_parent(dev), dev, &cmd); + SPIBUS_RELEASE_BUS(device_get_parent(dev), dev); } static void @@ -217,7 +223,9 @@ txBuf[1] = ((sector >> 16) & 0xff); txBuf[2] = ((sector >> 8) & 0xff); txBuf[3] = (sector & 0xff); + SPIBUS_ACQUIRE_BUS(device_get_parent(dev), dev); err = SPIBUS_TRANSFER(device_get_parent(dev), dev, &cmd); + SPIBUS_RELEASE_BUS(device_get_parent(dev), dev); } static int @@ -290,7 +298,9 @@ mx25l_wait_for_device_ready(dev); mx25l_set_writable(dev, 1); + SPIBUS_ACQUIRE_BUS(pdev, dev); err = SPIBUS_TRANSFER(pdev, dev, &cmd); + SPIBUS_RELEASE_BUS(pdev, dev); if (err) break; @@ -339,7 +349,9 @@ cmd.rx_data = data; cmd.rx_data_sz = count; + SPIBUS_ACQUIRE_BUS(pdev, dev); err = SPIBUS_TRANSFER(pdev, dev, &cmd); + SPIBUS_RELEASE_BUS(pdev, dev); return (err); } Index: arm/lpc/ssd1289.c =================================================================== --- arm/lpc/ssd1289.c (revision 240418) +++ arm/lpc/ssd1289.c (working copy) @@ -179,6 +179,7 @@ { uint8_t buffer[2]; + SPIBUS_ACQUIRE_BUS(device_get_parent(sc->ss_dev), sc->ss_dev); ssd1289_set_dc(sc, 0); buffer[0] = 0x00; buffer[1] = addr & 0xff; @@ -188,6 +189,7 @@ buffer[0] = (value >> 8) & 0xff; buffer[1] = value & 0xff; ssd1289_spi_send(sc, buffer, 2); + SPIBUS_RELEASE_BUS(device_get_parent(sc->ss_dev), sc->ss_dev); } static device_method_t ssd1289_methods[] = { Index: mips/atheros/pcf2123_rtc.c =================================================================== --- mips/atheros/pcf2123_rtc.c (revision 240418) +++ mips/atheros/pcf2123_rtc.c (working copy) @@ -91,7 +91,9 @@ cmd.tx_cmd = txBuf; cmd.rx_cmd_sz = sizeof(rxBuf); cmd.tx_cmd_sz = sizeof(txBuf); + SPIBUS_ACQUIRE_BUS(device_get_parent(dev), dev); err = SPIBUS_TRANSFER(device_get_parent(dev), dev, &cmd); + SPIBUS_RELEASE_BUS(device_get_parent(dev), dev); DELAY(PCF2123_DELAY); return (0); @@ -120,7 +122,9 @@ cmd.tx_cmd = txTimedate; cmd.rx_cmd_sz = sizeof(rxTimedate); cmd.tx_cmd_sz = sizeof(txTimedate); + SPIBUS_ACQUIRE_BUS(device_get_parent(dev), dev); err = SPIBUS_TRANSFER(device_get_parent(dev), dev, &cmd); + SPIBUS_RELEASE_BUS(device_get_parent(dev), dev); DELAY(PCF2123_DELAY); ct.nsec = 0; @@ -178,7 +182,9 @@ txTimedate[6] = TOBCD(ct.mon); txTimedate[7] = TOBCD(ct.year - YEAR_BASE); + SPIBUS_ACQUIRE_BUS(device_get_parent(dev), dev); err = SPIBUS_TRANSFER(device_get_parent(dev), dev, &cmd); + SPIBUS_RELEASE_BUS(device_get_parent(dev), dev); DELAY(PCF2123_DELAY); return (err);