Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 46d22934 authored by Anton Vorontsov's avatar Anton Vorontsov Committed by Kumar Gala
Browse files

powerpc/qe: QE also shuts down on MPC8568



It appears that QE shuts down on all MPC85xx CPUs (i.e. MPC8568 and
MPC8569) and thus needs reset upon resume.

So modify qe_alive_during_sleep() to account that.

Signed-off-by: default avatarAnton Vorontsov <avorontsov@ru.mvista.com>
Signed-off-by: default avatarKumar Gala <galak@kernel.crashing.org>
parent 0c7b87b0
Loading
Loading
Loading
Loading
+22 −1
Original line number Original line Diff line number Diff line
@@ -154,7 +154,28 @@ int qe_get_snum(void);
void qe_put_snum(u8 snum);
void qe_put_snum(u8 snum);
unsigned int qe_get_num_of_risc(void);
unsigned int qe_get_num_of_risc(void);
unsigned int qe_get_num_of_snums(void);
unsigned int qe_get_num_of_snums(void);
int qe_alive_during_sleep(void);

static inline int qe_alive_during_sleep(void)
{
	/*
	 * MPC8568E reference manual says:
	 *
	 * "...power down sequence waits for all I/O interfaces to become idle.
	 *  In some applications this may happen eventually without actively
	 *  shutting down interfaces, but most likely, software will have to
	 *  take steps to shut down the eTSEC, QUICC Engine Block, and PCI
	 *  interfaces before issuing the command (either the write to the core
	 *  MSR[WE] as described above or writing to POWMGTCSR) to put the
	 *  device into sleep state."
	 *
	 * MPC8569E reference manual has a similar paragraph.
	 */
#ifdef CONFIG_PPC_85xx
	return 0;
#else
	return 1;
#endif
}


/* we actually use cpm_muram implementation, define this for convenience */
/* we actually use cpm_muram implementation, define this for convenience */
#define qe_muram_init cpm_muram_init
#define qe_muram_init cpm_muram_init
+0 −13
Original line number Original line Diff line number Diff line
@@ -65,19 +65,6 @@ static unsigned int qe_num_of_snum;


static phys_addr_t qebase = -1;
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)
phys_addr_t get_qe_base(void)
{
{
	struct device_node *qe;
	struct device_node *qe;