summaryrefslogtreecommitdiff
path: root/include/linux/ahci_platform.h
diff options
context:
space:
mode:
authorHans de Goede <hdegoede@redhat.com>2014-02-22 19:53:34 +0400
committerTejun Heo <tj@kernel.org>2014-02-23 00:35:42 +0400
commit23b07d4cb3c0c850055cf968af44019b8da185fb (patch)
tree0af2a4e9dfdaa99a566ca51198369b09704c14b7 /include/linux/ahci_platform.h
parent96a01ba52c60fdd74dd6e8cf06645d06515b1396 (diff)
downloadlinux-23b07d4cb3c0c850055cf968af44019b8da185fb.tar.xz
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/ahci_platform.h')
-rw-r--r--include/linux/ahci_platform.h14
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 @@
struct device;
struct ata_port_info;
struct ahci_host_priv;
+struct platform_device;
+/*
+ * Note ahci_platform_data is deprecated, it is only kept around for use
+ * by the old da850 and spear13xx ahci code.
+ * New drivers should instead declare their own platform_driver struct, and
+ * use ahci_platform* functions in their own probe, suspend and resume methods.
+ */
struct ahci_platform_data {
int (*init)(struct device *dev, void __iomem *addr);
void (*exit)(struct device *dev);
@@ -35,5 +42,12 @@ int ahci_platform_enable_clks(struct ahci_host_priv *hpriv);
void ahci_platform_disable_clks(struct ahci_host_priv *hpriv);
int ahci_platform_enable_resources(struct ahci_host_priv *hpriv);
void ahci_platform_disable_resources(struct ahci_host_priv *hpriv);
+struct ahci_host_priv *ahci_platform_get_resources(
+ struct platform_device *pdev);
+int ahci_platform_init_host(struct platform_device *pdev,
+ struct ahci_host_priv *hpriv,
+ const struct ata_port_info *pi_template,
+ unsigned int force_port_map,
+ unsigned int mask_port_map);
#endif /* _AHCI_PLATFORM_H */