Commit fceec41b authored by Arnd Bergmann's avatar Arnd Bergmann

Merge tag 'qcom-drivers-for-4.9' of...

Merge tag 'qcom-drivers-for-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/agross/linux into next/drivers

Pull "Qualcomm ARM Based Driver Updates for v4.9" from Andy Gross:

* Silence smem probe defer messages
* Make scm explicitly non-modular
* Assorted SMD bug fixes and minor changes
* Add PM8018 RTC support

* tag 'qcom-drivers-for-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/agross/linux:
  rtc: rtc-pm8xxx: Add support for pm8018 rtc
  soc: qcom: smd: Reset rx tail rather than tx
  soc: qcom: smd: Represent smd edges as devices
  soc: qcom: smd: Request irqs after parsing properties
  soc: qcom: smd: Simplify multi channel handling
  soc: qcom: smd: Correct compile stub prototypes
  firmware: qcom_scm: make it explicitly non-modular
  soc: qcom: smem: Silence probe defer error
parents e747ea14 23c282d6
...@@ -62,6 +62,7 @@ The below bindings specify the set of valid subnodes. ...@@ -62,6 +62,7 @@ The below bindings specify the set of valid subnodes.
"qcom,pm8058-rtc" "qcom,pm8058-rtc"
"qcom,pm8921-rtc" "qcom,pm8921-rtc"
"qcom,pm8941-rtc" "qcom,pm8941-rtc"
"qcom,pm8018-rtc"
- reg: - reg:
Usage: required Usage: required
......
/* Copyright (c) 2010,2015, The Linux Foundation. All rights reserved. /*
* Qualcomm SCM driver
*
* Copyright (c) 2010,2015, The Linux Foundation. All rights reserved.
* Copyright (C) 2015 Linaro Ltd. * Copyright (C) 2015 Linaro Ltd.
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
...@@ -12,7 +15,7 @@ ...@@ -12,7 +15,7 @@
* *
*/ */
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/module.h> #include <linux/init.h>
#include <linux/cpumask.h> #include <linux/cpumask.h>
#include <linux/export.h> #include <linux/export.h>
#include <linux/dma-mapping.h> #include <linux/dma-mapping.h>
...@@ -376,8 +379,6 @@ static const struct of_device_id qcom_scm_dt_match[] = { ...@@ -376,8 +379,6 @@ static const struct of_device_id qcom_scm_dt_match[] = {
{} {}
}; };
MODULE_DEVICE_TABLE(of, qcom_scm_dt_match);
static struct platform_driver qcom_scm_driver = { static struct platform_driver qcom_scm_driver = {
.driver = { .driver = {
.name = "qcom_scm", .name = "qcom_scm",
...@@ -414,14 +415,4 @@ static int __init qcom_scm_init(void) ...@@ -414,14 +415,4 @@ static int __init qcom_scm_init(void)
return platform_driver_register(&qcom_scm_driver); return platform_driver_register(&qcom_scm_driver);
} }
subsys_initcall(qcom_scm_init); subsys_initcall(qcom_scm_init);
static void __exit qcom_scm_exit(void)
{
platform_driver_unregister(&qcom_scm_driver);
}
module_exit(qcom_scm_exit);
MODULE_DESCRIPTION("Qualcomm SCM driver");
MODULE_LICENSE("GPL v2");
...@@ -428,6 +428,7 @@ static const struct pm8xxx_rtc_regs pm8941_regs = { ...@@ -428,6 +428,7 @@ static const struct pm8xxx_rtc_regs pm8941_regs = {
*/ */
static const struct of_device_id pm8xxx_id_table[] = { static const struct of_device_id pm8xxx_id_table[] = {
{ .compatible = "qcom,pm8921-rtc", .data = &pm8921_regs }, { .compatible = "qcom,pm8921-rtc", .data = &pm8921_regs },
{ .compatible = "qcom,pm8018-rtc", .data = &pm8921_regs },
{ .compatible = "qcom,pm8058-rtc", .data = &pm8058_regs }, { .compatible = "qcom,pm8058-rtc", .data = &pm8058_regs },
{ .compatible = "qcom,pm8941-rtc", .data = &pm8941_regs }, { .compatible = "qcom,pm8941-rtc", .data = &pm8941_regs },
{ }, { },
......
This diff is collapsed.
...@@ -740,7 +740,8 @@ static int qcom_smem_probe(struct platform_device *pdev) ...@@ -740,7 +740,8 @@ static int qcom_smem_probe(struct platform_device *pdev)
hwlock_id = of_hwspin_lock_get_id(pdev->dev.of_node, 0); hwlock_id = of_hwspin_lock_get_id(pdev->dev.of_node, 0);
if (hwlock_id < 0) { if (hwlock_id < 0) {
dev_err(&pdev->dev, "failed to retrieve hwlock\n"); if (hwlock_id != -EPROBE_DEFER)
dev_err(&pdev->dev, "failed to retrieve hwlock\n");
return hwlock_id; return hwlock_id;
} }
......
...@@ -55,11 +55,16 @@ void qcom_smd_driver_unregister(struct qcom_smd_driver *drv); ...@@ -55,11 +55,16 @@ void qcom_smd_driver_unregister(struct qcom_smd_driver *drv);
struct qcom_smd_channel *qcom_smd_open_channel(struct qcom_smd_channel *channel, struct qcom_smd_channel *qcom_smd_open_channel(struct qcom_smd_channel *channel,
const char *name, const char *name,
qcom_smd_cb_t cb); qcom_smd_cb_t cb);
void qcom_smd_close_channel(struct qcom_smd_channel *channel);
void *qcom_smd_get_drvdata(struct qcom_smd_channel *channel); void *qcom_smd_get_drvdata(struct qcom_smd_channel *channel);
void qcom_smd_set_drvdata(struct qcom_smd_channel *channel, void *data); void qcom_smd_set_drvdata(struct qcom_smd_channel *channel, void *data);
int qcom_smd_send(struct qcom_smd_channel *channel, const void *data, int len); int qcom_smd_send(struct qcom_smd_channel *channel, const void *data, int len);
struct qcom_smd_edge *qcom_smd_register_edge(struct device *parent,
struct device_node *node);
int qcom_smd_unregister_edge(struct qcom_smd_edge *edge);
#else #else
static inline int qcom_smd_driver_register(struct qcom_smd_driver *drv) static inline int qcom_smd_driver_register(struct qcom_smd_driver *drv)
...@@ -83,14 +88,20 @@ qcom_smd_open_channel(struct qcom_smd_channel *channel, ...@@ -83,14 +88,20 @@ qcom_smd_open_channel(struct qcom_smd_channel *channel,
return NULL; return NULL;
} }
void *qcom_smd_get_drvdata(struct qcom_smd_channel *channel) static inline void qcom_smd_close_channel(struct qcom_smd_channel *channel)
{
/* This shouldn't be possible */
WARN_ON(1);
}
static inline void *qcom_smd_get_drvdata(struct qcom_smd_channel *channel)
{ {
/* This shouldn't be possible */ /* This shouldn't be possible */
WARN_ON(1); WARN_ON(1);
return NULL; return NULL;
} }
void qcom_smd_set_drvdata(struct qcom_smd_channel *channel, void *data) static inline void qcom_smd_set_drvdata(struct qcom_smd_channel *channel, void *data)
{ {
/* This shouldn't be possible */ /* This shouldn't be possible */
WARN_ON(1); WARN_ON(1);
...@@ -104,6 +115,20 @@ static inline int qcom_smd_send(struct qcom_smd_channel *channel, ...@@ -104,6 +115,20 @@ static inline int qcom_smd_send(struct qcom_smd_channel *channel,
return -ENXIO; return -ENXIO;
} }
static inline struct qcom_smd_edge *
qcom_smd_register_edge(struct device *parent,
struct device_node *node)
{
return ERR_PTR(-ENXIO);
}
static inline int qcom_smd_unregister_edge(struct qcom_smd_edge *edge)
{
/* This shouldn't be possible */
WARN_ON(1);
return -ENXIO;
}
#endif #endif
#define module_qcom_smd_driver(__smd_driver) \ #define module_qcom_smd_driver(__smd_driver) \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment