From f51d7ef59c18ddfd9eb1db28b38c980c1a5fdee0 Mon Sep 17 00:00:00 2001 From: Stefan Richter Date: Sat, 12 Jun 2010 20:35:21 +0200 Subject: [PATCH] --- yaml --- r: 206822 b: refs/heads/master c: b384cf18873da1ed100662aa7373edf5883a1c24 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/firewire/core-transaction.c | 84 ++++------------------- 2 files changed, 16 insertions(+), 70 deletions(-) diff --git a/[refs] b/[refs] index e77afb71440c..bb0149857141 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c8a94ded57e9cc2498d401b2f5c856213a3e19fb +refs/heads/master: b384cf18873da1ed100662aa7373edf5883a1c24 diff --git a/trunk/drivers/firewire/core-transaction.c b/trunk/drivers/firewire/core-transaction.c index 87d69cddb231..b8f6db6a0494 100644 --- a/trunk/drivers/firewire/core-transaction.c +++ b/trunk/drivers/firewire/core-transaction.c @@ -1006,38 +1006,30 @@ static void handle_registers(struct fw_card *card, struct fw_request *request, unsigned long flags; switch (reg) { - case CSR_STATE_CLEAR: - if (tcode == TCODE_READ_QUADLET_REQUEST) - *data = cpu_to_be32(card->driver-> - read_csr_reg(card, CSR_STATE_CLEAR)); - else if (tcode == TCODE_WRITE_QUADLET_REQUEST) - card->driver->write_csr_reg(card, CSR_STATE_CLEAR, - be32_to_cpu(*data)); - else - rcode = RCODE_TYPE_ERROR; - break; - - case CSR_STATE_SET: - if (tcode == TCODE_READ_QUADLET_REQUEST) - *data = cpu_to_be32(card->driver-> - read_csr_reg(card, CSR_STATE_SET)); - else if (tcode == TCODE_WRITE_QUADLET_REQUEST) - card->driver->write_csr_reg(card, CSR_STATE_SET, - be32_to_cpu(*data)); - else - rcode = RCODE_TYPE_ERROR; - break; + case CSR_PRIORITY_BUDGET: + if (!card->priority_budget_implemented) { + rcode = RCODE_ADDRESS_ERROR; + break; + } + /* else fall through */ case CSR_NODE_IDS: /* * per IEEE 1394-2008 8.3.22.3, not IEEE 1394.1-2004 3.2.8 * and 9.6, but interoperable with IEEE 1394.1-2004 bridges */ + /* fall through */ + + case CSR_STATE_CLEAR: + case CSR_STATE_SET: + case CSR_CYCLE_TIME: + case CSR_BUS_TIME: + case CSR_BUSY_TIMEOUT: if (tcode == TCODE_READ_QUADLET_REQUEST) *data = cpu_to_be32(card->driver-> - read_csr_reg(card, CSR_NODE_IDS)); + read_csr_reg(card, reg)); else if (tcode == TCODE_WRITE_QUADLET_REQUEST) - card->driver->write_csr_reg(card, CSR_NODE_IDS, + card->driver->write_csr_reg(card, reg, be32_to_cpu(*data)); else rcode = RCODE_TYPE_ERROR; @@ -1078,52 +1070,6 @@ static void handle_registers(struct fw_card *card, struct fw_request *request, } break; - case CSR_CYCLE_TIME: - if (TCODE_IS_READ_REQUEST(tcode) && length == 4) - *data = cpu_to_be32(card->driver-> - read_csr_reg(card, CSR_CYCLE_TIME)); - else if (tcode == TCODE_WRITE_QUADLET_REQUEST) - card->driver->write_csr_reg(card, CSR_CYCLE_TIME, - be32_to_cpu(*data)); - else - rcode = RCODE_TYPE_ERROR; - break; - - case CSR_BUS_TIME: - if (tcode == TCODE_READ_QUADLET_REQUEST) - *data = cpu_to_be32(card->driver-> - read_csr_reg(card, CSR_BUS_TIME)); - else if (tcode == TCODE_WRITE_QUADLET_REQUEST) - card->driver->write_csr_reg(card, CSR_BUS_TIME, - be32_to_cpu(*data)); - else - rcode = RCODE_TYPE_ERROR; - break; - - case CSR_BUSY_TIMEOUT: - if (tcode == TCODE_READ_QUADLET_REQUEST) - *data = cpu_to_be32(card->driver-> - read_csr_reg(card, CSR_BUSY_TIMEOUT)); - else if (tcode == TCODE_WRITE_QUADLET_REQUEST) - card->driver->write_csr_reg(card, CSR_BUSY_TIMEOUT, - be32_to_cpu(*data)); - else - rcode = RCODE_TYPE_ERROR; - break; - - case CSR_PRIORITY_BUDGET: - if (!card->priority_budget_implemented) - rcode = RCODE_ADDRESS_ERROR; - else if (tcode == TCODE_READ_QUADLET_REQUEST) - *data = cpu_to_be32(card->driver-> - read_csr_reg(card, CSR_PRIORITY_BUDGET)); - else if (tcode == TCODE_WRITE_QUADLET_REQUEST) - card->driver->write_csr_reg(card, CSR_PRIORITY_BUDGET, - be32_to_cpu(*data)); - else - rcode = RCODE_TYPE_ERROR; - break; - case CSR_MAINT_UTILITY: if (tcode == TCODE_READ_QUADLET_REQUEST) *data = card->maint_utility_register;