Tim Schumacher <timschumi@xxxxxx> writes: > Right now, if an error is encountered during the SREV register > read (i.e. an EIO in ath9k_regread()), that error code gets > passed all the way to __ath9k_hw_init(), where it is visible > during the "Chip rev not supported" message. > > ath9k_htc 1-1.4:1.0: ath9k_htc: HTC initialized with 33 credits > ath: phy2: Mac Chip Rev 0x0f.3 is not supported by this driver > ath: phy2: Unable to initialize hardware; initialization status: -95 > ath: phy2: Unable to initialize hardware; initialization status: -95 > ath9k_htc: Failed to initialize the device > > Check for -EIO explicitly in ath9k_hw_read_revisions() and return > a boolean based on the success of the operation. Check for that in > __ath9k_hw_init() and abort with a more debugging-friendly message > if reading the revisions wasn't successful. > > ath9k_htc 1-1.4:1.0: ath9k_htc: HTC initialized with 33 credits > ath: phy2: Failed to read SREV register > ath: phy2: Could not read hardware revision > ath: phy2: Unable to initialize hardware; initialization status: -95 > ath: phy2: Unable to initialize hardware; initialization status: -95 > ath9k_htc: Failed to initialize the device > > This helps when debugging by directly showing the first point of > failure and it could prevent possible errors if a 0x0f.3 revision > is ever supported. > > Signed-off-by: Tim Schumacher <timschumi@xxxxxx> [...] > - val = REG_READ(ah, AR_SREV) & AR_SREV_ID; > + srev = REG_READ(ah, AR_SREV); > + > + if (srev == -EIO) { > + ath_err(ath9k_hw_common(ah), > + "Failed to read SREV register"); > + return false; > + } I really don't like how the error handling is implemented in REG_READ(). If the register has value 0xfffffffb (= -EIO ==-5) won't this interpret that as an error? -- Kalle Valo