88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm/*
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm * CDDL HEADER START
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm *
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm * The contents of this file are subject to the terms of the
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm * Common Development and Distribution License (the "License").
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm * You may not use this file except in compliance with the License.
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm *
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm * or http://www.opensolaris.org/os/licensing.
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm * See the License for the specific language governing permissions
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm * and limitations under the License.
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm *
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm * When distributing Covered Code, include this CDDL HEADER in each
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm * If applicable, add the following below this CDDL HEADER, with the
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm * fields enclosed by brackets "[]" replaced with your own identifying
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm * information: Portions Copyright [yyyy] [name of copyright owner]
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm *
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm * CDDL HEADER END
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm */
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm/*
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm * Use is subject to license terms.
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm */
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm#pragma ident "%Z%%M% %I% %E% SMI"
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm/*
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm * Deimos - cryptographic acceleration based upon Broadcom 582x.
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm */
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm#include <sys/types.h>
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm#include <sys/ddi.h>
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm#include <sys/sunddi.h>
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm#include <sys/cmn_err.h>
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm#include <sys/varargs.h>
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm#include <sys/crypto/dca.h>
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm/*
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm * Debugging and messaging.
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm */
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm#if DEBUG
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gmstatic int dca_debug = 0;
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gmvoid
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gmdca_dprintf(dca_t *dca, int level, const char *fmt, ...)
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm{
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm va_list ap;
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm char buf[256];
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm if (dca_debug & level) {
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm va_start(ap, fmt);
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm if (dca == NULL) {
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm (void) sprintf(buf, "%s\n", fmt);
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm } else {
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm (void) sprintf(buf, "%s/%d: %s\n",
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm ddi_driver_name(dca->dca_dip),
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm ddi_get_instance(dca->dca_dip), fmt);
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm }
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm vprintf(buf, ap);
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm va_end(ap);
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm }
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm}
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm#endif
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gmvoid
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gmdca_error(dca_t *dca, const char *fmt, ...)
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm{
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm va_list ap;
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm va_start(ap, fmt);
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm dca_dipverror(dca->dca_dip, fmt, ap);
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm va_end(ap);
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm}
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gmvoid
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gmdca_diperror(dev_info_t *dip, const char *fmt, ...)
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm{
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm va_list ap;
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm va_start(ap, fmt);
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm dca_dipverror(dip, fmt, ap);
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm va_end(ap);
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm}
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gmvoid
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gmdca_dipverror(dev_info_t *dip, const char *fmt, va_list ap)
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm{
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm char buf[256];
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm (void) sprintf(buf, "%s%d: %s", ddi_driver_name(dip),
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm ddi_get_instance(dip), fmt);
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm vcmn_err(CE_WARN, buf, ap);
88f8b78a88cbdc6d8c1af5c3e54bc49d25095c98gm}