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

Commit 7350f419 authored by Mike Rapoport's avatar Mike Rapoport Committed by Nicolas Pitre
Browse files

ARM: orion5x/kirkwood/mv78xx0: fix MPP configuration corner cases



Wrong MPP configuration would cause <cpu>_mpp_conf loop infinitely
because the mpp list iterator would not be incremented.

Signed-off-by: default avatarMike Rapoport <mike@compulab.co.il>
Signed-off-by: default avatarNicolas Pitre <nico@fluxnic.net>
parent 377304ab
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -59,7 +59,7 @@ void __init kirkwood_mpp_conf(unsigned int *mpp_list)
	}
	printk("\n");

	while (*mpp_list) {
	for ( ; *mpp_list; mpp_list++) {
		unsigned int num = MPP_NUM(*mpp_list);
		unsigned int sel = MPP_SEL(*mpp_list);
		int shift, gpio_mode;
@@ -88,8 +88,6 @@ void __init kirkwood_mpp_conf(unsigned int *mpp_list)
		if (sel != 0)
			gpio_mode = 0;
		orion_gpio_set_valid(num, gpio_mode);

		mpp_list++;
	}

	printk(KERN_DEBUG "  final MPP regs:");
+1 −3
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ void __init mv78xx0_mpp_conf(unsigned int *mpp_list)
	}
	printk("\n");

	while (*mpp_list) {
	for ( ; *mpp_list; mpp_list++) {
		unsigned int num = MPP_NUM(*mpp_list);
		unsigned int sel = MPP_SEL(*mpp_list);
		int shift, gpio_mode;
@@ -83,8 +83,6 @@ void __init mv78xx0_mpp_conf(unsigned int *mpp_list)
		if (sel != 0)
			gpio_mode = 0;
		orion_gpio_set_valid(num, gpio_mode);

		mpp_list++;
	}

	printk(KERN_DEBUG "  final MPP regs:");
+1 −3
Original line number Diff line number Diff line
@@ -127,7 +127,7 @@ void __init orion5x_mpp_conf(struct orion5x_mpp_mode *mode)
	/* Initialize gpiolib. */
	orion_gpio_init();

	while (mode->mpp >= 0) {
	for ( ; mode->mpp >= 0; mode++) {
		u32 *reg;
		int num_type;
		int shift;
@@ -160,8 +160,6 @@ void __init orion5x_mpp_conf(struct orion5x_mpp_mode *mode)
			orion_gpio_set_unused(mode->mpp);

		orion_gpio_set_valid(mode->mpp, !!(mode->type == MPP_GPIO));

		mode++;
	}

	writel(mpp_0_7_ctrl, MPP_0_7_CTRL);