mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-12-11 22:03:15 +00:00
89 lines
3.2 KiB
Text
89 lines
3.2 KiB
Text
|
The U-Boot Driver Model Project
|
||
|
===============================
|
||
|
POWER analysis
|
||
|
==============
|
||
|
Viktor Krivak <viktor.krivak@gmail.com>
|
||
|
2012-03-09
|
||
|
|
||
|
I) Overview
|
||
|
-----------
|
||
|
|
||
|
1) Actual state
|
||
|
---------------
|
||
|
|
||
|
At this moment power doesn't contain API. There are many methods for
|
||
|
initialization of some board specific functions but only few does what is
|
||
|
expected. Basically only one file contains something meaningful for this
|
||
|
driver.
|
||
|
|
||
|
2) Current implementation
|
||
|
-------------------------
|
||
|
|
||
|
In file twl6030.c are methods twl6030_stop_usb_charging() and
|
||
|
twl6030_start_usb_charging() for start and stop charging from USB. There are
|
||
|
also methods to get information about battery state and initialization of
|
||
|
battery charging. Only these methods are used in converted API.
|
||
|
|
||
|
|
||
|
II) Approach
|
||
|
------------
|
||
|
|
||
|
1) New API
|
||
|
----------
|
||
|
|
||
|
New API implements only functions specific for managing power. All board
|
||
|
specific init methods are moved to other files. Name of methods are
|
||
|
self-explanatory.
|
||
|
|
||
|
struct ops {
|
||
|
void (*start_usb_charging)(struct instance *i);
|
||
|
void (*stop_usb_charging)(struct instance *i);
|
||
|
int (*get_battery_current)(struct instance *i);
|
||
|
int (*get_battery_voltage)(struct instance *i);
|
||
|
void (*init_battery_charging)(struct instance *i);
|
||
|
}
|
||
|
|
||
|
2) Conversions of other methods
|
||
|
-------------------------------
|
||
|
|
||
|
Methods that can't be converted to new API are moved to board file or to
|
||
|
special file for board hacks.
|
||
|
|
||
|
III) Analysis of in-tree drivers
|
||
|
--------------------------------
|
||
|
|
||
|
1) ftpmu010.c
|
||
|
-------------
|
||
|
All methods of this file are moved to another location.
|
||
|
void ftpmu010_32768osc_enable(void): Move to boards hacks
|
||
|
void ftpmu010_mfpsr_select_dev(unsigned int dev): Move to board file
|
||
|
arch/nds32/lib/board.c
|
||
|
void ftpmu010_mfpsr_diselect_dev(unsigned int dev): Dead code
|
||
|
void ftpmu010_dlldis_disable(void): Dead code
|
||
|
void ftpmu010_sdram_clk_disable(unsigned int cr0): Move to board file
|
||
|
arch/nds32/lib/board.c
|
||
|
void ftpmu010_sdramhtc_set(unsigned int val): Move to board file
|
||
|
arch/nds32/lib/board.c
|
||
|
|
||
|
2) twl4030.c
|
||
|
------------
|
||
|
All methods of this file are moved to another location.
|
||
|
void twl4030_power_reset_init(void): Move to board hacks
|
||
|
void twl4030_pmrecv_vsel_cfg(u8 vsel_reg, u8 vsel_val, u8 dev_grp,
|
||
|
u8 dev_grp_sel): Move to board hacks
|
||
|
void twl4030_power_init(void): Move to board hacks
|
||
|
void twl4030_power_mmc_init(void): Move to board hacks
|
||
|
|
||
|
3) twl6030.c
|
||
|
------------
|
||
|
Some methods are converted to new API and rest are moved to another location.
|
||
|
void twl6030_stop_usb_charging(void): Convert to new API
|
||
|
void twl6030_start_usb_charging(void): Convert to new API
|
||
|
int twl6030_get_battery_current(void): Convert to new API
|
||
|
int twl6030_get_battery_voltage(void): Convert to new API
|
||
|
void twl6030_init_battery_charging(void): Convert to new API
|
||
|
void twl6030_power_mmc_init(): Move to board file
|
||
|
drivers/mmc/omap_hsmmc.c
|
||
|
void twl6030_usb_device_settings(): Move to board file
|
||
|
drivers/usb/musb/omap3.c
|