Module Name:    src
Committed By:   skrll
Date:           Mon Dec 30 15:36:37 UTC 2019

Modified Files:
        src/sys/arch/arm/broadcom: bcm2835_cprman.c bcm2835var.h
            bcm283x_platform.c

Log Message:
Add emmc2 clock goop from mlelstv@


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/arm/broadcom/bcm2835_cprman.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/arm/broadcom/bcm2835var.h
cvs rdiff -u -r1.28 -r1.29 src/sys/arch/arm/broadcom/bcm283x_platform.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/broadcom/bcm2835_cprman.c
diff -u src/sys/arch/arm/broadcom/bcm2835_cprman.c:1.3 src/sys/arch/arm/broadcom/bcm2835_cprman.c:1.4
--- src/sys/arch/arm/broadcom/bcm2835_cprman.c:1.3	Tue Dec 24 13:40:56 2019
+++ src/sys/arch/arm/broadcom/bcm2835_cprman.c	Mon Dec 30 15:36:37 2019
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_cprman.c,v 1.3 2019/12/24 13:40:56 skrll Exp $ */
+/* $NetBSD: bcm2835_cprman.c,v 1.4 2019/12/30 15:36:37 skrll Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_cprman.c,v 1.3 2019/12/24 13:40:56 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_cprman.c,v 1.4 2019/12/30 15:36:37 skrll Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -56,6 +56,7 @@ enum {
 	CPRMAN_CLOCK_PERIIMAGE = 29,
 	CPRMAN_CLOCK_PWM = 30,
 	CPRMAN_CLOCK_PCM = 31,
+	CPRMAN_CLOCK_EMMC2 = 51,
 	CPRMAN_NCLOCK
 };
 
@@ -133,6 +134,8 @@ cprman_get_rate(void *priv, struct clk *
 		return bcm283x_clk_get_rate_vpu();
 	case CPRMAN_CLOCK_EMMC:
 		return bcm283x_clk_get_rate_emmc();
+	case CPRMAN_CLOCK_EMMC2:
+		return bcm283x_clk_get_rate_emmc2();
 	default:
 		panic("unsupported clock id %d\n", clk->id);
 	}
@@ -179,6 +182,7 @@ cprman_attach(device_t parent, device_t 
 	cprman_add_clock(sc, CPRMAN_CLOCK_UART, "uart");
 	cprman_add_clock(sc, CPRMAN_CLOCK_VPU, "vpu");
 	cprman_add_clock(sc, CPRMAN_CLOCK_EMMC, "emmc");
+	cprman_add_clock(sc, CPRMAN_CLOCK_EMMC2, "emmc2");
 
 	aprint_naive("\n");
 	aprint_normal(": BCM283x Clock Controller\n");

Index: src/sys/arch/arm/broadcom/bcm2835var.h
diff -u src/sys/arch/arm/broadcom/bcm2835var.h:1.4 src/sys/arch/arm/broadcom/bcm2835var.h:1.5
--- src/sys/arch/arm/broadcom/bcm2835var.h:1.4	Sun Apr  1 04:35:03 2018
+++ src/sys/arch/arm/broadcom/bcm2835var.h	Mon Dec 30 15:36:37 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm2835var.h,v 1.4 2018/04/01 04:35:03 ryo Exp $	*/
+/*	$NetBSD: bcm2835var.h,v 1.5 2019/12/30 15:36:37 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2012 The NetBSD Foundation, Inc.
@@ -49,5 +49,6 @@ void bcm2836_cpu_hatch(struct cpu_info *
 u_int bcm283x_clk_get_rate_uart(void);
 u_int bcm283x_clk_get_rate_vpu(void);
 u_int bcm283x_clk_get_rate_emmc(void);
+u_int bcm283x_clk_get_rate_emmc2(void);
 
 #endif	/* _ARM_BROADCOM_BCM2835_VAR_H_ */

Index: src/sys/arch/arm/broadcom/bcm283x_platform.c
diff -u src/sys/arch/arm/broadcom/bcm283x_platform.c:1.28 src/sys/arch/arm/broadcom/bcm283x_platform.c:1.29
--- src/sys/arch/arm/broadcom/bcm283x_platform.c:1.28	Tue Dec 24 14:10:51 2019
+++ src/sys/arch/arm/broadcom/bcm283x_platform.c	Mon Dec 30 15:36:37 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: bcm283x_platform.c,v 1.28 2019/12/24 14:10:51 skrll Exp $	*/
+/*	$NetBSD: bcm283x_platform.c,v 1.29 2019/12/30 15:36:37 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2017 Jared D. McNeill <jmcne...@invisible.ca>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.28 2019/12/24 14:10:51 skrll Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm283x_platform.c,v 1.29 2019/12/30 15:36:37 skrll Exp $");
 
 #include "opt_arm_debug.h"
 #include "opt_bcm283x.h"
@@ -402,6 +402,7 @@ static struct {
 	struct vcprop_tag_clockrate	vbt_emmcclockrate;
 	struct vcprop_tag_clockrate	vbt_armclockrate;
 	struct vcprop_tag_clockrate	vbt_vpuclockrate;
+	struct vcprop_tag_clockrate	vbt_emmc2clockrate;
 	struct vcprop_tag end;
 } vb __cacheline_aligned = {
 	.vb_hdr = {
@@ -488,6 +489,14 @@ static struct {
 		},
 		.id = VCPROP_CLK_CORE
 	},
+	.vbt_emmc2clockrate = {
+		.tag = {
+			.vpt_tag = VCPROPTAG_GET_CLOCKRATE,
+			.vpt_len = VCPROPTAG_LEN(vb.vbt_emmc2clockrate),
+			.vpt_rcode = VCPROPTAG_REQUEST
+		},
+		.id = VCPROP_CLK_EMMC2
+	},
 	.end = {
 		.vpt_tag = VCPROPTAG_NULL
 	}
@@ -639,6 +648,17 @@ bcm283x_clk_get_rate_emmc(void)
 	return 0;
 }
 
+u_int
+bcm283x_clk_get_rate_emmc2(void)
+{
+
+	if (vcprop_tag_success_p(&vb.vbt_emmc2clockrate.tag) &&
+	    vb.vbt_emmc2clockrate.rate > 0) {
+		return vb.vbt_emmc2clockrate.rate;
+	}
+	return 0;
+}
+
 
 
 static void
@@ -758,6 +778,15 @@ bcm283x_bootparams(bus_space_tag_t iot, 
 	if (vcprop_tag_success_p(&vb.vbt_armclockrate.tag))
 		printf("%s: arm clock    %d\n", __func__,
 		    vb.vbt_armclockrate.rate);
+	if (vcprop_tag_success_p(&vb.vbt_vpuclockrate.tag))
+		printf("%s: vpu clock    %d\n", __func__,
+		    vb.vbt_vpuclockrate.rate);
+	if (vcprop_tag_success_p(&vb.vbt_emmcclockrate.tag))
+		printf("%s: emmc clock   %d\n", __func__,
+		    vb.vbt_emmcclockrate.rate);
+	if (vcprop_tag_success_p(&vb.vbt_emmc2clockrate.tag))
+		printf("%s: emmc2 clock  %d\n", __func__,
+		    vb.vbt_emmcclockrate.rate);
 	if (vcprop_tag_success_p(&vb.vbt_fwrev.tag))
 		printf("%s: firmware rev %x\n", __func__,
 		    vb.vbt_fwrev.rev);

Reply via email to