diff options
| author | Hans de Goede <hdegoede@redhat.com> | 2014-02-22 10:53:34 -0500 |
|---|---|---|
| committer | Tejun Heo <tj@kernel.org> | 2014-02-22 15:35:42 -0500 |
| commit | 23b07d4cb3c0c850055cf968af44019b8da185fb (patch) | |
| tree | 0af2a4e9dfdaa99a566ca51198369b09704c14b7 /include/linux | |
| parent | 96a01ba52c60fdd74dd6e8cf06645d06515b1396 (diff) | |
ahci-platform: "Library-ise" ahci_probe functionality
ahci_probe consists of 3 steps:
1) Get resources (get mmio, clks, regulator)
2) Enable resources, handled by ahci_platform_enable_resouces
3) The more or less standard ahci-host controller init sequence
This commit refactors step 1 and 3 into separate functions, so the platform
drivers for AHCI implementations which need a specific order in step 2,
and / or need to do some custom register poking at some time, can re-use
ahci-platform.c code without needing to copy and paste it.
Note that ahci_platform_init_host's prototype takes the 3 non function
members of ahci_platform_data as arguments, the idea is that drivers using
the new exported utility functions will not use ahci_platform_data at all,
and hopefully in the future ahci_platform_data can go away entirely.
tj: Minor comment formatting updates.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/ahci_platform.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/include/linux/ahci_platform.h b/include/linux/ahci_platform.h index b674b01ce9bc..b80c51c20f76 100644 --- a/include/linux/ahci_platform.h +++ b/include/linux/ahci_platform.h | |||
| @@ -20,7 +20,14 @@ | |||
| 20 | struct device; | 20 | struct device; |
| 21 | struct ata_port_info; | 21 | struct ata_port_info; |
| 22 | struct ahci_host_priv; | 22 | struct ahci_host_priv; |
| 23 | struct platform_device; | ||
| 23 | 24 | ||
| 25 | /* | ||
| 26 | * Note ahci_platform_data is deprecated, it is only kept around for use | ||
| 27 | * by the old da850 and spear13xx ahci code. | ||
| 28 | * New drivers should instead declare their own platform_driver struct, and | ||
| 29 | * use ahci_platform* functions in their own probe, suspend and resume methods. | ||
| 30 | */ | ||
| 24 | struct ahci_platform_data { | 31 | struct ahci_platform_data { |
| 25 | int (*init)(struct device *dev, void __iomem *addr); | 32 | int (*init)(struct device *dev, void __iomem *addr); |
| 26 | void (*exit)(struct device *dev); | 33 | void (*exit)(struct device *dev); |
| @@ -35,5 +42,12 @@ int ahci_platform_enable_clks(struct ahci_host_priv *hpriv); | |||
| 35 | void ahci_platform_disable_clks(struct ahci_host_priv *hpriv); | 42 | void ahci_platform_disable_clks(struct ahci_host_priv *hpriv); |
| 36 | int ahci_platform_enable_resources(struct ahci_host_priv *hpriv); | 43 | int ahci_platform_enable_resources(struct ahci_host_priv *hpriv); |
| 37 | void ahci_platform_disable_resources(struct ahci_host_priv *hpriv); | 44 | void ahci_platform_disable_resources(struct ahci_host_priv *hpriv); |
| 45 | struct ahci_host_priv *ahci_platform_get_resources( | ||
| 46 | struct platform_device *pdev); | ||
| 47 | int ahci_platform_init_host(struct platform_device *pdev, | ||
| 48 | struct ahci_host_priv *hpriv, | ||
| 49 | const struct ata_port_info *pi_template, | ||
| 50 | unsigned int force_port_map, | ||
| 51 | unsigned int mask_port_map); | ||
| 38 | 52 | ||
| 39 | #endif /* _AHCI_PLATFORM_H */ | 53 | #endif /* _AHCI_PLATFORM_H */ |
