powerpc/qe: Implement qe_alive_during_sleep() helper function
authorAnton Vorontsov <avorontsov@ru.mvista.com>
Thu, 27 Aug 2009 07:35:50 +0000 (07:35 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 31 Aug 2009 04:51:33 +0000 (21:51 -0700)
In some CPUs (i.e. MPC8569) QE shuts down completely during sleep,
drivers may want to know that to reinitialize registers and buffer
descriptors.

This patch implements qe_alive_during_sleep() helper function, so far
it just checks if MPC8569-compatible power management controller is
present, which is a sign that QE turns off during sleep.

Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
arch/powerpc/include/asm/qe.h
arch/powerpc/sysdev/qe_lib/qe.c

index 157c5ca581c8208b245c153e62f5804137ceda05..f388f0ab193f469b738ad60233ad8b3efaa55e8b 100644 (file)
@@ -154,6 +154,7 @@ int qe_get_snum(void);
 void qe_put_snum(u8 snum);
 unsigned int qe_get_num_of_risc(void);
 unsigned int qe_get_num_of_snums(void);
+int qe_alive_during_sleep(void);
 
 /* we actually use cpm_muram implementation, define this for convenience */
 #define qe_muram_init cpm_muram_init
index 237e3654f48ca6b1059c7d2017ccd31544b215e2..464271bea6c95852e9640d7c6c573269259d2333 100644 (file)
@@ -65,6 +65,19 @@ static unsigned int qe_num_of_snum;
 
 static phys_addr_t qebase = -1;
 
+int qe_alive_during_sleep(void)
+{
+       static int ret = -1;
+
+       if (ret != -1)
+               return ret;
+
+       ret = !of_find_compatible_node(NULL, NULL, "fsl,mpc8569-pmc");
+
+       return ret;
+}
+EXPORT_SYMBOL(qe_alive_during_sleep);
+
 phys_addr_t get_qe_base(void)
 {
        struct device_node *qe;