diff options
author | Daniel Drake <dsd@gentoo.org> | 2006-12-11 20:25:52 -0500 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2007-02-05 16:58:42 -0500 |
commit | ee30276774451d657407855d95d9393ee8bc0bac (patch) | |
tree | ceb02ea0a59acf90ac532c72e7ff294c2736f9a4 /drivers/net/wireless/zd1211rw/zd_chip.h | |
parent | a2bdcc679288307f9237c9611a0cc0c3c06669a9 (diff) |
[PATCH] zd1211rw: Consistency for address space constants
The zd1211rw address space has confused me once too many times. This
patch introduces the following naming notation:
Memory space is split into segments (cr, fw, eeprom) and segments may
contain components (e.g. boot code inside eeprom). These names are
arbitrary and only for the description below:
x_START: Absolute address of segment start
(previously these were named such as CR_BASE_OFFSET, but they weren't
really offsets unless you were considering them as an offset to 0)
x_LEN: Segment length
x_y_LEN: Length of component y of segment x
x_y_OFFSET: Relative address of component y into segment x. The absolute
address for this component is (x_START + x_y_OFFSET)
I also renamed EEPROM registers to EEPROM data. These 'registers' can't
be written to using standard I/O and really represent predefined data
from the vendor.
Signed-off-by: Daniel Drake <dsd@gentoo.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/zd1211rw/zd_chip.h')
-rw-r--r-- | drivers/net/wireless/zd1211rw/zd_chip.h | 119 |
1 files changed, 66 insertions, 53 deletions
diff --git a/drivers/net/wireless/zd1211rw/zd_chip.h b/drivers/net/wireless/zd1211rw/zd_chip.h index a4e3cee9b59d..fa3437d6d742 100644 --- a/drivers/net/wireless/zd1211rw/zd_chip.h +++ b/drivers/net/wireless/zd1211rw/zd_chip.h | |||
@@ -594,49 +594,49 @@ | |||
594 | /* | 594 | /* |
595 | * Upper 16 bit contains the regulatory domain. | 595 | * Upper 16 bit contains the regulatory domain. |
596 | */ | 596 | */ |
597 | #define E2P_SUBID E2P_REG(0x00) | 597 | #define E2P_SUBID E2P_DATA(0x00) |
598 | #define E2P_POD E2P_REG(0x02) | 598 | #define E2P_POD E2P_DATA(0x02) |
599 | #define E2P_MAC_ADDR_P1 E2P_REG(0x04) | 599 | #define E2P_MAC_ADDR_P1 E2P_DATA(0x04) |
600 | #define E2P_MAC_ADDR_P2 E2P_REG(0x06) | 600 | #define E2P_MAC_ADDR_P2 E2P_DATA(0x06) |
601 | #define E2P_PWR_CAL_VALUE1 E2P_REG(0x08) | 601 | #define E2P_PWR_CAL_VALUE1 E2P_DATA(0x08) |
602 | #define E2P_PWR_CAL_VALUE2 E2P_REG(0x0a) | 602 | #define E2P_PWR_CAL_VALUE2 E2P_DATA(0x0a) |
603 | #define E2P_PWR_CAL_VALUE3 E2P_REG(0x0c) | 603 | #define E2P_PWR_CAL_VALUE3 E2P_DATA(0x0c) |
604 | #define E2P_PWR_CAL_VALUE4 E2P_REG(0x0e) | 604 | #define E2P_PWR_CAL_VALUE4 E2P_DATA(0x0e) |
605 | #define E2P_PWR_INT_VALUE1 E2P_REG(0x10) | 605 | #define E2P_PWR_INT_VALUE1 E2P_DATA(0x10) |
606 | #define E2P_PWR_INT_VALUE2 E2P_REG(0x12) | 606 | #define E2P_PWR_INT_VALUE2 E2P_DATA(0x12) |
607 | #define E2P_PWR_INT_VALUE3 E2P_REG(0x14) | 607 | #define E2P_PWR_INT_VALUE3 E2P_DATA(0x14) |
608 | #define E2P_PWR_INT_VALUE4 E2P_REG(0x16) | 608 | #define E2P_PWR_INT_VALUE4 E2P_DATA(0x16) |
609 | 609 | ||
610 | /* Contains a bit for each allowed channel. It gives for Europe (ETSI 0x30) | 610 | /* Contains a bit for each allowed channel. It gives for Europe (ETSI 0x30) |
611 | * also only 11 channels. */ | 611 | * also only 11 channels. */ |
612 | #define E2P_ALLOWED_CHANNEL E2P_REG(0x18) | 612 | #define E2P_ALLOWED_CHANNEL E2P_DATA(0x18) |
613 | 613 | ||
614 | #define E2P_PHY_REG E2P_REG(0x1a) | 614 | #define E2P_PHY_REG E2P_DATA(0x1a) |
615 | #define E2P_DEVICE_VER E2P_REG(0x20) | 615 | #define E2P_DEVICE_VER E2P_DATA(0x20) |
616 | #define E2P_36M_CAL_VALUE1 E2P_REG(0x28) | 616 | #define E2P_36M_CAL_VALUE1 E2P_DATA(0x28) |
617 | #define E2P_36M_CAL_VALUE2 E2P_REG(0x2a) | 617 | #define E2P_36M_CAL_VALUE2 E2P_DATA(0x2a) |
618 | #define E2P_36M_CAL_VALUE3 E2P_REG(0x2c) | 618 | #define E2P_36M_CAL_VALUE3 E2P_DATA(0x2c) |
619 | #define E2P_36M_CAL_VALUE4 E2P_REG(0x2e) | 619 | #define E2P_36M_CAL_VALUE4 E2P_DATA(0x2e) |
620 | #define E2P_11A_INT_VALUE1 E2P_REG(0x30) | 620 | #define E2P_11A_INT_VALUE1 E2P_DATA(0x30) |
621 | #define E2P_11A_INT_VALUE2 E2P_REG(0x32) | 621 | #define E2P_11A_INT_VALUE2 E2P_DATA(0x32) |
622 | #define E2P_11A_INT_VALUE3 E2P_REG(0x34) | 622 | #define E2P_11A_INT_VALUE3 E2P_DATA(0x34) |
623 | #define E2P_11A_INT_VALUE4 E2P_REG(0x36) | 623 | #define E2P_11A_INT_VALUE4 E2P_DATA(0x36) |
624 | #define E2P_48M_CAL_VALUE1 E2P_REG(0x38) | 624 | #define E2P_48M_CAL_VALUE1 E2P_DATA(0x38) |
625 | #define E2P_48M_CAL_VALUE2 E2P_REG(0x3a) | 625 | #define E2P_48M_CAL_VALUE2 E2P_DATA(0x3a) |
626 | #define E2P_48M_CAL_VALUE3 E2P_REG(0x3c) | 626 | #define E2P_48M_CAL_VALUE3 E2P_DATA(0x3c) |
627 | #define E2P_48M_CAL_VALUE4 E2P_REG(0x3e) | 627 | #define E2P_48M_CAL_VALUE4 E2P_DATA(0x3e) |
628 | #define E2P_48M_INT_VALUE1 E2P_REG(0x40) | 628 | #define E2P_48M_INT_VALUE1 E2P_DATA(0x40) |
629 | #define E2P_48M_INT_VALUE2 E2P_REG(0x42) | 629 | #define E2P_48M_INT_VALUE2 E2P_DATA(0x42) |
630 | #define E2P_48M_INT_VALUE3 E2P_REG(0x44) | 630 | #define E2P_48M_INT_VALUE3 E2P_DATA(0x44) |
631 | #define E2P_48M_INT_VALUE4 E2P_REG(0x46) | 631 | #define E2P_48M_INT_VALUE4 E2P_DATA(0x46) |
632 | #define E2P_54M_CAL_VALUE1 E2P_REG(0x48) /* ??? */ | 632 | #define E2P_54M_CAL_VALUE1 E2P_DATA(0x48) /* ??? */ |
633 | #define E2P_54M_CAL_VALUE2 E2P_REG(0x4a) | 633 | #define E2P_54M_CAL_VALUE2 E2P_DATA(0x4a) |
634 | #define E2P_54M_CAL_VALUE3 E2P_REG(0x4c) | 634 | #define E2P_54M_CAL_VALUE3 E2P_DATA(0x4c) |
635 | #define E2P_54M_CAL_VALUE4 E2P_REG(0x4e) | 635 | #define E2P_54M_CAL_VALUE4 E2P_DATA(0x4e) |
636 | #define E2P_54M_INT_VALUE1 E2P_REG(0x50) | 636 | #define E2P_54M_INT_VALUE1 E2P_DATA(0x50) |
637 | #define E2P_54M_INT_VALUE2 E2P_REG(0x52) | 637 | #define E2P_54M_INT_VALUE2 E2P_DATA(0x52) |
638 | #define E2P_54M_INT_VALUE3 E2P_REG(0x54) | 638 | #define E2P_54M_INT_VALUE3 E2P_DATA(0x54) |
639 | #define E2P_54M_INT_VALUE4 E2P_REG(0x56) | 639 | #define E2P_54M_INT_VALUE4 E2P_DATA(0x56) |
640 | 640 | ||
641 | /* All 16 bit values */ | 641 | /* All 16 bit values */ |
642 | #define FW_FIRMWARE_VER FW_REG(0) | 642 | #define FW_FIRMWARE_VER FW_REG(0) |
@@ -653,20 +653,33 @@ | |||
653 | /* 0x2 - link led on? */ | 653 | /* 0x2 - link led on? */ |
654 | 654 | ||
655 | enum { | 655 | enum { |
656 | CR_BASE_OFFSET = 0x9000, | 656 | /* CONTROL REGISTERS */ |
657 | FW_START_OFFSET = 0xee00, | 657 | CR_START = 0x9000, |
658 | FW_BASE_ADDR_OFFSET = FW_START_OFFSET + 0x1d, | 658 | |
659 | EEPROM_START_OFFSET = 0xf800, | 659 | /* FIRMWARE */ |
660 | EEPROM_SIZE = 0x800, /* words */ | 660 | FW_START = 0xee00, |
661 | LOAD_CODE_SIZE = 0xe, /* words */ | 661 | |
662 | LOAD_VECT_SIZE = 0x10000 - 0xfff7, /* words */ | 662 | /* The word at this offset contains the base address of the FW_REG |
663 | EEPROM_REGS_OFFSET = LOAD_CODE_SIZE + LOAD_VECT_SIZE, | 663 | * registers */ |
664 | EEPROM_REGS_SIZE = 0x7e, /* words */ | 664 | FW_REGS_ADDR_OFFSET = 0x1d, |
665 | E2P_BASE_OFFSET = EEPROM_START_OFFSET + | 665 | |
666 | EEPROM_REGS_OFFSET, | ||
667 | }; | ||
668 | 666 | ||
669 | #define FW_REG_TABLE_ADDR USB_ADDR(FW_START_OFFSET + 0x1d) | 667 | /* EEPROM */ |
668 | E2P_START = 0xf800, | ||
669 | E2P_LEN = 0x800, | ||
670 | |||
671 | /* EEPROM layout */ | ||
672 | E2P_LOAD_CODE_LEN = 0xe, /* base 0xf800 */ | ||
673 | E2P_LOAD_VECT_LEN = 0x9, /* base 0xf80e */ | ||
674 | /* E2P_DATA indexes into this */ | ||
675 | E2P_DATA_LEN = 0x7e, /* base 0xf817 */ | ||
676 | E2P_BOOT_CODE_LEN = 0x760, /* base 0xf895 */ | ||
677 | E2P_INTR_VECT_LEN = 0xb, /* base 0xfff5 */ | ||
678 | |||
679 | /* Some precomputed offsets into the EEPROM */ | ||
680 | E2P_DATA_OFFSET = E2P_LOAD_CODE_LEN + E2P_LOAD_VECT_LEN, | ||
681 | E2P_BOOT_CODE_OFFSET = E2P_DATA_OFFSET + E2P_DATA_LEN, | ||
682 | }; | ||
670 | 683 | ||
671 | enum { | 684 | enum { |
672 | /* indices for ofdm_cal_values */ | 685 | /* indices for ofdm_cal_values */ |