|
|
@@ -1495,6 +1495,9 @@ int start_topology_update(void)
|
|
|
{
|
|
|
int rc = 0;
|
|
|
|
|
|
+ if (!topology_updates_enabled)
|
|
|
+ return 0;
|
|
|
+
|
|
|
if (firmware_has_feature(FW_FEATURE_PRRN)) {
|
|
|
if (!prrn_enabled) {
|
|
|
prrn_enabled = 1;
|
|
|
@@ -1524,6 +1527,9 @@ int stop_topology_update(void)
|
|
|
{
|
|
|
int rc = 0;
|
|
|
|
|
|
+ if (!topology_updates_enabled)
|
|
|
+ return 0;
|
|
|
+
|
|
|
if (prrn_enabled) {
|
|
|
prrn_enabled = 0;
|
|
|
#ifdef CONFIG_SMP
|
|
|
@@ -1579,11 +1585,13 @@ static ssize_t topology_write(struct file *file, const char __user *buf,
|
|
|
|
|
|
kbuf[read_len] = '\0';
|
|
|
|
|
|
- if (!strncmp(kbuf, "on", 2))
|
|
|
+ if (!strncmp(kbuf, "on", 2)) {
|
|
|
+ topology_updates_enabled = true;
|
|
|
start_topology_update();
|
|
|
- else if (!strncmp(kbuf, "off", 3))
|
|
|
+ } else if (!strncmp(kbuf, "off", 3)) {
|
|
|
stop_topology_update();
|
|
|
- else
|
|
|
+ topology_updates_enabled = false;
|
|
|
+ } else
|
|
|
return -EINVAL;
|
|
|
|
|
|
return count;
|
|
|
@@ -1598,9 +1606,7 @@ static const struct file_operations topology_ops = {
|
|
|
|
|
|
static int topology_update_init(void)
|
|
|
{
|
|
|
- /* Do not poll for changes if disabled at boot */
|
|
|
- if (topology_updates_enabled)
|
|
|
- start_topology_update();
|
|
|
+ start_topology_update();
|
|
|
|
|
|
if (vphn_enabled)
|
|
|
topology_schedule_update();
|