Messages in this thread | | | Subject | Re: [PATCH 2/3] Add rfkill support to compal-laptop | From | Johannes Berg <> | Date | Tue, 18 Aug 2009 23:31:03 +0200 |
| |
Hi everyone,
> > I'm attaching the updated patch (sorry, git send-email seems to still > > not be very graceful with line breaks when the SMTP implementation is > > exchange from what i've seen) > > > +static void compal_rfkill_poll(struct rfkill *rfkill, void *data) > > +{ > > + unsigned long radio = (unsigned long) data; > > + u8 result; > > + bool hw_blocked; > > + bool sw_blocked; > > + > > + ec_read(COMPAL_EC_COMMAND_WIRELESS, &result); > > + > > + hw_blocked = !(result & KILLSWITCH_MASK); > > + sw_blocked = (!hw_blocked && !(result & radio)); > > + > > + rfkill_set_states(rfkill, sw_blocked, hw_blocked); > > +} > > I assume you have good reason for having sw_block depend on hw_block. > I.e. you can't read sw_blocked while hw_blocked is set, right? > > If KILLSWITCH is toggled on and off, will the hardware "forget" any > prior soft-blocks?
That's a bit strange indeed, but I haven't seen the rest of the code.
Does the 'soft block' bit change based on user input, like pressing a button?
If not, you shouldn't poll that bit at all, but just set it based on what rfkill gives you as the return value of set_hw_state().
hth, johannes [unhandled content-type:application/pgp-signature] | |