lkml.org 
[lkml]   [2018]   [Jun]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 10/11] macintosh/via-pmu: Clean up interrupt statistics
    Date
    Replace an open-coded ffs() with the function call.
    Simplify an if-else cascade using a switch statement.
    Correct a typo and an indentation issue.

    Tested-by: Stan Johnson <userm57@yahoo.com>
    Signed-off-by: Finn Thain <fthain@telegraphics.com.au>
    ---
    drivers/macintosh/via-pmu.c | 35 ++++++++++++++++++-----------------
    1 file changed, 18 insertions(+), 17 deletions(-)

    diff --git a/drivers/macintosh/via-pmu.c b/drivers/macintosh/via-pmu.c
    index 3cbccd346997..5c5ebad4e6ae 100644
    --- a/drivers/macintosh/via-pmu.c
    +++ b/drivers/macintosh/via-pmu.c
    @@ -1392,7 +1392,8 @@ pmu_resume(void)
    static void
    pmu_handle_data(unsigned char *data, int len)
    {
    - unsigned char ints, pirq;
    + unsigned char ints;
    + int idx;
    int i = 0;

    asleep = 0;
    @@ -1414,25 +1415,24 @@ pmu_handle_data(unsigned char *data, int len)
    ints &= ~(PMU_INT_ADB_AUTO | PMU_INT_AUTO_SRQ_POLL);

    next:
    -
    if (ints == 0) {
    if (i > pmu_irq_stats[10])
    pmu_irq_stats[10] = i;
    return;
    }
    -
    - for (pirq = 0; pirq < 8; pirq++)
    - if (ints & (1 << pirq))
    - break;
    - pmu_irq_stats[pirq]++;
    i++;
    - ints &= ~(1 << pirq);
    +
    + idx = ffs(ints) - 1;
    + ints &= ~BIT(idx);
    +
    + pmu_irq_stats[idx]++;

    /* Note: for some reason, we get an interrupt with len=1,
    * data[0]==0 after each normal ADB interrupt, at least
    * on the Pismo. Still investigating... --BenH
    */
    - if ((1 << pirq) & PMU_INT_ADB) {
    + switch (BIT(idx)) {
    + case PMU_INT_ADB:
    if ((data[0] & PMU_INT_ADB_AUTO) == 0) {
    struct adb_request *req = req_awaiting_reply;
    if (req == 0) {
    @@ -1470,25 +1470,25 @@ pmu_handle_data(unsigned char *data, int len)
    adb_input(data+1, len-1, 1);
    #endif /* CONFIG_ADB */
    }
    - }
    + break;
    /* Sound/brightness button pressed */
    - else if ((1 << pirq) & PMU_INT_SNDBRT) {
    + case PMU_INT_SNDBRT:
    #ifdef CONFIG_PMAC_BACKLIGHT
    if (len == 3)
    pmac_backlight_set_legacy_brightness_pmu(data[1] >> 4);
    #endif
    - }
    + break;
    /* Tick interrupt */
    - else if ((1 << pirq) & PMU_INT_TICK) {
    - /* Environement or tick interrupt, query batteries */
    + case PMU_INT_TICK:
    + /* Environment or tick interrupt, query batteries */
    if (pmu_battery_count) {
    if ((--query_batt_timer) == 0) {
    query_battery_state();
    query_batt_timer = BATTERY_POLLING_COUNT;
    }
    }
    - }
    - else if ((1 << pirq) & PMU_INT_ENVIRONMENT) {
    + break;
    + case PMU_INT_ENVIRONMENT:
    if (pmu_battery_count)
    query_battery_state();
    pmu_pass_intr(data, len);
    @@ -1498,7 +1498,8 @@ pmu_handle_data(unsigned char *data, int len)
    via_pmu_event(PMU_EVT_POWER, !!(data[1]&8));
    via_pmu_event(PMU_EVT_LID, data[1]&1);
    }
    - } else {
    + break;
    + default:
    pmu_pass_intr(data, len);
    }
    goto next;
    --
    2.16.1
    \
     
     \ /
      Last update: 2018-06-02 05:31    [W:6.135 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site