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

Commit c10b4f03 authored by Peter Chen's avatar Peter Chen Committed by Greg Kroah-Hartman
Browse files

usb: chipidea: otg: add otg file used to access otgsc



This file is mainly used to access otgsc currently, it may
add otg related things in the future.

Tested-by: default avatarMarek Vasut <marex@denx.de>
Signed-off-by: default avatarPeter Chen <peter.chen@freescale.com>
Signed-off-by: default avatarAlexander Shishkin <alexander.shishkin@linux.intel.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent d66895f9
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@ ccflags-$(CONFIG_USB_CHIPIDEA_DEBUG) := -DDEBUG

obj-$(CONFIG_USB_CHIPIDEA)		+= ci_hdrc.o

ci_hdrc-y				:= core.o
ci_hdrc-y				:= core.o otg.o
ci_hdrc-$(CONFIG_USB_CHIPIDEA_UDC)	+= udc.o
ci_hdrc-$(CONFIG_USB_CHIPIDEA_HOST)	+= host.o
ci_hdrc-$(CONFIG_USB_CHIPIDEA_DEBUG)	+= debug.o
+10 −0
Original line number Diff line number Diff line
@@ -79,11 +79,21 @@
#define OTGSC_ASVIS	      BIT(18)
#define OTGSC_BSVIS	      BIT(19)
#define OTGSC_BSEIS	      BIT(20)
#define OTGSC_1MSIS	      BIT(21)
#define OTGSC_DPIS	      BIT(22)
#define OTGSC_IDIE	      BIT(24)
#define OTGSC_AVVIE	      BIT(25)
#define OTGSC_ASVIE	      BIT(26)
#define OTGSC_BSVIE	      BIT(27)
#define OTGSC_BSEIE	      BIT(28)
#define OTGSC_1MSIE	      BIT(29)
#define OTGSC_DPIE	      BIT(30)
#define OTGSC_INT_EN_BITS	(OTGSC_IDIE | OTGSC_AVVIE | OTGSC_ASVIE \
				| OTGSC_BSVIE | OTGSC_BSEIE | OTGSC_1MSIE \
				| OTGSC_DPIE)
#define OTGSC_INT_STATUS_BITS	(OTGSC_IDIS | OTGSC_AVVIS | OTGSC_ASVIS	\
				| OTGSC_BSVIS | OTGSC_BSEIS | OTGSC_1MSIS \
				| OTGSC_DPIS)

/* USBMODE */
#define USBMODE_CM            (0x03UL <<  0)
+2 −1
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@
#include "bits.h"
#include "host.h"
#include "debug.h"
#include "otg.h"

/* Controller register map */
static uintptr_t ci_regs_nolpm[] = {
@@ -528,7 +529,7 @@ static int ci_hdrc_probe(struct platform_device *pdev)
		goto stop;

	if (ci->is_otg)
		hw_write(ci, OP_OTGSC, OTGSC_IDIE, OTGSC_IDIE);
		ci_hdrc_otg_init(ci);

	ret = dbg_create_files(ci);
	if (!ret)
+35 −0
Original line number Diff line number Diff line
/*
 * otg.c - ChipIdea USB IP core OTG driver
 *
 * Copyright (C) 2013 Freescale Semiconductor, Inc.
 *
 * Author: Peter Chen
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

/*
 * This file mainly handles otgsc register, it may include OTG operation
 * in the future.
 */

#include <linux/usb/otg.h>
#include <linux/usb/gadget.h>
#include <linux/usb/chipidea.h>

#include "ci.h"
#include "bits.h"
#include "otg.h"

/**
 * ci_hdrc_otg_init - initialize otgsc bits
 * ci: the controller
 */
int ci_hdrc_otg_init(struct ci_hdrc *ci)
{
	ci_enable_otg_interrupt(ci, OTGSC_IDIE);

	return 0;
}
+32 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2013 Freescale Semiconductor, Inc.
 *
 * Author: Peter Chen
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#ifndef __DRIVERS_USB_CHIPIDEA_OTG_H
#define __DRIVERS_USB_CHIPIDEA_OTG_H

static inline void ci_clear_otg_interrupt(struct ci_hdrc *ci, u32 bits)
{
	/* Only clear request bits */
	hw_write(ci, OP_OTGSC, OTGSC_INT_STATUS_BITS, bits);
}

static inline void ci_enable_otg_interrupt(struct ci_hdrc *ci, u32 bits)
{
	hw_write(ci, OP_OTGSC, bits, bits);
}

static inline void ci_disable_otg_interrupt(struct ci_hdrc *ci, u32 bits)
{
	hw_write(ci, OP_OTGSC, bits, 0);
}

int ci_hdrc_otg_init(struct ci_hdrc *ci);

#endif /* __DRIVERS_USB_CHIPIDEA_OTG_H */