cregit-Linux how code gets into the kernel

Release 4.11 drivers/power/supply/power_supply_leds.c

/*
 *  LEDs triggers for power supply class
 *
 *  Copyright © 2007  Anton Vorontsov <cbou@mail.ru>
 *  Copyright © 2004  Szabolcs Gyurko
 *  Copyright © 2003  Ian Molton <spyro@f2s.com>
 *
 *  Modified: 2004, Oct     Szabolcs Gyurko
 *
 *  You may use this code as per GPL version 2
 */

#include <linux/kernel.h>
#include <linux/device.h>
#include <linux/power_supply.h>
#include <linux/slab.h>

#include "power_supply.h"

/* Battery specific LEDs triggers. */


static void power_supply_update_bat_leds(struct power_supply *psy) { union power_supply_propval status; unsigned long delay_on = 0; unsigned long delay_off = 0; if (power_supply_get_property(psy, POWER_SUPPLY_PROP_STATUS, &status)) return; dev_dbg(&psy->dev, "%s %d\n", __func__, status.intval); switch (status.intval) { case POWER_SUPPLY_STATUS_FULL: led_trigger_event(psy->charging_full_trig, LED_FULL); led_trigger_event(psy->charging_trig, LED_OFF); led_trigger_event(psy->full_trig, LED_FULL); led_trigger_event(psy->charging_blink_full_solid_trig, LED_FULL); break; case POWER_SUPPLY_STATUS_CHARGING: led_trigger_event(psy->charging_full_trig, LED_FULL); led_trigger_event(psy->charging_trig, LED_FULL); led_trigger_event(psy->full_trig, LED_OFF); led_trigger_blink(psy->charging_blink_full_solid_trig, &delay_on, &delay_off); break; default: led_trigger_event(psy->charging_full_trig, LED_OFF); led_trigger_event(psy->charging_trig, LED_OFF); led_trigger_event(psy->full_trig, LED_OFF); led_trigger_event(psy->charging_blink_full_solid_trig, LED_OFF); break; } }

Contributors

PersonTokensPropCommitsCommitProp
Anton Vorontsov14075.27%120.00%
Vasily Khoruzhick4323.12%120.00%
Krzysztof Kozlowski21.08%240.00%
Harvey Harrison10.54%120.00%
Total186100.00%5100.00%


static int power_supply_create_bat_triggers(struct power_supply *psy) { psy->charging_full_trig_name = kasprintf(GFP_KERNEL, "%s-charging-or-full", psy->desc->name); if (!psy->charging_full_trig_name) goto charging_full_failed; psy->charging_trig_name = kasprintf(GFP_KERNEL, "%s-charging", psy->desc->name); if (!psy->charging_trig_name) goto charging_failed; psy->full_trig_name = kasprintf(GFP_KERNEL, "%s-full", psy->desc->name); if (!psy->full_trig_name) goto full_failed; psy->charging_blink_full_solid_trig_name = kasprintf(GFP_KERNEL, "%s-charging-blink-full-solid", psy->desc->name); if (!psy->charging_blink_full_solid_trig_name) goto charging_blink_full_solid_failed; led_trigger_register_simple(psy->charging_full_trig_name, &psy->charging_full_trig); led_trigger_register_simple(psy->charging_trig_name, &psy->charging_trig); led_trigger_register_simple(psy->full_trig_name, &psy->full_trig); led_trigger_register_simple(psy->charging_blink_full_solid_trig_name, &psy->charging_blink_full_solid_trig); return 0; charging_blink_full_solid_failed: kfree(psy->full_trig_name); full_failed: kfree(psy->charging_trig_name); charging_failed: kfree(psy->charging_full_trig_name); charging_full_failed: return -ENOMEM; }

Contributors

PersonTokensPropCommitsCommitProp
Anton Vorontsov13064.04%120.00%
Vasily Khoruzhick4622.66%120.00%
Akinobu Mita157.39%120.00%
Krzysztof Kozlowski83.94%120.00%
Viresh Kumar41.97%120.00%
Total203100.00%5100.00%


static void power_supply_remove_bat_triggers(struct power_supply *psy) { led_trigger_unregister_simple(psy->charging_full_trig); led_trigger_unregister_simple(psy->charging_trig); led_trigger_unregister_simple(psy->full_trig); led_trigger_unregister_simple(psy->charging_blink_full_solid_trig); kfree(psy->charging_blink_full_solid_trig_name); kfree(psy->full_trig_name); kfree(psy->charging_trig_name); kfree(psy->charging_full_trig_name); }

Contributors

PersonTokensPropCommitsCommitProp
Anton Vorontsov5379.10%150.00%
Vasily Khoruzhick1420.90%150.00%
Total67100.00%2100.00%

/* Generated power specific LEDs triggers. */
static void power_supply_update_gen_leds(struct power_supply *psy) { union power_supply_propval online; if (power_supply_get_property(psy, POWER_SUPPLY_PROP_ONLINE, &online)) return; dev_dbg(&psy->dev, "%s %d\n", __func__, online.intval); if (online.intval) led_trigger_event(psy->online_trig, LED_FULL); else led_trigger_event(psy->online_trig, LED_OFF); }

Contributors

PersonTokensPropCommitsCommitProp
Anton Vorontsov6695.65%125.00%
Krzysztof Kozlowski22.90%250.00%
Harvey Harrison11.45%125.00%
Total69100.00%4100.00%


static int power_supply_create_gen_triggers(struct power_supply *psy) { psy->online_trig_name = kasprintf(GFP_KERNEL, "%s-online", psy->desc->name); if (!psy->online_trig_name) return -ENOMEM; led_trigger_register_simple(psy->online_trig_name, &psy->online_trig); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Anton Vorontsov4277.78%125.00%
Viresh Kumar59.26%125.00%
Akinobu Mita59.26%125.00%
Krzysztof Kozlowski23.70%125.00%
Total54100.00%4100.00%


static void power_supply_remove_gen_triggers(struct power_supply *psy) { led_trigger_unregister_simple(psy->online_trig); kfree(psy->online_trig_name); }

Contributors

PersonTokensPropCommitsCommitProp
Anton Vorontsov25100.00%1100.00%
Total25100.00%1100.00%

/* Choice what triggers to create&update. */
void power_supply_update_leds(struct power_supply *psy) { if (psy->desc->type == POWER_SUPPLY_TYPE_BATTERY) power_supply_update_bat_leds(psy); else power_supply_update_gen_leds(psy); }

Contributors

PersonTokensPropCommitsCommitProp
Anton Vorontsov2993.55%150.00%
Krzysztof Kozlowski26.45%150.00%
Total31100.00%2100.00%


int power_supply_create_triggers(struct power_supply *psy) { if (psy->desc->type == POWER_SUPPLY_TYPE_BATTERY) return power_supply_create_bat_triggers(psy); return power_supply_create_gen_triggers(psy); }

Contributors

PersonTokensPropCommitsCommitProp
Anton Vorontsov3093.75%150.00%
Krzysztof Kozlowski26.25%150.00%
Total32100.00%2100.00%


void power_supply_remove_triggers(struct power_supply *psy) { if (psy->desc->type == POWER_SUPPLY_TYPE_BATTERY) power_supply_remove_bat_triggers(psy); else power_supply_remove_gen_triggers(psy); }

Contributors

PersonTokensPropCommitsCommitProp
Anton Vorontsov2993.55%150.00%
Krzysztof Kozlowski26.45%150.00%
Total31100.00%2100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
Anton Vorontsov55176.85%110.00%
Vasily Khoruzhick10314.37%110.00%
Akinobu Mita233.21%110.00%
Krzysztof Kozlowski202.79%220.00%
Viresh Kumar91.26%110.00%
Adrian Bunk30.42%110.00%
Paul Gortmaker30.42%110.00%
Tejun Heo30.42%110.00%
Harvey Harrison20.28%110.00%
Total717100.00%10100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.